Classes and Objects

    Untuk lebih mengetahui cara pemakaian Java, maka pada materi ini kita akan mempelajari bagaimana caranya untuk menggunakan Classes dan Objects di Java. Aplikasi yang saya gunakan adalah Blue J. Untuk mempelajari classes dan objects tersebut diberikan beberapa case study.

1. Time Class Case Study
    Time class case study ini mempunyai dua class yaitu Time1 dan Time1Test. Class Time1 mewakili waktu hari ini dan Class Time1Test adalah aplikasi class yang main methodnya membuat objek dari ckass Time1 dan memanggil method tersebut.


Time1 Class source code :
public class Time1
{
private int hour;
private int minute;
private int second;
public void setTime(int h, int m, int s)
{
if ( ( h>=0 && h<24 ) && ( m>=0 && m<60 ) &&
( s>= 0 && s<60 ) )
{
hour = h;
minute = m;
second = s;
}
else
throw new IllegalArgumentException(
"hour, minute and/or second was out of range" );
}
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" ));
}
}
view raw gistfile1.txt hosted with ❤ by GitHub

Time1Test Class source code : 

public class Time1Test
{
public static void main( String[] args )
{
Time1 time = new Time1();
System.out.print("The initial universal time is: ");
System.out.println(time.toUniversalString());
System.out.print("The initial standard time is: ");
System.out.println(time.toString());
System.out.println();
time.setTime( 13, 27, 6 );
System.out.print("Universal time after setTime is: ");
System.out.println( time.toUniversalString() );
System.out.print("Standard time after setTime is: " );
System.out.println( time.toString() );
System.out.println();
try
{
time.setTime(99, 99, 99);
}
catch (IllegalArgumentException e )
{
System.out.printf("Exception: %s\n\n", e.getMessage());
}
System.out.println("After attempting invalid settings:");
System.out.print("Universal time: ");
System.out.println(time.toUniversalString());
System.out.print("Standar time: ");
System.out.println(time.toString());
}
}
view raw gistfile1.txt hosted with ❤ by GitHub
    Setelah kedua class tersebut dibuat, maka outputnya adalah :





2. Controlling Access to Members
   Dalam case study ini, anggota kelas private tidak dapat diakses di luar kelas. Ketika program tersebut dijalankan, maka compiler akan menunjukkan bahwa private member tidak bisa diakses. Program ini memerlukan source code dari Time1.


MemberAccessTest Source Code :


public class MemberAccessTest
{
public static void main(String[]args)
{
Time1 time = new Time1();
time.hour = 7;
time.minute = 15;
time.second = 30;
}
}
view raw gistfile1.txt hosted with ❤ by GitHub
    Jika dijalankan maka hal ini yang akan terjadi :






3. Referring to the Current Object's Members with the  'this' Reference

    Setiap objek bisa mengakses reference ke dirinya sendiri dengan menggunakan keyword 'this'. 

ThisTest Source Code :

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);
}
}
view raw gistfile1.txt hosted with ❤ by GitHub
    Hasil yang akan ditampilkan jika source code dijalankan:




4. Time Class Study : Overloaded Constructors 

    Kita dapat mendeklarasikan constructor kita sendiri untuk menentukan bagaimana objek dari suatu kelas harus diinisialisasi. Suatu kelas yang memiliki beberapa overloaded conductor yang memungkinkan objek dari suatu kelas dapat diinisialisasikan secara berbeda. Untuk melakukan overload constructor, sediakan beberapa deklarasi constructor dengan signature yang berbeda. 

Time2 Source Code :

public class Time2
{
private int hour;
private int minute;
private int second;
public Time2()
{
this(0, 0, 0);
}
public Time2(int h)
{
this(h,0,0);
}
public Time2(int h, int m)
{
this(h,m,0);
}
public Time2(int h, int m, int s)
{
setTime(h,m,s);
}
public Time2(Time2 time)
{
this(time.getHour(), time.getMinute(), time.getSecond());
}
public void setTime (int h, int m, int s)
{
setHour(h);
setMinute(m);
setSecond(s);
}
public void setHour(int h)
{
if(h>=0 && h<24)
hour = h;
else
throw new IllegalArgumentException("hour must be 0-23");
}
public void setMinute(int m)
{
if(m>=0 && m<60)
minute = m;
else
throw new IllegalArgumentException("minute must be 0-59");
}
public void setSecond(int s)
{
if(s>= 0 && s<60)
second = ((s>=0 && s<60)? s : 0);
else
throw new IllegalArgumentException("second must be 0-59");
}
public int getHour()
{
return hour;
}
public int getMinute()
{
return minute;
}
public int getSecond()
{
return second;
}
public String toUniversalString()
{
return String.format(
"%02d:%02d:%02d", getHour(), getMinute(), getSecond() );
}
public String toString()
{
return String.format("%d:%02d:%02d %s",
((getHour() == 0 || getHour()==12) ? 12 : getHour () %12),
getMinute(), getSecond(), (getHour()<12 ? "AM" : "PM"));
}
}
view raw gistfile1.txt hosted with ❤ by GitHub
Time2Test Source Code :


public class Time2Test
{
public static void main(String[]args)
{
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
{
Time2 t6 = new Time2(27, 74, 99);
}
catch (IllegalArgumentException e)
{
System.out.printf( "\nException while initializing t6: %s\n", e.getMessage());
}
}
}
view raw gistfile1.txt hosted with ❤ by GitHub
    Jika kedua kelas telah dibuat, output yang akan keluar jika dicompile : 




Comments

Popular Posts