Technology Life

Pemrograman Prosedural Vs Object Oriented Programming

      Pemrograman prosedural merupakan suatu metode menulis program yang didasarkan pada "serangkaian tugas yang diselesaikan dalam bentuk fungsi atau prosedur". Cara pandang pemrograman prosedural yaitu sebuah program adalah suatu urutan instruksi. Programmer harus mem-break down suatu problem/masalah menjadi sub problem yang lebih sederhana. Fokus utama metode prosedural ini adalah fungsi dan prosedur, dimana keduanya digunakan untuk memanipulasi data. Dalam hal ini data bersifat pasif. Algoritma pada pemrograman procedural berisi langkah-langkah atau tahapan kegiatan tentang penyelesaian suatu masalah dimana program dipecah menjadi beberapa modul yang diistilahkan dengan modular (procedural). Program dibedakan antara bagian data dan bagian instruksi. Bagian instruksi akan dilaksanakan secara berurutan oleh pemrosesan, beberapa instruksi menentukan instruksi berikutnya yang akan dieksekusi (percabangan kondisional). Kemudian, data yang disimpan dalam memori dimanipulasi secara berurutan (procedural). Konsep pemrogramannya yaitu flow programming yang dieksekusi mulai baris awal perintah sampai baris akhir. Pada konsep ini, antara data (varibel, konstanta, dll) dan metode (fungsi dan prosedur) akan dipandang secara terpisah.
     Lain halnya dengan pemrograman berorientasi objek (OOP), fungsi dan data bukan menjadi dua hal yang terpisah. Fungsi dan data menjadi satu kesatuan yang disebut sebagai objek aktif. Cara pandang OOP ini yaitu sebuah program merupakan serangkaian objek yang bekerjasama untuk menyelesaikan suatu problem. Obyek (object) yang dimaksud dalam Object Oriented Programming (OOP) yaitu kumpulan elemen-elemen dalam suatu program dan hubungan yang terjadi antar elemen tersebut. OOP merupakan perkembangan dari paradigma pemrograman procedural yang dibuat untuk mengatasi kesulitan yang ada pada pemrograman procedural.
     OOP merupakan paradigma yang berbeda dengan pemrograman prosedural. Pada pemrograman prosedural, data (variabel, konstanta, dll), metode (prosedur dan fungsi) dan hubungan satu dengan lainnya dipandang secara terpisah, sedangkan pada OOP elemen-elemen serta hubungannya dikemas atau dikelompokkan dalam suatu modul yang dinamakan kelas (class). Kelas inilah yang digunakan untuk membangun atau membentuk obyek.
Dalam OOP juga terdapat langkah-langkah dalam penyelesaian masalah, diantarnya yaitu:
  • Langkah pengkombinasian data dan berbagai metode yang berhubungan dengannya. Hasil kombinasinya disebut sebagai obyek (object) yang merupakan tipe data baru.
  • Membentuk obyek baru yang memiliki sifat sama atau mirip dengan obyek yang sudah ada sebelumnya (pewarisan). Obyek turunan juga dapat membetuk obyek turunan lagi dan seterusnya, dimana setiap perubahan pada obyek induk, juga akan mengubah obyek turunannya.
  • Object yang berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan sifat masing-masing obyek.
       Jika diambil sebuah kasus untuk merepresentasikan sebuah objek (misalnya tabung) dalam pemrogaman procedural dan oop, maka dalam pemrograman procedural akan mendeklarasikan beberapa variabel untuk menggambarkan objek (tabung) tersebut. Semua bagian tabung tersebut akan direpresentasikan ke dalam variabel-variabel terpisah seperti: tinggi, jari-jari, warna, konstanta phi, begitu juga untuk fungsi dan atau prosedur. Namun pada OOP, data-data dimaksud yang disebut dengan atribut dan fungsi atau prosedur yang disebut metode (method) dikemas dalam satu tipe baru yang disebut dengan kelas (class). Dari class inilah nantinya diciptakan obyek-obyek.
        Dengan kata lain, metode prosedural berfokus pada cara komputer menangani tugas, sedangkan metode OOP berfokus pada tugas yang kita kembangkan untuk dieksekusi komputer. Kedua jenis metode pemrograman tersebut dapat digunakan untuk menangani masalah yang sama, asalkan bahasa pemrograman yang digunakan mendukung metode-metode tersebut.

Sumber  :
     http://istiaprillani.wordpress.com/2010/03/07/pemrograman-prosedural-vs-oop/
     http://www.adityarizki.net/2012/06/konsep-dasar-pemrograman-berorientasi-objek/

Konsep OOP

Konsep dari object oriented programming (OOP) adalah lebih dari sekedar sebuah konsep pemrograman, Object oriented programming adalah cara berpikir tentang aplikasi yang mempelajari untuk berpikir bahwa aplikasi bukan sekedar prosedur melainkan sebagai object dan real entity.
Object yang dimaksud disini memiliki pengertian suatu modul yang mengkombinasikan antara data dan kode program yang bekerja sama dalam program dengan melewatkan proses satu sama lain. Jadi object oriented programming merupakan cara yang paling efisien untuk menulis program komputer yang sangat mudah untuk di kombinasikan dan untuk dipergunakan kembali. Object oriented programming lebih memfokuskan kepada manipulasi object. Kenapa seorang programmer harus mempelajari object oriented programming bahkan seorang programmer yang tidak pernah bekerja dengan object oriented programing pun harus mempelajarinya juga. Hal ini dikarenakan pada suatu hari nanti semua bahasa pemrograman akan menambahkan kemampuan object oriented programming pada bahasanya.
Berikut empat konsep yang harus dapat dimiliki oleh suatu bentuk pemrograman yang berorentasi object :
1.      Abstraction
Pesawat yang telah dicontohkan masuk dalam kelas kendaraan, kelas kendaraan merupakan contoh abstraction. Abstraction adalah proses yang mewakili versi yang disederhanakan dari objek dunia nyata dalam kelas dan objek. Hal ini berarti dalam pengembangan perangkat lunak seorang programmer akan menggunakan atau menciptakan sejumlah object dimana object tersebut akan ada dan berperilaku pada sistem.
2.      Encapsulation
Encapsuation adalah penyatuan antara proses-proses yang terjadi dan sejumlah data yang dikelola kedalam suatu bentuk kelompok tertentu. Pengelompokan tersebut adalah dengan dibentuknya suatu object secara abstrak (abstraction). Akibatnya, obyek dapat bekerja sama dalam banyak hal dalam sistem. Dalam beberapa situasi, kelas dan objek dapat erat bersama-sama untuk menyediakan fungsionalitas yang lebih kompleks. Dalam contoh mobil, roda, panel, mesin, gearbox, dll dapat dianggap sebagai kelas individu. Untuk membuat mobil sekelasnya, perlu menghubungkan semua benda-benda bersama, mungkin dapat menambahkan fungsionalitas lebih lanjut. Kerja internal masing-masing kelas yang tidak penting karena enkapsulasi sebagai komunikasi antara obyek masih melalui lewat pesan ke antarmuka publik mereka.
Encapsulation mengemas suatu objek sehingga pada saat kita akan memakai objek tersebut kita tidak perlu lagi tahu tentang detail bagaimana suatu action itu terjadi. Contoh dalam hal ini, misal siswa (suatu object) sedang menulis (method). Maka detail dari tentang cara siswa itu menulis (bagaimana otot tangan itu  bekerja untuk menulis, bagaimana sistem saraf pusat  memerintahkan untuk menulis) kita tidak perlu mengerti. Kita hanya melihat si siswa sedang menulis.
Contoh :
class Siswa
{
String nama;
String nim;
void isiData ( String namaku,String nimku )
{
nama = namaku;
nim = nimku;
}
String ambilNama()
{
return nama;
}
String ambilNim()
{
return nim;
}
}
public class Mahasiswa
{
public static void main ( String [] args)
{
Siswa mahasiswa_itn = new Siswa(); //membuat variable instant
mahasiswa_itn.isiData(“Dina Damayanti”,”0412585″);
System.out.println( “Nama : ” + mahasiswa_itn.ambilNama());
System.out.println( “Nim : ” + mahasiswa_itn.ambilNim());
}
}
3.      Inherintance
Inherintence atau pewarisan adalah merupakan konsep dimana suatu object memiliki sejumlah perilaku yang dimiliki oleh object lain dalam suatu hirarki tertentu.
Hal ini memungkinkan satu kelas (sub-class) harus didasarkan atas yang lain (kelas super) dan mewarisi semua fungsi secara otomatis. Kode tambahan kemudian dapat ditambahkan untuk membuat versi yang lebih khusus dari kelas. Dalam contoh kendaraan, sub-kelas untuk mobil atau motor dapat dibuat. Masing-masing masih akan memiliki semua perilaku kendaraan tetapi dapat menambahkan metode khusus dan properti.
Beberapa bahasa pemrograman memungkinkan untuk multiple inheritance mana sub-kelas yang berasal dari dua atau lebih super-kelas. C # tidak mengizinkan ini, tetapi tidak memungkinkan kelas untuk mengimplementasikan beberapa interface. Sebuah antarmuka mendefinisikan kontrak untuk metode dan properti dari kelas yang mengimplementasikan hal itu. Namun, tidak mencakup fungsi yang sebenarnya.
4.      Polymorphism
Polymorphism adalah konsep dimana beberapa object dapat memiliki metode yang sama dengan aksi yang berbeda. Hal ini mengakibatkan adanya kemampuan untuk sebuah objek untuk mengubah perilakunya sesuai dengan bagaimana itu digunakan. Dimana kelas obyek mewarisi dari kelas super atau mengimplementasikan satu atau lebih interface , dapat disebut dengan kelas atau interface nama-nama. Jadi jika kita memiliki metode yang mengharapkan sebuah objek dari tipe 'kendaraan' untuk diteruskan sebagai parameter, kita dapat melewati setiap kendaraan, mobil atau motor objek untuk metode yang meskipun tipe data mungkin secara teknis berbeda.
Dalam Polymorphism suatu object bisa bertindak lain terhadap message/method yang sama. Misalkan kita punya satu class hewan dan diturunkan menjadi dua class hewan berkaki dua dan hewan berkaki empat. Ketika hewan berkaki dua melakukan method makan maka yang dilakukan adalah makan dengan paruhnya, dan ketika hewan berkaki empat juga makan maka dia akan menggunakan mulutnya. Keduanya melakukan aksi yang sama yaitu makan akan tetapi perlakuannya lain.
Contoh :
class Binatang
{
public void info()
{
System.out.println(” Info tentang Hewan : “);
}
}
class Herbivora extends Binatang
{
public void info()
{
System.out.println (“Info pada herbivora: Memakan makanan berupa tumbuh – tumbuhan”);
}
}
class Kelinci extends Herbivora
{
public void info()
{
System.out.println(“Info pada Kelinci: Memakan makanan berupa wortel”);
}
}
public class Polimorfisme
{
public static void main(String[] args)
{
Herbivora herbivora;
Kelinci kelinciku;
Binatang hewan;
herbivora=new Herbivora();
kelinciku=new Kelinci();
hewan=herbivora;
hewan.info();
hewan=kelinciku;
hewan.info();
}
}
5.      Modularitas
Selain konsep yang dijelaskan di atas, pemrograman berorientasi objek juga memungkinkan peningkatan modularitas. Sedangkan arti kata modularitas adalah memecahkan sesuatu yang kompleks menjadi bagian-bagian kecil yang mudah dikendalikan. Kelas atau kelompok kelas terkait dapat dianggap sebagai modul kode yang dapat digunakan kembali dalam proyek perangkat lunak banyak. Hal ini mengurangi kebutuhan untuk membangun kembali fungsi yang sama dan karena itu dapat menurunkan waktu dan biaya pengembangan.
Dalam pemograman berorientasi Objek dikenal Ada beberapa pengertian dasar yang harus kita ketahui yaitu:
a.       Class
 Class merupakan penggambaran dari sebuah object atau benda,sifat objek, dan juga apa yang bisa dilakukan oleh objek tersebut.
·         Sebagai contoh adalah pengambaran yang real dalam kehidupan kita adalah tentang dunia transportasi. Tentunya kita semua  mengetahui bahwa sangatlah banyak jenis alat transportasi yang ada seperti motor, mobil,pesawat terbang,kapal laut, dan lain sebagainya.Kemudian marilah kita anggap berbagai alat transportasi tersebut sebagai  suatu class. Maka motor tentunya mempunyai no polisi,tahun pembuatan,merk dll, demikian juga dengan alat transportasi yang lainnya, oleh karenanya hal ini bisa disebut sebagai properties. Selanjutnya motor itu sendiri bisa berjalan maju, berjalan mundur,belok kiri, belok kanan yang mana kegiatan ini disebut method.
o   contoh :
public class ApaMotormu {
public static void main(String[] args){
Motor punyaku=new Motor();
punyaku.motorku();
}
}
b.      Object
Object  adalah merupakan suatu bentuk dari class. Kalau kita mengikuti analogi di atas, maka object dari class Hewan adalah Burung, Kambing, Ayam, Kuda.. Mereka adalah contoh dari class Hewan. Semua dari mereka adalah Hewan  yang mempunyai nama, kaki, Jenis makanan dst. Dan bisa berlari, bersuara, berkembang biak dll.
o   contoh :
public class Peliharaanmu{
public static void main(String[] args){
Hewan punyaku=new Hewan();
punyaku.hewanku();
}
}
c.       Method 
Method adalah merupakan suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method didefinisikan pada class akan tetapi dipanggi lmelalui object.
Contoh : pada object mangga : terdapat method ambilRasa , kupasKulit dll.
Metode menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya.
d.      Behavior
Behavior adalah tingkah laku yang dapat dilakukan oleh objek, behavior merupakan kelakuan atau sifat dari Object seperti mobil tadi bisa melaju, membelok, membunyikan klakson dan lain sebagainya.
e.       Contruktor 
Contruktor merupakan suatu method yang akan memberikan nilai awal pada saat suatu objek dibuat. Pada saat program dijalankan, constructor akan langsung memberikan nilai awal pada saat perintah new, membuat suatu objek
Pada saat kita bekerja dengan constructor, hal mendasar yang perlu diperhatikan, yaitu :
1.    Nama Constructor sama dengan nama Class.
2.    Tidak ada return type yang diberikan kedalam Constructor Signature.
3.    Tidak ada return stetement, didalam tubuh constructor. 
f.       Constructor Overloading
Overloading adalah suatu cara membuat lebih dari constructor pada suatu class. Supaya pengaksesan constructor tersebut lancar, maka sebagai pembedanya adalah tipe parameter dan atau jumlah parameternya.
Sumber :
http://lehaqueenzy.wordpress.com/about/. Pengertian OOP. Diakses 4 September 2013.
http://id.wikipedia.org/w/index.php?title=Pemrograman_berorientasi_objek&oldid=6620271.  Pemrograman Berorientasi Objek. Diakses 4 September 2013..
Carr,Richard . 2010. Konsep Pemrograman Berorientasi Objek pada C#. Terjemah http://www.blackwasp.co.uk/ObjectOrientedConcepts.aspx. Diakses 4 September 2013.

         Object-Oriented Programming  (OOP)   adalah   sebuah   pendekatan untuk   pengembangan   suatu   software   dimana   dalam   struktur   software tersebut   didasarkan   kepada   interaksi   object   dalam   penyelesaian   suatu  proses/tugas. Interaksi   tersebut   mengambil   form   dari   pesan-pesan   dan  mengirimkannya   kembali   antar   object   tersebut.   Object   akan   merespon pesan   tersebut   menjadi   sebuah   tindakan   /action   atau   metode.   Jika   kita  mencoba melihat bagaimana tugas disekitar kita diselesaikan, kita akan  mengetahui bahwa kita berinteraksi dalam sebuah object-oriented world.  
     
      Object-oriented programs terdiri dari objects yang berinteraksi satu  sama lainnya untuk menyelesaikan sebuah tugas. Seperti dunia nyata, users  dari software programs dilibatkan dari logika proses untuk menyelesaikan  tugas. Contoh, ketika kamu mencetak sebuah halaman diword processor,  kamu   berarti   melakukan   inisialisasi   tindakan   dengan   mengklik   tombol  printer.   Kemudian   kamu   hanya   menunggu   respon   apakah   job   tersebut  sukses  atau  gagal,   sedangkan   proses  terjadi   internal   tanpa   kita  ketahui.  Tentunya   setelah   kamu   menekan   tombol   printer,   maka   secara   simultan  object   tombol   tersebut   berinteraksi   dengan   object   printer   untuk  menyelesaikan job tersebut. 
      Konsep OOP dimulai pertengahan 1960-an dengan sebuah bahasa  program  SIMULA  kemudian   dilanjutkan   di   era   70-an   dengan  SMALLTALK.   Meskipun   developer   software   tidak   secara   intensif  mengembangkan OOP, tetapi metodologi object-oriented tetap digunakan.  Pada pertengahan 80-an, bahasa OOP seperti C++ dan Eifle menjadi  popular diantara programmer computer. Popularitas OOP berlanjut pada  tahun   90-an,   banyak   pengembang   software   menggunakan   konsep   OOP  seperti Java dll. Di tahun 2002, versi terakhir dari Visual Studio, Microsoft  memperkenalkan bahasa OOP baru yaitu C# (dibaca C-sharp) serta upgrade  Visual Basic, dan ini merupakan sebuah bahasa OOP sesungguhnya.


Sumber :

http://aribahwiwinimtinan.blogspot.com/2013/05/object-oriented-programming-oop-di-c.html