PBO Tugas 1
oleh : Ichsanul Aulia 05111840007001
A.Time Class Study
jadi untuk pendahuluan, sebelum kita masuk kedalam poinnya, dalam sebuah program ada yang namanya class. disini kita mau membuat class dengan nama time. ada time 1 dan time 2. dan class buat ngetes classnya.- Time1
source code :
/**
* Program Kelas Time1Test (Fig. 8.2)
* Object Time1 yang digunakan dalam aplikasi
*
*@author abdulatif fajar s
*/
public class Time2Test
{
public static void main(String[] args){
// initialize new Time2 object
Time2 t1 = new Time2();
Time2 t2 = new Time2(2);
Time2 t3 = new Time2(21, 34);
Time2 t4 = new Time2(12, 25, 42);
Time2 t5 = new Time2(t4);
System.out.println("Constructed with:");
System.out.println("t1: all arguments defaulted");
System.out.printf(" %s\n", t1.toUniversalString());
System.out.printf(" %s\n", t1.toString());
System.out.println ("t2: hour specified; minute and second defaulted");
System.out.printf(" %s\n", t2.toUniversalString());
System.out.printf(" %s\n", t2.toString());
System.out.println ("t3: hour and minute specified; second defaulted");
System.out.printf(" %s\n", t3.toUniversalString());
System.out.printf(" %s\n", t3.toString());
System.out.println("t4: hour, minute and second specified");
System.out.printf(" %s\n", t4.toUniversalString());
System.out.printf (" %s\n", t4.toString());
System.out.println ("t5: Time2 object t4 specified");
System.out.printf (" %s\n", t5.toUniversalString());
System.out.printf (" %s\n", t5.toString());
//try to set with invalid argument
try {
Time2 t6 = new Time2(27, 75, 99);
} catch (IllegalArgumentException e){
System.out.printf("\nException while initializing t6: %s\n\n", e.getMessage());
}
}
} kemudian kita buat class untuk ngetes Time1
-Time1Test
isi source code nya :
-Time1Test
isi source code nya :
/**
* Program Kelas Time1Test (Fig. 8.2)
* Object Time1 yang digunakan dalam aplikasi
*
*@author abdulatif fajar s
*/
public class Time2Test
{
public static void main(String[] args){
// initialize new Time2 object
Time2 t1 = new Time2();
Time2 t2 = new Time2(2);
Time2 t3 = new Time2(21, 34);
Time2 t4 = new Time2(12, 25, 42);
Time2 t5 = new Time2(t4);
System.out.println("Constructed with:");
System.out.println("t1: all arguments defaulted");
System.out.printf(" %s\n", t1.toUniversalString());
System.out.printf(" %s\n", t1.toString());
System.out.println ("t2: hour specified; minute and second defaulted");
System.out.printf(" %s\n", t2.toUniversalString());
System.out.printf(" %s\n", t2.toString());
System.out.println ("t3: hour and minute specified; second defaulted");
System.out.printf(" %s\n", t3.toUniversalString());
System.out.printf(" %s\n", t3.toString());
System.out.println("t4: hour, minute and second specified");
System.out.printf(" %s\n", t4.toUniversalString());
System.out.printf (" %s\n", t4.toString());
System.out.println ("t5: Time2 object t4 specified");
System.out.printf (" %s\n", t5.toUniversalString());
System.out.printf (" %s\n", t5.toString());
//try to set with invalid argument
try {
Time2 t6 = new Time2(27, 75, 99);
} catch (IllegalArgumentException e){
System.out.printf("\nException while initializing t6: %s\n\n", e.getMessage());
}
}
} Nah, selanjutnya kita coba compile Time1test. maka hasilnya :
B. Controling Acces to Members
disini kita akan membahas akses member, atau bisa juga disebut akses modifier. apa itu. itu bisa dikatakan pemanggilan fungsi dari kelas lagi. tapi ada yang perlu diperhatikan, ada fungsi yang tak bisa diakses oleh fungsi lain. oke kita tes dengan source code berikut :
/**
* Program Kelas MemberAccessTest (Fig. 8.3)
*
*@author abdulatif fajar s
*/
// Private members of class Time1 are not accessible.
public class MemberAccessTest
{
public static void main( String[] args ){
Time1 time = new Time1();
time.hour = 7;
time.minute = 15;
time.second = 30;
}
}
B. Controling Acces to Members
disini kita akan membahas akses member, atau bisa juga disebut akses modifier. apa itu. itu bisa dikatakan pemanggilan fungsi dari kelas lagi. tapi ada yang perlu diperhatikan, ada fungsi yang tak bisa diakses oleh fungsi lain. oke kita tes dengan source code berikut :
/**
* Program Kelas MemberAccessTest (Fig. 8.3)
*
*@author abdulatif fajar s
*/
// Private members of class Time1 are not accessible.
public class MemberAccessTest
{
public static void main( String[] args ){
Time1 time = new Time1();
time.hour = 7;
time.minute = 15;
time.second = 30;
}
} kita mau nyoba memanggil fungsi hour, minute, dan second. lalu kita coba compile :
dan hasilnya, ketiganya tidak bisa dipanggil di class ini, karena pada Time1 ketiganya memiliki akses private yang hanya bisa digunakan diclassnya sendiri. sehingga jika ingin bisa diakses diclass lain, ketinganya harus diubah menjadi berakses "public". atau mungkin bisa juga membuat variable sendiri di class ini.
C. Referring to the Current Object's Members with the "this" Reference setiap class dapat mengakses dirinya sendiri. namun harus menggunakan "this". kita coba source code nya :
/**
* Program Kelas ThisTest (Fig. 8.4)
* Object ThisTest yang digunakan dalam pengetesan reference
*
*@author abdulatif fajar s
*/
public class ThisTest {
public static void main (String[] args) {
SimpleTime time = new SimpleTime(15, 30, 19);
System.out.println(time.buildString());
}
}
class SimpleTime {
private int hour;
private int minute;
private int second;
public SimpleTime(int hour, int minute, int second) {
this.hour = hour;
this.minute = minute;
this.second = second;
}
public String buildString() {
return String.format("%24s: %s\n%24s: %s", "this.toUniversalString()", this.toUniversalString(), "toUniversalString()", toUniversalString());
}
public String toUniversalString() {
return String.format("%02d:%02d:%02d", this.hour, this.minute, this.second);
}
}
kemudian kita test untuk compile maka hasilnya :
D. Time Class Case Study : Overloaded Constructors oke sekarang kita bahas overload pada Pemrogaman berorientasi objek. apa itu overload ?
adalah medeklarasikan sebuah method berulang kali menggukan argumen yang berbeda. Pada contoh ini akan ditunjukkan class dengan overloaded constructors yang membuat object di class tersebut bisa dinisialisasi dengan cara yang berbeda. Untuk melakukan overload constructors, diperlukan beberapa deklarasi constructor dengan signatures yang berbeda.
kita beri nama Time2./**
* Program Kelas Time2 (Fig. 8.5)
* Deklarasi Kelas Time2, dengan overloaded constructor
*
*@author abdulatif fajar s
*/
public class Time2
{
// instance variables - replace the example below with your own
private int hour;
private int minute;
private int second;
// first constructor
public Time2() {
this(0,0,0);
}
/**
* second constructor
* @param h hour
*/
public Time2(int h) {
this(h, 0, 0);
}
/**
* third constructor
* @param h hour
* @param m minute
*/
public Time2(int h, int m) {
this(h, m, 0);
}
/**
* fourth constructor (base, called on this(h,m,s))
* @param h hour
* @param m minute
* @param s second
*/
public Time2(int h, int m, int s) {
setTime(h, m, s);
}
/**
* fifth constructor (base, called on this(h,m,s))
* @param time - a Time2 class object
*/
public Time2(Time2 time) {
this(time.getHour(), time.getMinute(), time.getSecond());
}
/**
* Setter method
* @param h hour
* @param m minute
* @param s second
*/
public void setTime(int h, int m, int s) {
setHour(h);
setMinute(m);
setSecond(s);
}
/**
* Setter method
* @param h hour
*/
public void setHour(int h) {
if (h >= 0 && h < 24){
hour = h;
} else {
throw new IllegalArgumentException("Hour must be 0-24");
}
}
/**
* Setter method
* @param m minute
*/
public void setMinute(int m) {
if (m>= 0 && m < 60){
minute = m;
} else {
throw new IllegalArgumentException("Minute must be 0-59");
}
}
/**
* Setter method
* @param s second
*/
public void setSecond(int s) {
if (s>= 0 && s < 60){
second = s;
} else {
throw new IllegalArgumentException("Second must be 0-59");
}
}
/**
* Getter method
* Return hour
*/
public int getHour(){
return hour;
}
/**
* Getter method
* Return minute
*/
public int getMinute(){
return minute;
}
/**
* Getter method
* Return second
*/
public int getSecond(){
return second;
}
/**
* Return date in universal format (24h)
*/
public String toUniversalString()
{
return String.format("%02d:%02d:%02d", hour, minute, second);
}
public String toString(){
return String.format ("%d:%02d:%02d %s", ((hour == 0 || hour == 12) ? 12 : hour % 12), minute, second, (hour < 12 ? "AM" : "PM"));
}
}
kemudian kita buat source code untuk mengetes Time2.
/**
* Program Kelas Time1Test (Fig. 8.2)
* Object Time1 yang digunakan dalam aplikasi
*
* @author abdulatif fajar s
*/
public class Time2Test
{
public static void main(String[] args){
// initialize new Time2 object
Time2 t1 = new Time2();
Time2 t2 = new Time2(2);
Time2 t3 = new Time2(21, 34);
Time2 t4 = new Time2(12, 25, 42);
Time2 t5 = new Time2(t4);
System.out.println("Constructed with:");
System.out.println("t1: all arguments defaulted");
System.out.printf(" %s\n", t1.toUniversalString());
System.out.printf(" %s\n", t1.toString());
System.out.println ("t2: hour specified; minute and second defaulted");
System.out.printf(" %s\n", t2.toUniversalString());
System.out.printf(" %s\n", t2.toString());
System.out.println ("t3: hour and minute specified; second defaulted");
System.out.printf(" %s\n", t3.toUniversalString());
System.out.printf(" %s\n", t3.toString());
System.out.println("t4: hour, minute and second specified");
System.out.printf(" %s\n", t4.toUniversalString());
System.out.printf (" %s\n", t4.toString());
System.out.println ("t5: Time2 object t4 specified");
System.out.printf (" %s\n", t5.toUniversalString());
System.out.printf (" %s\n", t5.toString());
//try to set with invalid argument
try {
Time2 t6 = new Time2(27, 75, 99);
} catch (IllegalArgumentException e){
System.out.printf("\nException while initializing t6: %s\n\n", e.getMessage());
}
}
}
kemudian kita compile maka hasilnya :
dan itulah hasilnya. mungkin sekian dulu tulisn kali ini. dan ini dalah tugas dari pbo 1. sekian dan terima kasih.
/**
* Program Kelas ThisTest (Fig. 8.4)
* Object ThisTest yang digunakan dalam pengetesan reference
*
*@author abdulatif fajar s
*/
public class ThisTest {
public static void main (String[] args) {
SimpleTime time = new SimpleTime(15, 30, 19);
System.out.println(time.buildString());
}
}
class SimpleTime {
private int hour;
private int minute;
private int second;
public SimpleTime(int hour, int minute, int second) {
this.hour = hour;
this.minute = minute;
this.second = second;
}
public String buildString() {
return String.format("%24s: %s\n%24s: %s", "this.toUniversalString()", this.toUniversalString(), "toUniversalString()", toUniversalString());
}
public String toUniversalString() {
return String.format("%02d:%02d:%02d", this.hour, this.minute, this.second);
}
} adalah medeklarasikan sebuah method berulang kali menggukan argumen yang berbeda. Pada contoh ini akan ditunjukkan class dengan overloaded constructors yang membuat object di class tersebut bisa dinisialisasi dengan cara yang berbeda. Untuk melakukan overload constructors, diperlukan beberapa deklarasi constructor dengan signatures yang berbeda.
kita beri nama Time2.
/**
* Program Kelas Time2 (Fig. 8.5)
* Deklarasi Kelas Time2, dengan overloaded constructor
*
*@author abdulatif fajar s
*/
public class Time2
{
// instance variables - replace the example below with your own
private int hour;
private int minute;
private int second;
// first constructor
public Time2() {
this(0,0,0);
}
/**
* second constructor
* @param h hour
*/
public Time2(int h) {
this(h, 0, 0);
}
/**
* third constructor
* @param h hour
* @param m minute
*/
public Time2(int h, int m) {
this(h, m, 0);
}
/**
* fourth constructor (base, called on this(h,m,s))
* @param h hour
* @param m minute
* @param s second
*/
public Time2(int h, int m, int s) {
setTime(h, m, s);
}
/**
* fifth constructor (base, called on this(h,m,s))
* @param time - a Time2 class object
*/
public Time2(Time2 time) {
this(time.getHour(), time.getMinute(), time.getSecond());
}
/**
* Setter method
* @param h hour
* @param m minute
* @param s second
*/
public void setTime(int h, int m, int s) {
setHour(h);
setMinute(m);
setSecond(s);
}
/**
* Setter method
* @param h hour
*/
public void setHour(int h) {
if (h >= 0 && h < 24){
hour = h;
} else {
throw new IllegalArgumentException("Hour must be 0-24");
}
}
/**
* Setter method
* @param m minute
*/
public void setMinute(int m) {
if (m>= 0 && m < 60){
minute = m;
} else {
throw new IllegalArgumentException("Minute must be 0-59");
}
}
/**
* Setter method
* @param s second
*/
public void setSecond(int s) {
if (s>= 0 && s < 60){
second = s;
} else {
throw new IllegalArgumentException("Second must be 0-59");
}
}
/**
* Getter method
* Return hour
*/
public int getHour(){
return hour;
}
/**
* Getter method
* Return minute
*/
public int getMinute(){
return minute;
}
/**
* Getter method
* Return second
*/
public int getSecond(){
return second;
}
/**
* Return date in universal format (24h)
*/
public String toUniversalString()
{
return String.format("%02d:%02d:%02d", hour, minute, second);
}
public String toString(){
return String.format ("%d:%02d:%02d %s", ((hour == 0 || hour == 12) ? 12 : hour % 12), minute, second, (hour < 12 ? "AM" : "PM"));
}
} /**
* Program Kelas Time1Test (Fig. 8.2)
* Object Time1 yang digunakan dalam aplikasi
*
* @author abdulatif fajar s
*/
public class Time2Test
{
public static void main(String[] args){
// initialize new Time2 object
Time2 t1 = new Time2();
Time2 t2 = new Time2(2);
Time2 t3 = new Time2(21, 34);
Time2 t4 = new Time2(12, 25, 42);
Time2 t5 = new Time2(t4);
System.out.println("Constructed with:");
System.out.println("t1: all arguments defaulted");
System.out.printf(" %s\n", t1.toUniversalString());
System.out.printf(" %s\n", t1.toString());
System.out.println ("t2: hour specified; minute and second defaulted");
System.out.printf(" %s\n", t2.toUniversalString());
System.out.printf(" %s\n", t2.toString());
System.out.println ("t3: hour and minute specified; second defaulted");
System.out.printf(" %s\n", t3.toUniversalString());
System.out.printf(" %s\n", t3.toString());
System.out.println("t4: hour, minute and second specified");
System.out.printf(" %s\n", t4.toUniversalString());
System.out.printf (" %s\n", t4.toString());
System.out.println ("t5: Time2 object t4 specified");
System.out.printf (" %s\n", t5.toUniversalString());
System.out.printf (" %s\n", t5.toString());
//try to set with invalid argument
try {
Time2 t6 = new Time2(27, 75, 99);
} catch (IllegalArgumentException e){
System.out.printf("\nException while initializing t6: %s\n\n", e.getMessage());
}
}
}
Komentar
Posting Komentar