Senin, 27 Februari 2017

//Fig. 8.1: Time1java  
 //Time1 class declaration maintains the time in 24-hour format.  
 public class Time1  
 {  
   int hour;  
   int minute;  
   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/our second was out of range");  
   }  
   public String toUniversalString()  
   {  
     return String.format("%02d:02d:%02d", hour,minute,second);  
   }  
   public String toString()  
   {  
     return String.format("%d:%d02:%d02 %s",  
       ( ( hour == 0 || hour == 12 ) ? 12 : hour % 12 ),  
       minute, second, (hour < 12 ? "AM" : "PM" ) ) ;  
     }  
   }  
// Fig.8.2: Time1Test.java  
 // Time1 object used in a application.  
 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("Standard time: ");  
     System.out.println( time.toString() );  
   }  
 }  
Output : 
// Fig. 8.3: MemberAccsessTest.java  
 // Private members of class Time1 are not accessible.  
 public class MemberAccsessTest  
 {  
   public static void main(String[] args)  
   {  
     Time1 time = new Time1();  
     time.hour = 7;   
     time.minute = 15;   
     time.second = 30;  
   }  
 }  
// Fig. 8.4: ThisTest.java  
 // this used implicity and explicitly to refer   
 to members of an object.  
 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 );  
   }  
 }  
Output : 
// Fig. 8.5: Time2.java  
 //Time2 class delcaration with overloaded constructions.  
 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" ) );  
   }  
 }
// Fig. 8.6: Time2Test.java
 // Overloaded constructors used to initialize Time2 object.  
   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 argument 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() );  
     }  
   }  
 }  
Output : 

Senin, 20 Februari 2017

Pemrograman berorientasi objek

Pemrograman berorientasi objek (Inggrisobject-oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya,
Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik peranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.

Konsep Dasar / Istilah Dalam PBO :
1. Object
Merupakan perwujudan dari class, setiap object akan mempunyai attribute dan method yang dimiliki oleh class-nya, contohnya: amir, ahmad, yani merupakan object dari class manusia. Setiap object dapat berinteraksi dengan object lainnya meskipun berasal dari class yang berbeda.

2. Class
Class didefinisikan sebagai sebuah blueprint (denah), atau prototipe, yang mendefiniskan variabel-variabel dan metode-metode yang umum untuk semua objek dari jumlah jenis tertentu.

3. Attributes
Atribut merupakan variabel yang membedakan objek dengan objek yang lain dalam satu kelas. Misalnya pada kelas mahasiswa terdapat objek mahasiswaA dan mahasiswaB. Perbedaan mahasiswaA dan mahasiswaB adalah Nomor Induk Mahasiswa (NIM), maka NIM adalah atribut.

4. Method
Method adalah fungsi atau prosedur yang dibuat oleh seorang programmer didalam suatu Class. Dengan kata lain, method pada sebuah kelas hampir sama dengan fungsi atau prosedur pada pemrograman prosedural.
Pada sebuah method di dalam sebuah kelas juga memiliki izin akses seperti halnya atribut pada kelas, izin akses itu antara lain private, public dan protected yang memiliki arti sama pada izin akses atribut yang telah dibahas sebelumnya. Sebuah kelas boleh memiliki lebih dari satu method dengan nama yang sama asalkan memiliki parameter masukan yang berbeda sehingga kompiler atau interpreter dapat mengenali method mana yang dipanggil.

5. Abstraction
Abstraction adalah suatu cara untuk melihat suatu object dalam bentuk yang lebih sederhana. Sebagai contoh kita tidak melihat sebuah mobil sebagai ribuan komponen elektronik, sistem mekanik dengan empat buah ban, jok, stir kemudi dan sebagainya. Dengan Abstraction, suatu sistem yang kompleks dapat dipandang sebagai kumpulan subsistem-subsistem yang lebih sederhana, seperti halnya mobil merupakan suatu sistem yang terdiri atas berbagai subsistem, seperti subsistem kemudi, subsistem pengereman dan sebagainya.
6. Instantiate
Instantiation adalah proses pembuatan obyek spesifik yang merupakan anggota atau instan dari kelas. Instance adalah sebuah object yang dibuat oleh sebuah class Instantiation adalah pembuatan instance.

7. Behavior
Behavior adalah tingkah laku yang dapat dilakukan oleh objek, behavior adalah kelakuan atau sifat dari Object seperti mobil tadi bisa melaju, membelok, membunyikan klakson dan lain sebagainya.


Berikut adalah contoh penggunaan konsep class pada PBO/OOP :

Berikut adalah contoh program penghitung luas dan keliling persegi panjang :

Sumber : https://id.wikipedia.org/wiki/Pemrograman_berorientasi_objek