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.]
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 class Bike
                                      {
public Bike()
public Bike()
                                              {
what_to_do_when_creating_an_object
}
what_to_do_when_creating_an_object
}
                       public static void
main(String args[]) 
                      {
Bike obj = new Bike();
}
}
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.
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://www.atwiwit.net/2013/09/perbedaan-superclass-dan-subclass-di.html
(diakses tanggal 5 Oktober 2014)
http://www.duniailkom.com/tutorial-belajar-oop-php-pengertian-static-property-dan-static-method/
(diakses tanggal 5 Oktober 2014)
http://sikurniawan.wordpress.com/category/java/
(diakses tanggal 4 Oktober 2014)
http://iswan7.wordpress.com/2008/03/26/dasar-java-programing/
(diakses tanggal 4 Oktober 2014)
http://yulitanurmalasari.wordpress.com/2010/12/01/belajar-oop/
(diakses tanggal 4 Oktober 2014)
http://can354dra.wordpress.com/2011/05/24/memulai-dengan-java/
(diakses tanggal 4 Oktober 2014)
http://www.shivasoft.in/blog/
(diakses tanggal 4 Oktober 2014)
http://andridimdim.blogspot.com/2013/04/konsep-oop-pada-java.html
(diakses tanggal 5 Oktober 2014)

 
 





 
0 komentar:
Posting Komentar