Selasa, 01 Juli 2014

Penjelasan Pemrograman Berorientasi Objek beserta Contohnya


Pemrograman berorientasi objek (Inggris: object-oriented programmingdisingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelasatau 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 piranti 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
  • Kelas : kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh 'class of dog' adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object. Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.
  • Objek : membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer; objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek.
  • Abstraksi : Kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari "pelaku" abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.
  • Enkapsulasi : Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi izin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
  • Polimorfisme melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan "gerak cepat", dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsionalyang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.
  • Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bag administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.
Bahasa Pemrograman
Bahasa pemrograman yang mendukung OOP antara lain:
  1. Visual Foxpro
  2. Java adalah bahasa pemrograman yang dapat dijalankan di berbagai komputer termasuk telepon genggam. Bahasa ini awalnya dibuat oleh James Gosling saat masih bergabung di Sun Microsystems saat ini merupakan bagian dari Oracle dan dirilis tahun 1995. Bahasa ini banyak mengadopsi sintaksis yang terdapat pada C dan C++ namun dengan sintaksis model objek yang lebih sederhana serta dukungan rutin-rutin aras bawah yang minimal. Aplikasi-aplikasi berbasis java umumnya dikompilasi ke dalam p-code (bytecode) dan dapat dijalankan pada berbagai Mesin Virtual Java (JVM). Java merupakan bahasa pemrograman yang bersifat umum/non-spesifik (general purpose), dan secara khusus didisain untuk memanfaatkan dependensi implementasi seminimal mungkin. Karena fungsionalitasnya yang memungkinkan aplikasi java mampu berjalan di beberapa platform sistem operasi yang berbeda, java dikenal pula dengan slogannya, "Tulis sekali, jalankan di mana pun". Saat ini java merupakan bahasa pemrograman yang paling populer digunakan, dan secara luas dimanfaatkan dalam pengembangan berbagai jenis perangkat lunak aplikasi ataupun aplikasi berbasis web.
  3. C++ adalah bahasa pemrograman komputer yang di buat oleh (Bjarne Stroustrup) merupakan perkembangan dari bahasa C dikembangkan di Bell Labs (Dennis Ritchie) pada awal tahun 1970-an, Bahasa itu diturunkan dari bahasa sebelumnya, yaitu BCL, Pada awalnya, bahasa tersebut dirancang sebagai bahasa pemrograman yang dijalankan pada sistem Unix, Pada perkembangannya, versi ANSI (American National Standart Institute) Bahasa pemrograman C menjadi versi dominan, Meskipun versi tersebut sekarang jarang dipakai dalam pengembangan sistem dan jaringan maupun untuk sistem embedded, Bjarne Stroustrup pada Bel labs pertama kali mengembangkan C++ pada awal 1980-an, Untuk mendukung fitur-fitur pada C++, dibangun efisiensi dan sistem support untuk pemrograman tingkat rendah (low level coding). Pada C++ ditambahkan konsep-konsep baru seperti class dengan sifat-sifatnya seperti inheritance dan overloading. Salah satu perbedaan yang paling mendasar dengan bahasa C adalah dukungan terhadap konsep pemrograman berorientasi objek (Object Oriented Programming). Perbedaan Antara Bahasa pemrograman C dan C++ meskipun bahasa-bahasa tersebut menggunakan sintaks yang sama tetapi mereka memiliki perbedaan, C merupakan bahasa pemrograman prosedural, dimana penyelesaian suatu masalah dilakukan dengan membagi-bagi masalah tersebut kedalam su-submasalah yang lebih kecil, Selain itu, C++ merupakan bahasa pemrograman yang memiliki sifat Pemrograman berorientasi objek, Untuk menyelesaikan masalah, C++ melakukan langkah pertama dengan menjelaskan class-class yang merupakan anak class yang dibuat sebelumnya sebagai abstraksi dari object-object fisik, Class tersebut berisi keadaan object, anggota-anggotanya dan kemampuan dari objectnya, Setelah beberapa Class dibuat kemudian masalah dipecahkan dengan Class.
  4. Pascal (bahasa pemrograman) adalah bahasa pemrograman yang pertama kali di buat oleh Profesor Niklaus Wirth, seorang anggota International Federation of Information Processing (IFIP) pada tahun 1971. Dengan mengambil nama dari matematikawan Perancis, Blaise Pascal, yang pertama kali menciptakan mesin penghitung, Profesor Niklaus Wirth membuat bahasa Pascal ini sebagai alat bantu untuk mengajarkan konsep pemrograman komputer kepada mahasiswanya. Selain itu, Profesor Niklaus Wirth membuat Pascal juga untuk melengkapi kekurangan-kekurangan bahasa pemrograman yang ada pada saat itu.
  5. SIMULA
  6. Smalltalk adalah bahasa pemrograman berorientasi objek yang dikembangkan oleh Xerox PARC.
  7. Ruby
  8. Python adalah bahasa pemrograman interpretatif multiguna dengan filosofi perancangan yang berfokus pada tingkat keterbacaan kode. Python diklaim sebagai bahasa yang menggabungkan kapabilitas, kemampuan, dengan sintaksis kode yang sangat jelas, dan dilengkapi dengan fungsionalitas pustaka standar yang besar serta komprehensif. Python mendukung multi paradigma pemrograman, utamanya; namun tidak dibatasi; pada pemrograman berorientasi objek, pemrograman imperatif, dan pemrograman fungsional. Salah satu fitur yang tersedia pada python adalah sebagai bahasa pemrograman dinamis yang dilengkapi dengan manajemen memori otomatis. Seperti halnya pada bahasa pemrograman dinamis lainnya, python umumnya digunakan sebagai bahasa skrip meski pada praktiknya penggunaan bahasa ini lebih luas mencakup konteks pemanfaatan yang umumnya tidak dilakukan dengan menggunakan bahasa skrip. Python dapat digunakan untuk berbagai keperluan pengembangan perangkat lunak dan dapat berjalan di berbagai platform sistem operasi.
  9. PHP adalah bahasa skrip yang dapat ditanamkan atau disisipkan ke dalam HTML. PHP banyak dipakai untuk memrogram situs web dinamis. PHP dapat digunakan untuk membangun sebuah CMS.
  10. C#
  11. Delphi adalah sebuah Lingkungan pengembangan terpadu (IDE) untuk mengembangkan aplikasi konsol, desktop, web, ataupun perangkat mobile. Produk ini pada awalnya dikembangkan oleh CodeGear sebagai divisi pengembangan perangkat lunak milik Embarcadero, divisi tersebut sebelumnya adalah milik Borland. Bahasa Delphi, atau dikenal pula sebagai object pascal(pascal dengan ekstensi pemrograman berorientasi objek (PBO/OOP)) pada mulanya ditujukan hanya untuk Microsoft Windows, namun saat ini telah mampu digunakan untuk mengembangkan aplikasi untuk Mac OS X, iOS, Microsoft .NET framework (lihat di bawah). Pada tanggal 8 Februari 2006, Borland mengumumkan akan melepas seluruh jajaran produk pengembangan aplikasi komputernya termasuk di antaranya Delphi, untuk itulah Borland membentuk perusahaan baru dengan nama CodeGear sehingga terpisah dari Borland. Saat ini Delphi menjadi bagian dari jajaran IDE milik Embarcadero Technologies setelah Embarcadero Technologies mengakuisisi CodeGear. Hal ini disebabkan karena kerugian yang terus menerus selama 2006 rugi bersih sebesar $53.1 juta, 2007 rugi bersih $61 juta. Sehingga pada tahun 2008 saat CodeGear menderita rugi bersih $22.3 maka CodeGear dijual ke Embarcadero seharga $23 juta untuk menutupi rugi bersih ini.
  12. Eiffel
  13. Perl adalah bahasa pemrograman untuk segala keperluan, dikembangkan pertama kali oleh Larry Wall di mesin Unix. Perl dirilis pertama kali pada tanggal 18 Desember 1987 ditandai dengan keluarnya Perl 1. Pada versi-versi selanjutnya, Perl tersedia pula untuk berbagai sistem operasi varian Unix (SunOS, Linux, BSD, HP-UX), juga tersedia untuk sistem operasi seperti DOS, Windows, PowerPC, BeOS, VMS, EBCDIC, dan PocketPC. Dukungan terhadap pemrograman berbasis obyek (object oriented programming/OOP) ditambahkan pada Perl 5, yang pertama kali dirilis pada tanggal 31 Juli 1993. Proyek pengembangan Perl 6 dimulai pada tahun 2000, dan masih berlangsung hingga kini tanpa tanggal yang jelas kapan mau dirilis. Ini dikatakan sendiri oleh Larry Wall dalam satu pidatonya yang dikenal dengan seri The State of the Onion. Dua di antara karakteristik utama Perl adalah penanganan teks dan berbagai jalan pintas untuk menyelesaiakn persoalan-persoalan umum. Tidak heran jika Perl sangat populer digunakan dalam program-program CGI (Common Gateway Interface) dan berbagai protokol Internet lainnya. Seperti diketahui, TCP/IP sebagai basis bagi semua protokol Internet yang dikenal sekarang ini menggunakan format teks dalam komunikasi data. Seperti juga bahasa populer lainnya, Perl menerima banyak kritikan. Meski banyak di antaranya hanya berupa mitos, atau berlebih-lebihan, tapi terdapat juga sejumlah kritikan yang valid. Salah satunya adalah, sintaksnya susah dibaca, karena banyak menggunakan simbol-simbol yang bukan huruf dan angka.
  14. Adobe Flash AS 3.0


Contoh definisi class dan objekkasus : class Cat
• Class dan Objek merupakan paradigma dasar dari OOP (Object Oriented Programming)
• Class : suatu frame yang merupakan definisi yang memuat data dan metod pengolah data
• Objek : Bentuk konkrit dari class yang dengannya data dan metod dapat direalisasikan
• Contoh class : Cat
• Contoh data : warna, umur , harga
definisi data : menggunakan sintak : tipe_data nama_var;atau : tipe_data nama_var=nilai_data;
• Contoh metod : bark(), sleep() definisi metod : [public/static] return_value nama_metod(parameter){ … } { isi metod}
Definisi class Cat
class Cat
{ private String nama="Noname";
private int umur = 0;
public Cat(String nnm, int um){nama=nnm;
umur=um;}
public void bark()
{System.out.println("meong...meong...!");}
public void sayHello()
{System.out.println("Hello my name "+nama+ " I am
a "+umur+"years old");
}
}


Membuat instant (objek)
Membuat objek pada dasarnya sama dengan mendefinisikan data dan mengisi nilai datanya.
Contoh :
Mendifinisikan data :
String nama;
Mendefinisikan data sekaligus mengisi data :
String nama=“manis”;
Mendefinisikan objek : (nama objek adalah MyCat, merupakan objek dari class Cat)
Cat MyCat;
Mendefinisikan objek sekalligus menginisialisasi nilai objek.


Memanggil method dari objek
•Berikut ini class yang memuat program utama dan memanggil method bark() danseyHello().
•Rumus memanggil metod adalah :

      nama_class.nama_metod()
public class CatRun
  { public static void main (String[] arg)
{ Cat myCat = new Cat ("Meong",3);
  myCat.bark();
  myCat.sayHello();
  System.out.println("Kenalkan kucingku :");
myCat.sayHello();
}
}
Edit program dengan NotePad dan kompilasi dengan javac.exe, eksekusi dengan java.exe


Selanjutnya
• Setelah selesai edit disimpan dalam file :DogRUn.java
• Saat dikompilasi dengan :
• >javac CatRun.java
 Akan terbentuk dua file class, yiatu :DogRun.class dan Dog.class
 Saat dieksekusi dengan :
• >java CatRun, hasilnya sbb:

2. Modifier public , void, static, private
• Modifier public :
• Pada definisi class, merupakan class yang memuat metod main(), dan nama file disimpan dengan nama class public
• Pada definisi metod, bermakna bahwa metod tersebut dapat diases dari luar class yang bersangkutan
• Pada daefinisi data, bermakna data tersebut dapat diases dari luar class
• Modifier void pada metod: berarti Metod tersebut tidak ada return valuenya
• Modifier static pada metod : berarti metod tersebut dapat dipanggil hanya dari dalam class yang sama
• Modifier private pada data : berarti data hanya dapat diases dari class yang sama
• Modifier protected paad metod : dapat diases dari class turunannya

Construktur
• Construktor adalah jenis metod yang akan otomatis dipanggil jika suatu objekdibuat
• Construktor didefinisikan secara public dan namanya sama dengan nama classnya
• Construktor dapat didefinisikan lebih dari satu definisi

 Contoh : untuk Dog ditambah definisi construktor tanpa parameter, menjadi :public Cat( ) { }public Cat(String
Misalkan dalam class CatRun didefinisikan objek yourDog
Cat yourCat=new Cat();
Maka jika dalam class DogRun dipanggil :
yourCat.sayHello();
Outputnya : (nilai nama dan umur digunakan nilai default)
   Hello my name is Noname I’am a 0 years old

               3. Data primitive dan operator
Data primitive : Data-data dasar java, yang hampir sama dengan C++ Data Integer :
• int              4 byte kisaran nilai :-2.147.486.648 s/d 2.147.486.647
• short          2 byte kisaran nilai :-32.768 s/d 32.767
• long           8 byte kisaran nilai :-9.223.372.036.854.775.808L s/d 9.223.372.036.854.775.807L
• byte           1 byte kisaran nilai :-128 s/d 127

Data floating point :
• float        4 byte kisaran nilai :+3.40282347E+38F (7 digit ignifikan)
• double    8 byte kisaran nilai :+1.79769313486231570E+308 (15 digit signifikan)

karakter dan boolean
• char         1 byte1 karakter
• boolean    bernilai true, false

Operator
Operator aritmatik :
• +, -, * dan / untuk : penambahan, pengurangan, perkalian dan pembagian
• += , yakni : x+=4 ekivalen dengan operasi : x=x+4• -= ; *= dan /= memiliki ekivalensi yang sama dengan -=
• ++ yaitu : n++ ekivalen dengan n=n+1 (increment by one)• --yaitu : n-- ekivalen dengan n=n-1 (decrement by one)
•       % untuk MODULO, yaitu : 5 % 3 sama dengan 2

Operator relational dan logika
• < , > , <= dan >= adalah : lebih kecil, lebih besar, lebih kecil atau sama dan lebih besa atau sama
• == untuk SAMA DENGAN
• != untuk TIDAK SAMA DENGAN
• && untuk operator AND
• || untuk operator OR

Contoh program dengan data dan operator :
class OperasiDATA
public static void main (String args[])
  {int a; float b; double c; String d;
  a=(int)1/3;b=(float)1/3 ; c=(double)1/3 ;
  d="JON SHOLEH";System.out.println("a = "
    +a);
  System.out.println("b = " +b);
  System.out.println("c = "+c);
  System.out.println("d = " +d);
  System.out.println(“jumlah data d = "
        +d.length());
  System.out.println("d.substring(0,3) = "
       +d.substring(0,3));
}
}
Output program :
a =0
b = 0.333333
c = 0.333333
d = JON SHOLEH
d.length() = 10
 d.substring(0,3) =JON

Encaptulation
• Encaptulation: konsep dalam OOP yang bertujuan membungkus (mang-kapsul) data dan metode dalam suatu class sehingga data dan metode yang tersembunyi dalam class tidak dapat diases dari luar class.
• Encaptulation direalisir dengan modifier : private
• Data yang dapat diases dari luar diberi modifier dengan public


Contoh :
class Dataku
{ public int N_umum=0;
private int N_khusus=0;
public void Cetak1(){System.out.println("N_umum="+N_umum);}
public void setN_Khusus(int n){N_khusus=n;}
public void Cetak2()
{System.out.println("N_khusus="+N_khusus);}
}


Ases data public
              Jika dimiliki program utama :                                                     maka hasilnya :
Jika di program utama : dituliskan Dt.N_khusus = 78; maka hasilnya :

Mengases data private
• Jika suatu data dideklarasikan secara private biasanya disediakan mekanisme metode public untuk mengasesnya
• Metode ases public itu umumnya didefinisikan dengan set().Dalam contoh diatas jika nilai N_khusus akan diubah digunakan
setN_khusus(n)
• Contoh :
 Program diubah menjadi :                                                                       hasil program :


4. String sebagai class
• String merupakan nama khusus class java yang masih mempertahankan kompatibilitas dengan tipe data primitif yang lama sebagaimana int, long, float dan lain-lain
• Definisi string dapat digunakan cara luwes, seperti deklarasi data primitif atau seperti deklarasi poembuatan objekl string.
Contoh :Deklarasi seperti data primitive
Contructor dan Beberapa fungsi String

• String memiliki beberapa konstruktor :
String(String s ) : argumen string s
String(byte [ ] b ) : argumen berupa array of byte b
String(char [ ] c ) : argumen berupa array of char
• length() : mengetahui panjang string
• substring(n,m) : mengambil substring dari string sebanyak m mulai dari posisi n
• equals(s) : untuk mengetahui apakah suatu string s nilainya sama denganstring tersebut
• charAt(n) : mengambil satu data char dari string pada posisi n

Contah contractor dan pemanggilan metod String


Rangkuman
1.   Class adalah frame dari suatu data yang berisi definisi data,  dan metod pengolah data .
2.   Objek adalah bentuk konkrit dari data dimana ia didefinisikan untuk mengisi data, mengaktifkan metod dan operasi data sebanarnya
3.   Operasi data java hampir semua sama dengan operasi data dalam C++
4.   Dalam definisi metod ada metod khusus yang otomatis dipanggil yaitu construktor
5.   Konsep OOP yang disebut encaptulation memungkinkan programmer menyembunyikan data yang tidak diperlukan dengan mendefinisikan secara private
6.   Data dan metod yang berkomunikasi keluar didefinisikan secara publik



Tidak ada komentar:

Posting Komentar