MAKALAH KONSEP DASAR OBJECT-ORIENTED PROGRAMMING (OOP).

BAB I
PENDAHULUAN
A.   Latar Belakang
Saat  ini  konsep object-oriented  programming (OOP) sudah  semakin  berkembang.  Hampir  setiap  perguruan tinggi di  dunia  mengajarkan  konsep OOP  pada  mahasiswanya.  Sejarah perkembangan OOP dimulai pada tahun 1966 saat Ole Johan Dhal dan Kristen Nygaard dari universitas Olslo, norwegia menerbitkan sebuah jurnal kertas kerja dengan judul "SIMULA An Algol Based Language". OOP merupakan  suatu  pendekatan  pemrograman  yang  menggunakan  object  dan class. Dalam  OOP,  setiap  bagian  dari  program  adalah object.  Sebuah  object mewakili  suatu  bagian  program  yang  akan  diselesaikan. Program  dalam  OOP  membungkus  (encapsulate)  data  dan  fungsi (atau prosedur) dalam suatu obyek yang umumnya diimplementasikan sebagai suatu kelas  (class). 
Istilah-istilah yang akan sering dijumpai dalam OOP adalah Class, Object, Property, dan Method. Membuat aplikasi dengan menggunakan konsep OOP bisa diibaratkan dalam dunia  nyata  dengan  membuat  atau  memproduksi  mobil.  Yang mana  sebelum membuat mobil, diperlukan adanya desain atau sketsa tampilan mobil, inilah yang disebut  dengan Class. Sketsa  tersebut  menggambarkan  tentang  warna,  ukuran, jumlah  roda  dari  mobil,  inilah  yang  disebut  dengan Property.  Sketsa  tersebut  juga menjelaskan tentang apa yang nantinya bisa dilakukan oleh mobil seperti berjalan dengan  roda,  mengerem,  membunyikan  klakson  dsb..,  apa  yang  bisa  dilakukan  oleh  mobil  inilah  yang  disebut  dengan Method.  Kemudian,  sketsa  tersebut dikirimkan ke pabrik untuk dibuatkan bentuk fisiknya yaitu mobil, mobil – mobil hasil produksi inilah yang disebut dengan Object.
    Salah  satu  keuntungan  program  didefinisikan  dengan  konsep  OOP  adalah adanya  pengkapsulan  (encapsulation)  program  dalam  class  dan  object,  dimana programmer  yang  menggunakan  class  tidak  perlu  mengetahui  isi  dan  jalannya class secara detail, hanya perlu tahu bagaimana cara menggunakannya.  Sama  halnya  dengan  sebuah  mobil  misalnya.  Seorang  pemilik  mobil  tentunya tidak  perlu  mengetahui  bagian-bagian  mobil  secara  menyeluruh.  Dia  tidak  perlu mengetahui  bagaimana  mesin  mobil  melakukan  pembakaran  dan  bagaimana mesin mobil bisa menggerakkan roda, dsb. Dia hanya perlu tahu bagaimana cara menjalankan mobil, bagaimana menghentikan mobil, dan fungsi mobil lainnya.
      OOP bukanlah  sekedar cara penulisan sintaks program yang berbeda, namun lebih  dari  itu,  OOP  merupakan  cara  pandang  dalam  menganalisa  sistem  dan permasalahan  pemrograman.  OOP menyediakan model dimana program merupakan kumpulan obyek yang berinteraksi satu  sama  lain.  Klasifikasi  obyek,  pewarisan,  dan  message  passing  merupakan  prinsip-prinsip  dasar  dalam  OOP.  Bahasa  yang  mendukung  OOP antara  lain  Smalltalk,  C++, Java, dan C#.
      Java merupakan bahasa pemrograman turunan bahasa C yang sudah   menggunakan paradigma OOP yang memiliki symbol “write once run anywhere” karena Java dapat berjalan di berbagai platform sistem operasi seperti windows , Solaris dan Linux, maka dari itu seorang mahasiswa maupun developer java dituntut wajib untuk menyelami konsep OOP dengan sangat dalam. Sebab banyak kasus dimana seorang developer java yang sudah berpengalaman bertahun-tahun tapi konsep OOPnya sangat lemah, sehingga kode java malah mirip C atau Pascal dimana banyak method static dan tidak ada design pattern yang diimplementasikan sama sekali. Atau programmer java yang awalnya adalah programmer visual basic (VB), menulis kode sama persis seperti ia menulis kode di VB, yaitu dengan meletakkan semua code program dalam satu blok action suatu tombol. Oleh karenanya dalam tulisan kali ini akan dibahas mengenai konsep dasar OOP yang dibutuhkan  untuk penguasaan bahasa Java yang berparadigma OOP itu sendiri.

B. Rumusan Masalah
           Berdasarkan latar belakang diatas, maka rumusan masalah dalam makalah ini adalah bagaimana konsep dasar object-oriented  programming (OOP).

C.Tujuan Penulisan
             Mengetahui konsep dasar object-oriented  programming (OOP).


BAB II
PEMBAHASAN

A.    Konsep Dasar Object Oriented Programming (OOP)
Untuk dapat menguasai pemrograman Java, harus mengerti dengan baik konsep  pemrograman  berorientasi  objek,  karena  Java  merupakan  bahasa pemrograman berorientasi objek. Pada bagian ini akan dibahas konsep-konsep penting  dalam  pemrograman  berorientasi  objek, sehingga  diharapkan akan lebih mudah dalam mempelajari bahasa Java.  Beberapa konsep OOP dasar, antara lain Encapsulation (Class and Object), Inheritance (Penurunan sifat), Polymorphisme, Access Modify, Constructor, Destructor, Static Properties, super class serta sub class.
1.     Encapsulation (Enkapsulasi)
           Enkapsulasi adalah suatu cara untuk menyembunyikan informasi detail dari suatu class. Dua hal yang mendasar dalam enkapsulasi yakni : Information hiding , Interface to access data.            Anggota class dapat diakses baik berupa atribut maupun method secara langsung dengan menggunakan objek yang dibuat. Hal ini dikarenakan akses kontrol yang diberikan kepada atribut maupun method yang ada di dalam class tersebut adalah ‘public’. Informasi dapat disembunyikan dari suatu class sehingga anggota class tersebut tidak dapat diakses dari luar, caranya adalah hanya dengan memberikan akses kontrol ‘private’ ketika mendeklarasikan atribut atau method. Proses ini disebut dengan information hiding.
           Jika telah dilakukan information hiding terhadap suatu atribut pada suatu class, lalu bagaimana cara melakukan perubahan terhadap atribut yang disembunyikan tersebut, caranya adalah dengan membuat suatu interface berupa method untuk menginisialisasi atau merubah nilai dari suatu atribut tersebut yang dinamakan dengan interface to access data.
     

Source Code Sample :
public class Siswa
{
            public String nama;
public String nrp;
public void Info()
{
System.out.println(“Saya adalah”);
System.out.println(“Nama ” + nama);
System.out.println(“Nrp ” + nrp);
}
}
                public class IsiData
                {
public static void main(String[] args)
 {
Siswa IT = new Siswa();
IT.nama = “Mirna”;
IT.nrp = “0320110013″;
IT.Info();
}
}

Source Code Sample :
                               /*
               Disimpan dalam file “manusia.java”
               */
                  class manusia
           {
                  public String nama;
                  public manusia(String n)
               {
                  this.nama = n;
               }
             public String tampilkanNama()
             {
              return nama;
             }
             public void makan()
             {
             System.out.println("Nyamyam... nyam...");
             }
             public void kerja()
             {
              System.out.println("Kerjaerjaaa...");
             }
             private void bunuhDiri()
             {
              System.out.println("Dor...bruk...");
             }
          }
               /*
               Disimpan dalam file “andi.java”
               */
             class andi
         {
            public static void main(String arg[])
           {
              manusia andi= new manusia("Andi");
              System.out.println("Nama= "+ andi.tampilkanNama());
              andi.makan();
           }
         }

2.       Inheritance
         Inheritance merupakan pewarisan atribut dan method pada sebuah class yang diperoleh dari class yang telah terdefinisi tersebut. Setiap subclass akan mewarisi state (variabel-variabel) dan behaviour (method-method) dari superclass-nya. Subclass kemudian dapat menambahkan state dan behaviour baru yang spesifik dan dapat pula memodifikasi (override) state dan behaviour yang diturunkan oleh superclass-nya.
Subclass atau kelas turunan menyediakan state/behaviour yang spesifik yang membedakannya dengan superclass atau kelas induk , hal ini akan memungkinkan programmer Java untuk menggunakan ulang source code dari superclass yang telah ada. Programmer Java dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class, untuk mendefinisikan class dengan behaviour dan state secara umum.
Ada dua keyword utama dalam inheritance, Super dan Extends. Extends harus kita tambahkan pada definisi class yang menjadi subclass. Sedangkan Super digunakan untuk memanggil konstruktor dari superclass atau menjadi variabel yang mengacu pada superclass.
Istilah dalam inheritance yang perlu diperhatikan : 
a.       Extends 
Keyword  ini  harus  kita  tambahkan  pada  definisi  class  yang menjadi subclass.
b.      Superclass 
Superclass  digunakan  untuk  menunjukkan  hirarki  class  yang  berarti class dasar dari subclass/class anak.
c.       Subclass
Subclass  adalah  class  anak  atau  turunan  secara  hirarki  dari superclass. 
d.      Super
Keyword ini digunakan untuk memanggil konstruktor dari superclass atau menjadi variabel yang mengacu pada superclass.
e.       Metode Overriding
Pendefinisian ulang method yang sama pada subclass.

Source Code Sample :

               public class TipeRumah 
               {
                public static void main ( String[]args ) 
                {
               rumahindah C = new rumahindah();
               C.info();
                }
               }
               class Rumah
                {
               private String a = " Rumahmewah ";
                public void info() {
 //System.out.println (" Dipanggil pada  =  "+this);
                System.out.println (" ");
                System.out.println (" Rumah = "+a);
                }
               }
               class rumahindah extends Rumah 
               {
               private String b    =  " tombol alarm ";
               public void info(){
               System.out.println (" ");
                super.info();namun dengan parameter yang berbeda
               System.out.println (" rumahindah  = "+b);
                }
               }
3. Polymorphisme (Polimorfisme)
 
Polimorfisme atau perubahan bentuk merupakan kemampuan dari reference untuk mengubah sifat menurut object apa yang dijadikan acuan. Dengan kata lain, kita bisa menggunakan variabel dalam program untuk mengaplikasikan objek untuk memanggil method yang berbeda. Keuntungan dari polimorfisme menyediakan multiobject dari subclasses yang berbeda untuk diperlakukan sebagai object dari superclass tunggal, secara otomatis menunjuk method yang tepat untuk menggunakannya ke particular object berdasar subclass yang termasuk di dalamnya.
Polimorfisme tak lengkap jika tanpa overloading. Overloading adalah suatu keadaan yakni beberapa method memiliki nama yang sama tetapi memiliki fungsionalitas yang berbeda. Ciri-ciri overloading yaitu nama method harus sama, sedangkan parameter harus berbeda. Overloading memungkinkan polimerfisme pada kelas super dan sub kelasnya. Constructor yang terdiri dari dua atau lebih disebut overloading constructor yang termasuk ciri polimorfisme.
Source Code Sample :

               public class StudentInfo
        {
                public static void main(String[] args)
               {
               StudentGrad myStudent = new StudentGrad();
               myStudent.Write(92, 1,"Candra","Dwi Putro", 2013,"Trunojoyo University of Madura");
                myStudent.Display();
                }
        }
               class Student
        {
   public void Write(int ID, int Grad, String Fname, String Lname) 
        {
         m_ID = ID;
         m_Graduation = Grad;
         m_First = Fname;
         m_Last = Lname;
        }
           public void Display(){
           System.out.println("Student" + m_ID);
      System.out.println("Student : "+m_First + " " + m_Last);
      System.out.println("Graduated m_Graduation);
        }
        private int m_ID, m_Graduation;
        private String m_First;
        private String m_Last;
        }
        class StudentGrad extends Student
         {
    public void Write(int ID, int Grad, String Fname, String Lname, int yrGrad, String unSch) 
        {
         super.Write(ID, Grad, Fname, Lname);
         m_UndergradSchool = unSch;
         m_Grad = Grad;
         YearGraduated = yrGrad;
        }
       public void Display()
      {
      super.Display();
      System.out.println("Graduated: "+ m_UndergradSchool);
      System.out.println("Graduation : "+ YearGraduated);
      }
      private Integer YearGraduated,m_Grad;
      private String m_UndergradSchool;
      private String m_Major;
    }

4.     Access Modify
             Pada Java jika diinginkan suatu data untuk bisa di akses oleh object lain atau tidak bisa di akses oleh object luar lainnya digunakan Access Modify. Access Modify lebih singkatnya, larangan suatu data bisa diakses ataupun tidak bisa diakses. Contohnya saja jika suatu data hanya dapat diubah isinya oleh method tertentu saja, dan method lainnya tidak bisa karena adanya pembatasan akses pada data tersebut. Java mempunyai 4 macam Access Modify, yaitu default, public, private, protected yang fungsinya berlainan.
a.      Default
       Tipe akses ini hanya dalam satu class itu sendiri yang dapat mengaksesnya tergantung dari blok kodenya.











public class Hello
{

    public static void main(String args[])
  {

    // access modifer default

   int nilai;

  }

}


Source Code Sample :


b.      Public
Tipe ini mengijinkan seluruh class dari luar atau dari dalam package bisa mengaksesnya.
Source Code Sample :


public cla

}

c.       Protected
     Tipe ini di gunakan untuk pewarisan dalam java, jadi klo suatu super class mempunyai sebuah member, ini dapat diakses oleh subclassnya.











public class SuperClass{

public static void main(String args[]){

// access modifer protected

protected int nilai;

}

}
public class SubClass{

public static void main(String args[]){

// merubah nilai yang ada di superclass

public void hitung(){

nilai=10;

}

}

}

SourceCodeSample:










d.      Private
Tipe ini hanya dapat diakses dimana class tersebut di buat.
public class Hello{

public static void main(String args[]){

// access modifer private

private int nilai;

}

}
5. Constructor and Destructor
a.       Constructor
            Dalam konsep OOP, constructor adalah suatu method yang digunakan untuk membuat suatu object dari suatu class. Dalam Java, constructor dideklarasikan sama dengan nama class yang bersangkutan. Constructor diakses dengan menggunakan keyword new.]
Source Code Sample :
                                              public class Bike
                                      {
                                              public Bike()
                                              {
                                              what_to_do_when_creating_an_object
                                                }
                       public static void main(String args[])
                      {
                       Bike obj = new Bike();
                       }
               }
b.      Destructor
            Dalam konsep OOP, destructor adalah suatu method yang digunakan untuk melepaskan semua resource yang dialokasikan object semasa hidupnya.
Dalam Java, destructor tidak mempunyai peranan yang berarti karena Java memiliki fasilitas Garbage Collector, dimana alokasi memori akan secara otomatis dibebaskan apabila sudah tidak digunakan lagi.
Source Code Sample :
class Thing {
 


    public static int number_of_things = 0;
    public String what;


    public Thing (String what) {

            this.what = what;
            number_of_things++;

            }


    protected void finalize ()  {
            number_of_things--;

            }
    }


public class TestDestructor {

    public static void main(String[] args)
    {

        Thing obj = new Thing("Test App");


    }
}

6.      Static Properties
              Seluruh property dan method hanya bisa diakses dari objek, maka static property dan static method adalah pengecualiannya. Static property dan static method adalah property (variabel) dan method (function) yang melekat kepada class, bukan kepada objek. Konsep static property memang ‘agak keluar’ dari konsep objek sebagai tempat melakukan proses, karena sebenarnya class hanya merupakan ‘blueprint’ saja. Untuk membuat static property dan static method, kita menambahkan keyword ‘static’ setelah penulisan akses level property atau method, seperti contoh berikut:
Source Code Sample :
 // static property
     public static $harga_beli;

  // static method
      public static function beli_laptop()
    {
   //...isi method
        }


             Dalam contoh diatas, saya menggunakan hak akses public, tetapi kita juga bisa menggunakan hak akses lain seperti private dan protected untuk static property dan static method. Karena static property dan static method adalah milik class, maka kita tidak perlu membuat objek untuk mengaksesnya, tapi langsung menyebutkan nama class dan menggunakan operator ‘::’, berikut adalah contoh pengaksesan static property dan static method dari class laptop:
Source Code Sample :

echo laptop::$harga_beli;
echo laptop::beli_laptop();

7.      Super Class and Sub Class
  Dalam terminologi java, kelas induk yang diturunkan disebut dengan superclass. Sedangkan kelas baru hasil turunan disebut subclass. Pada proses penurunan kelas, kelas turunan akan mewarisi sifat-sifat yang terdapat pada kelas induknya. Selanjutnya, kelas turunan tersebut dapat memiliki sifat spesifik yang sebelumnya tidak dimiliki oleh kelas induk. 
Source Code Sample :
class SuperClass {
public void jenis_tumbuhan() {
System.out.println(“Jenis tumbuhan yang berkembangbiak secara vegetatif : “);
System.out.println(“1. Umbi Lapis”);
System.out.println(“2. Tunas”);
System.out.println(“3. Rizoma”);
System.out.println(“4. Geragih”);
System.out.println(“”);
}
public static void main(String[] args) {
SuperClass sc = new SuperClass();
sc. jenis_tumbuhan ();
}
Source Code Sample :
class SubClass extends SuperClass {
public void Panggil() {
super. jenis_tumbuhan();
System.out.println(“Beberapa contoh tumbuhan :  “);
}
public void UmbiLapis() {
System.out.println(“Umbi Lapis : bawang Bombay dan bawang putih”);
}
public void Tunas() {
System.out.println(“Tunas : pisang dan bambu”);
}
public void Rizoma() {
System.out.println(“Rizoma : jahe, lengkuas, kunyit, dan kencur”);
}
public void Geragih() {
System.out.println(“Geragih : stroberi”);
}
public static void main(String[]args) {
SubClass scs = new SubClass();
scs.Panggil();
scs.UmbiLapis();
scs.Tunas();
scs.Rizoma();
scs.Geragih();
  }
}


  
BAB III
PENUTUP
A.    Kesimpulan
           Object Oriented Programming (OOP) merupakan  suatu  pendekatan  pemrograman  yang  menggunakan  object  dan class. Dalam  OOP,  setiap  bagian  dari  program  adalah object.  Sebuah  object mewakili  suatu  bagian  program  yang  akan  diselesaikan. Program  dalam  OOP  membungkus  (encapsulate)  data  dan  fungsi (atau prosedur) dalam suatu obyek yang umumnya diimplementasikan sebagai suatu kelas  (class). Dari penjelasan konsep OOP di atas, maka dapat ditarik kesimpulan sebagai berikut :
1.      OOP sebagai suatu santapan wajib bagi mahasiswa maupun developer sebagai dasar untuk penguasaan bahasa pemrograman yang berorientasi objek, seperti Java.
2.      Salah  satu  keuntungan  program  didefinisikan  dengan  konsep  OOP  adalah adanya  pengkapsulan  (encapsulation)  program  dalam  class  dan  object,  dimana programmer  yang  menggunakan  class  tidak  perlu  mengetahui  isi  dan  jalannya class secara detail, hanya perlu tahu bagaimana cara menggunakannya. 
3.      OOP bukanlah  sekedar cara penulisan sintaks program yang berbeda, namun lebih  dari  itu,  OOP  merupakan  cara  pandang  dalam  menganalisa  sistem  dan permasalahan  pemrograman.  OOP menyediakan model dimana program merupakan kumpulan obyek yang berinteraksi satu  sama  lain. 
B.     Saran
           Disarankan kepada mahasiswa maupun developer sebelum menyelami lebih jauh bahasa pemrograman berorientasi objek seperti Java, untuk menyelami konsep OOP terlebih dahulu. Sebab banyak kasus dimana seorang developer java yang sudah berpengalaman bertahun-tahun tapi konsep OOPnya sangat lemah, sehingga kode java malah mirip C atau Pascal dimana banyak method static dan tidak ada design pattern yang diimplementasikan sama sekali. Atau programmer java yang awalnya adalah programmer visual basic (VB), menulis kode sama persis seperti ia menulis kode di VB, yaitu dengan meletakkan semua code program dalam satu blok action suatu tombol.
  

DAFTAR PUSTAKA
http://rizkarunia.wordpress.com/2009/10/22/11/ (diakses tanggal 5 Oktober 2014)
http://sikurniawan.wordpress.com/category/java/ (diakses tanggal 4 Oktober 2014)
http://www.shivasoft.in/blog/ (diakses tanggal 4 Oktober 2014)


  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 komentar:

Posting Komentar