abstract class seniman { //buat kelas abstrak seniman
seniman() {
System.out.println("Seniman ");
}
seniman (int a) {
System.out.println("Seniman dengan nilai "+a );
}
abstract void berkesenian(); //method abstrak tanpa isi perintah
void tidur() { //method di dalam kelas abstrak pake isi
System.out.println ("Zzzz..zzz.. ");
}
void makan() { //method di dalam kelas abstrak pake isi
System.out.println ("Nyam..nyam...");
}
}
class pelukis extends seniman { // turunan kelas seniman
pelukis() {
//super(2); // akses konstruktor seniman (int a)
System.out.println("pelukis");
}
void berkesenian() { //mengisi perintah method abstrak berkesenian
System.out.println ("Tap..tap..tuk..tuk..");
}
void berkesenian(int a){
}
void tidur() {
System.out.println ("Buzzz..nging..nging..brrr..!!");
}
}
class penyanyi extends seniman {
void penyanyi() {
System.out.println("penyanyi");
}
void berkesenian () {
super.makan(); // akses method makan kelas seniman
System.out.println ("Tralala..trilili...!!!");
}
void bergumam () {
System.out.println ("Mmmm..mmmm..");
}
static void suara() {
System.out.println ("Dududu...dadada..");
}
}
class quizUtama{
public static void main(String[] args){
seniman ref;
// buat objek referensi kelas abstrak namanya ref
// gak bisa langsung seniman ref = new seniman(); <<"DOSA"
pelukis obj1 = new pelukis();
//buat objek dari kelas penyanyi dulu
ref = obj1;
//baru objek ref tadi ditunjuk ke objek obj1 <<" INI GAK DOSA"
ref.berkesenian();
ref.makan();
ref.tidur();
//klo pengen akses method2 yg ada di kelas abstrak pake objek ref
penyanyi obj2 = new penyanyi();
//ref = obj2;
obj2.berkesenian();
obj2.bergumam();
penyanyi.suara();
//klo pengen akses method2 di kelas turunan ya pake objek yg dideklarasiin di kelas itu
obj2.tidur();
}
}
Logika Program 2
Penjelasan Program2 :
Pada program yang kedua kita akan membuat kelas abstrak seniman yang akan disimpan pada akhir program dengan nama quizUtama.java. Dalam Java implementasi, method suatu parent-class dapat diubah oleh sub-class, hal ini dikenal dengan overriding method. Deklarasi method sama tetapi implementasi atau definisinya berbeda. (Method atau perilaku yang sama tapi implementasinya/caranya yang berbeda-beda inilah yang disebut dengan Polimorfisme).
Polimorfisme yaitu konsep yang menyatakan bahwa sesuatu yang sama dapat mempunyai bentuk dan perilaku berbeda. Polimorfisme mempunyai arti bahwa operasi yang sama mungkin mempunyai perbedaan dalam kelas yang berbeda.
abstract class seniman { //buat kelas abstrak seniman
seniman() {
System.out.println("Seniman ");
}
Coding ini berarti menjelaskan bahwa sebelum program dibuat terlebih dahulu kita buat kelas abstrak seniman. seniman() { merupakan konstruktor yang dipanggil dari kelas turunan kelas abstrak seniman. Kemudian akan mencetak statement Seniman ke baris selanjutnya. Dan tambahkan tanda kurung tutup satu kali untuk menutup akses konstruktor tersebut.
seniman (int a) {
System.out.println("Seniman dengan nilai "+a );
}
Coding ini menjelaskan bahwa konstruktor seniman diberi parameter (int a) dan akan mencetak statement “Seniman dengan nilai” +a tetapi setelah dirunning statement tersebut tidak berpengaruh pada hasil keluaran dari program ini. Dan tambahkan juga tanda { dan } sebanyak satu kali.
abstract void berkesenian(); //method abstrak tanpa isi perintah
void tidur() { //method di dalam kelas abstrak pake isi
System.out.println ("Zzzz..zzz.. ");
}
Coding tersebut menjelaskan bahwa method abstrak void berkesenian ini tidak membalikkan nilai karena tanpa isi perintah. Method yang diberi awalan dengan kata void berarti method tersebut tidak memberi nilai balik. Sintaks void tidur merupakan method yang terdapat didalam kelas abstrak void berkesenian yang didalamnya terdapat isi perintah dan akan mencetak perintah “Zzzz..zzz..”. Diawali dengan tanda { dan diakhiri dengan tanda }
void makan() { //method di dalam kelas abstrak pake isi
System.out.println ("Nyam..nyam...");
}
}
Coding tersebut menjelaskan bahwa sintaks void makan juga merupakan method yang terdapat di dalam kelas abstrak void berkesenian yang didalamnya terdapat isi perintah dan akan mencetak perintah "Nyam..nyam...". Dan tambahkan tanda } sebanyak dua kali.
class pelukis extends seniman { // turunan kelas seniman
pelukis() {
//super(2); // akses konstruktor seniman (int a)
System.out.println("pelukis");
}
Pada listing program di atas berisi konstruktor untuk kelas pelukis() yang akan diganti dengan kelas seniman atau turunan dari kelas seniman. pelukis() merupakan konstruktor yang dipanggil dari kelas turunan yaitu kelas seniman. Jika konstruktor dipanggil dari kelas turunan, maka cara untuk mengakses konstruktor seniman adalah dengan menuliskan kata super(); pada class turunan dengan parameter (int a) Dan akan mencetak statement pelukis ke baris selanjutnya. Diawali dengan tanda { dan dikhiri dengan tanda }.
void berkesenian() { //mengisi perintah method abstrak berkesenian
System.out.println ("Tap..tap..tuk..tuk..");
}
Coding ini menjelaskan bahwa sintaks void berkesenian mengisi perintah pada method abstrak berkesanian Dan akan mencetak perintah "Tap..tap..tuk..tuk.." ke baris selanjutnya. Tambahkan tanda } untuk menutup method tersebut.
void berkesenian(int a){
}
Merupakan method yang diberi parameter (int a). Method yang diberi awalan dengan kata void berarti method tersebut tidak memberi nilai balik.
void tidur() {
System.out.println ("Buzzz..nging..nging..brrr..!!");
}
}
Coding tersebut menjelaskan bahwa sintaks void tidur juga merupakan method yang terdapat didalam kelas abstrak void berkesenian yang didalamnya terdapat isi perintah dan akan mencetak perintah “Buzzz..nging..nging..brrr..!!". Method yang diberi awalan dengan kata void berarti method tersebut tidak memberi nilai balik. Dan tambahkan tanda } sebanyak dua kali.
class penyanyi extends seniman {
void penyanyi() {
System.out.println("penyanyi");
}
Pada listing program di atas berisi konstruktor untuk kelas penyanyi() yang akan diganti dengan kelas seniman. void penyanyi() { merupakan method yang dipanggil dari kelas turunan yaitu kelas seniman. Dan akan mencetak statement penyanyi ke baris selanjutnya. Diawali dengan tanda { dan dikhiri dengan tanda }.
void berkesenian () {
super.makan(); // akses method makan kelas seniman
System.out.println ("Tralala..trilili...!!!");
}
Coding ini menjelaskan bahwa method berkesenian merupakan method yang terdapat pada kelas seniman. Untuk mengakses method makan pada kelas seniman maka si gunakan kata super.makan(). Dan akan mencetak perintah "Tralala..trilili...!!!" ke baris selanjutnya.
void bergumam () {
System.out.println ("Mmmm..mmmm..");
}
Coding tersebut menjelaskan bahwa sintaks void berguman juga merupakan method yang terdapat didalam kelas seniman yang didalamnya terdapat isi perintah dan akan mencetak perintah "Mmmm..mmmm..".
static void suara() {
System.out.println ("Dududu...dadada..");
}
}
Coding ini merupakan method main() yang menggunakan keyword static. Sebelum aplikasi mulai dieksekusi, diperlukan metode walaupun tanpa objek. Method yang digunakan adalah void suara() dan akan mencetak perintah "Dududu...dadada.." ke baris selanjutnya. Dan tambahkan tanda kurung tutup kurawal sebanyak dua kali.
class quizUtama{
public static void main(String[] args){
seniman ref;
// buat objek referensi kelas abstrak namanya ref
// gak bisa langsung seniman ref = new seniman(); <<"DOSA"
pelukis obj1 = new pelukis();
//buat objek dari kelas penyanyi dulu
ref = obj1;
//baru objek ref tadi ditunjuk ke objek obj1 <<" INI GAK DOSA"
ref.berkesenian();
ref.makan();
ref.tidur();
//klo pengen akses method2 yg ada di kelas abstrak pake objek ref
penyanyi obj2 = new penyanyi();
//ref = obj2;
obj2.berkesenian();
obj2.bergumam();
penyanyi.suara();
//klo pengen akses method2 di kelas turunan ya pake objek yg dideklarasiin di kelas itu
obj2.tidur();
}
}
Coding selanjutnya menjelaskan bahwa nama class yang baru adalah quizUtama dan nama tersebut akan disimpan pada akhir program. Dibuka dengan tanda kurung buka kurawal satu kali.
Sintaks ini merupakan method utama dalam pemrograman java. Method main merupakan method pada class public yang pertama kali dipanggil oleh Java pada saat program dijalankan. Bertipe data String dengan variable args. Dan tambahkan tanda kurung buka kurawal satu kali. seniman ref;
Coding tersebut menjelaskan bahwa untuk membuat objek referensi pada kelas seniman digunakan ref tidak bisa langsung ditulis seniman ref = new seniman seperti pada objek String. Tetapi setelah dideklarasikan maka dapat langsung ditulis seperti ini
pelukis obj1 = new pelukis(); Coding ini berfungsi untuk membuat objek dari kelas pelukis setelah itu objek referensi yang tadi sudah dibuat ditunjuk ke objek obj1 yaitu pelukis.
Coding selanjutnya yaitu menjelaskan jika ingin mengakses method-method seperti berkesenian, makan dan tidur yang terdapat pada kelas abstrak maka menggunakan objek ref.
penyanyi obj2 = new penyanyi(); Coding ini berfungsi untuk membuat objek dari kelas penyanyi setelah itu objek referensi yang tadi sudah dibuat ditunjuk ke objek obj2 yaitu penyanyi.
Coding selanjutnya dideklarasikan dari objek obj2 pada kelas penyanyi yaitu objek berkesenian. Selanjutnya untuk mengakses method penyanyi.suara() dari kelas turunan penyanyi menggunakan objek yang dideklarasikan di kelas penyanyi dengan objek obj2.bergumam dan coding yang terakhir sama dengan sebelumnya yaitu objek obj2.tidur yang dideklarasikan di kelas turunan penyanyi. Dan tambahkan tanda kurung tutup kurawal sebanyak dua kali untuk mengakhiri program ini.
Sebelum di running pada aplikasi CMD terlebih dahulu kita simpan dengan nama file quizUtama.java kemudian kita compile program ini dengan perintah javac quizUtama.java lalu dirunning dengan perintah java quizUtama.
idris
Selamat datang di blog saya,, blog ini berisi tentang hal-hal yang mungkin dapat bermaanfaat dan menabah wawasan para pembaca karena berisi tentang curahatan penulis serta info-info yang diperoleh dari sumber-sumber yang terpercaya. Terima kasih dan selamat membaca.
Minggu, 02 Januari 2011
Karakteristik OOP
Disini, kita akan melihat beberapa konsep dasar dan term-term yang umum untuk seluruh bahasa OOP[2]. Pemrograman orientasi-objek menekankan konsep berikut:
Class — 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 objek. 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 ijin 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 fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.
Inheritas- Mengatur polimorfisme dan enskapsulasi dengan mengijinkan objek didefinisikan dan diciptakan dengan jenis khusus dari objek yang sudah ada – objek-objek ini dapat membagi (dan memperluas) perilaku mereka tanpa haru mengimplementasi ulang perilaku tersebut (bahasa berbasis-objek tidak selalu memiliki inheritas.)
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 administrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek -objek yang ada karena setiap objek memiliki job descriptionnya sendiri.
Mengapa OOP???
Mengapa OOP dibangun dalam sebuah paradigma yang luas untuk menyelesaikan masalah pekerjaan? Bahasa prosedural mengatur program dalam mode barisan linier yang bekerja dari atas ke bawah. Dengan kata lain, program adalah kumpulan dari tahapan yang dijalankan setelah yang lain berjalan. Programming tipe ini bekerja dengan baik untuk program kecil yang berisi code relative sedikit, tetapi pada saat program menjadi besar, mereka cenderung susah untuk di-manage dan di-debug. Dalam usaha untuk me-manage program, struktur programming diperkenalkan cara untuk mem-break down code-code tersebut melalui functions dan procedures.
Ini adalah sebuah langkah perbaikan, namun pada saat program dijalankan dalam sebuah fungsi pekerjaan yang kompleks dan berinteraksi dengan sistem lain, maka kelemahan dari struktur metodologi programming muncul kepermukaan meliputi:
· Program menjadi lebih susah untuk di maintain.
· Fungsi yang tersedia, susah untuk diubah tanpa harus mempengaruhi fungsi sistem secara keseluruhan.
· Programming tidak baik untuk team development. Programmer harus mengetahui setiap aspek bagaimana program itu bekerja dan tidak menyebabkan terisolasi usaha mereka atas aspek yang lain dari sistem.
· Butuh usaha yang keras untuk menterjemahkan Business Models dalam programming models.
· Mungkin dapat bekerja dengan baik pada saat terisolasi tapi tidak pada saat terintegrasi dengan sistem lain.
Sebagai hasilnya, banyak developer software beralih ke objek-oriented methodologies dan programming languages untuk memecahkan masalah ini. Keuntungan dari objek-oriented methodologies adalah sebagai berikut:
· Langkah ini merupakan sebuah transisi intuitive dari business analysis models menuju software implementation models.
· Kemampuan untuk memaintain dan menerapkan perubahan dalam program ini lebih efisien dan dengan cepat.
· Kemampuan untuk lebih efektif menciptakan sistem software dengan menggunakan sebuah team proses, yang mengijinkan seorang spesialis untuk bekerja hanya pada bagiannya saja.
· Kemampuan untuk menggunakan kembali komponen kode dalam suatu program dan membeli komponen dari developer lain untuk meningkatkan fungsi program mereka dengan usaha minimal.
· Integration lebih baik dengan pasangan bebas dalam distributed computing systems.
· Meningkatkan integration dengan modern operating systems.
· Kemampuan untuk menciptakan GUI yang lebih intuitive bagi users.
Sejarah OOP
Pemrograman berorientasi obyek dikembangkan sebagai metodologi pemrograman yang dominan selama pertengahan 1990-an, sebagian besar disebabkan oleh pengaruh C++. Dominasinya itu makin diperkuat oleh meningkatnya popularitas dari antarmuka pengguna grafis, yang pemrograman berorientasi obyek tampaknya cocok. Contoh dari GUI dinamis terkait erat dengan perpustakaan dan bahasa OOP dapat ditemukan di Kakao kerangka kerja di Mac OS X, yang ditulis di Objective-C, sebuah object-oriented, dinamis ekstensi pesan ke C didasarkan pada Smalltalk. OOP toolkit juga meningkatkan popularitas pemrograman kendali-event (walaupun konsep ini tidak terbatas pada OOP). Sebagian merasa bahwa asosiasi dengan GUI (nyata atau tidak) adalah apa yang didorong ke dalam pemrograman OOP arus utama.
Fitur berorientasi objek telah ditambahkan ke banyak bahasa yang ada selama waktu itu, termasuk Ada, BASIC, Fortran, Pascal, dan lain-lain. Menambahkan fitur ini untuk bahasa yang awalnya tidak dirancang untuk mereka sering menimbulkan berbagai permasalahan dengan kompatibilitas dan Kemampu-rawatan kode. Baru-baru ini, sejumlah bahasa telah muncul yang berorientasi obyek terutama belum kompatibel dengan metodologi prosedural, seperti Python dan Ruby. Mungkin yang paling penting secara komersial baru bahasa berorientasi obyek adalah Visual Basic.NET (VB.NET) dan C#, baik yang dirancang untuk Microsoft.NET platform, dan Java, yang dikembangkan oleh Sun Microsystems. VB.NET dan C# baik dukungan lintas bahasa warisan, memungkinkan kelas didefinisikan dalam satu bahasa ke bahasa kelas subclass didefinisikan dalam bahasa lain.
Sama seperti pemrograman prosedural mengarah pada perbaikan teknik seperti pemrograman terstruktur, modern berorientasi objek metode desain perangkat lunak mencakup perbaikan seperti penggunaan pola desain, design by kontrak, dan pemodelan bahasa (seperti UML). OOPS istilah yang mengacu pada sebuah Object Oriented Programming System, adalah umum terjadi di awal pengembangan pemrograman berorientasi obyek.
Usaha untuk menyaring OOP untuk minimal kumpulan fitur dianggap sia-sia oleh peneliti bahasa pemrograman Cuire Benjamin Pierce. Namun demikian, ia mengidentifikasi sebagai berikut fitur dasar yang ditemukan di kebanyakan bahasa-bahasa berorientasi obyek dan bahwa, dalam konser, mendukung gaya pemrograman OOP:
• Dynamic dispatch – ketika sebuah metode dipanggil pada objek, obyek itu sendiri menentukan kode apa yang dijalankan dengan melihat metode pada saat run waktu dalam sebuah tabel yang berhubungan dengan objek. Fitur ini membedakan objek dari suatu tipe data abstrak (atau modul), yang memiliki tetap (statis) pelaksanaan operasi untuk semua kasus
• Enkapsulasi (atau multi-metode, dalam hal ini negara disimpan terpisah)
• Subtipe polimorfisme
• objek warisan (atau delegasi)
• Buka rekursi – variabel khusus (sintaksis ini mungkin merupakan kata kunci), biasanya disebut this atau self yang memungkinkan tubuh metode untuk invoke metode lain tubuh objek yang sama. Variabel ini akhir-terikat; ini memungkinkan sebuah metode yang didefinisikan dalam satu kelas untuk memanggil metode lain yang ditentukan kemudian, dalam beberapa subclass daripadanya.
Demikian pula, dalam buku 2003, Konsep-konsep dalam bahasa pemrograman, John C. Mitchell mengidentifikasi empat fitur utama: dinamis pengiriman, abstraksi, subtipe polimorfisme, dan pewarisan. Michael Lee Scott dalam Programming Language Pragmatics hanya mempertimbangkan enkapsulasi, pewarisan dan dinamis pengiriman.
Bahasa OOP Simula (1967) secara umum diterima sebagai bahasa pertama untuk memiliki fitur-fitur utama dari sebuah bahasa berorientasi objek. Hal ini diciptakan untuk membuat program simulasi, di mana apa yang kemudian disebut objek adalah representasi informasi yang paling penting. Smalltalk (1972-1980) adalah dapat dikatakan sebagai contoh kanonik, dan satu dengan yang banyak teori pemrograman berorientasi objek adalah dikembangkan.
Bahasa disebut “murni” OO bahasa, karena segala sesuatu di dalamnya diperlakukan secara konsisten sebagai sebuah objek, dari primitif seperti karakter dan tanda baca, sepanjang jalan sampai ke seluruh kelas, prototip, blok, modul, dll. Mereka dirancang secara khusus untuk memfasilitasi, bahkan menegakkan, metode OO. Contoh: Smalltalk, Eiffel, Ruby, JADE
Bahasa dirancang terutama untuk pemrograman OO, tapi dengan beberapa elemen prosedural. Contoh: C + +, Java, Python.
Bahasa yang secara historis bahasa prosedural, tetapi telah diperluas dengan beberapa fitur OO. Contoh: Fortran 2003, Perl, COBOL 2002.
Bahasa dengan sebagian besar fitur objek (kelas, metode, warisan, usabilitas), tapi dalam bentuk aslinya jelas. Contoh: Oberon (Oberon-1 atau Oberon-2).
Bahasa dengan tipe data abstrak dukungan, tetapi tidak semua fitur object-orientasi, kadang-kadang disebut objek berbasis bahasa. Contoh: Modula-2 (dengan sangat baik dan informasi enkapsulasi menyembunyikan), liat, CLU.
OOP di scripting dalam beberapa tahun terakhir, pemrograman berorientasi objek telah menjadi sangat populer dalam bahasa pemrograman scripting. Python, Ruby dan groovy adalah bahasa scripting yang dibangun di atas prinsip-prinsip OOP, sementara Perl dan PHP telah menambahkan fitur berorientasi objek sejak Perl 5 dan PHP 4, dan ColdFusion sejak versi 6.
Ringkasan
Object Oriented Programming (OOP) dapat diartikan beberapa macam antara lain :
- Suatu teknik atau cara untuk membuat program (perangkat lunak) objek.
- Pemrograman yang dibangun dengan cara membungkus (enkapsulasi) komponennya menjadi kelompok data dan fungsi yang dapat mewarisi atribut dan sifat dari komponen lainnya, dan komponen-komponen tersebut dapat berinteraksi satu sama lainnya.
- Pemrograman yang didasarkan pada objek-objek, yaitu suatu unit terkecil dari program yang mengandung data dan fungsi yang bekerja atas objek tersebut.
Perangkat lunak objek merupakan perangkat lunak yang dibangun dari kelas-kelas dan objek-objek yang saling berinteraksi satu sama lainnya. Kelas adalah deskripsi statis dari sesuatu objek-objek yang memiliki karakteristik yang sama. Objek adalah sesuatu yang diinstansiasi dari kelas.
Fitur berorientasi objek telah ditambahkan ke banyak bahasa yang ada selama waktu itu, termasuk Ada, BASIC, Fortran, Pascal, dan lain-lain. Menambahkan fitur ini untuk bahasa yang awalnya tidak dirancang untuk mereka sering menimbulkan berbagai permasalahan dengan kompatibilitas dan Kemampu-rawatan kode. Baru-baru ini, sejumlah bahasa telah muncul yang berorientasi obyek terutama belum kompatibel dengan metodologi prosedural, seperti Python dan Ruby. Mungkin yang paling penting secara komersial baru bahasa berorientasi obyek adalah Visual Basic.NET (VB.NET) dan C#, baik yang dirancang untuk Microsoft.NET platform, dan Java, yang dikembangkan oleh Sun Microsystems. VB.NET dan C# baik dukungan lintas bahasa warisan, memungkinkan kelas didefinisikan dalam satu bahasa ke bahasa kelas subclass didefinisikan dalam bahasa lain.
Sama seperti pemrograman prosedural mengarah pada perbaikan teknik seperti pemrograman terstruktur, modern berorientasi objek metode desain perangkat lunak mencakup perbaikan seperti penggunaan pola desain, design by kontrak, dan pemodelan bahasa (seperti UML). OOPS istilah yang mengacu pada sebuah Object Oriented Programming System, adalah umum terjadi di awal pengembangan pemrograman berorientasi obyek.
Usaha untuk menyaring OOP untuk minimal kumpulan fitur dianggap sia-sia oleh peneliti bahasa pemrograman Cuire Benjamin Pierce. Namun demikian, ia mengidentifikasi sebagai berikut fitur dasar yang ditemukan di kebanyakan bahasa-bahasa berorientasi obyek dan bahwa, dalam konser, mendukung gaya pemrograman OOP:
• Dynamic dispatch – ketika sebuah metode dipanggil pada objek, obyek itu sendiri menentukan kode apa yang dijalankan dengan melihat metode pada saat run waktu dalam sebuah tabel yang berhubungan dengan objek. Fitur ini membedakan objek dari suatu tipe data abstrak (atau modul), yang memiliki tetap (statis) pelaksanaan operasi untuk semua kasus
• Enkapsulasi (atau multi-metode, dalam hal ini negara disimpan terpisah)
• Subtipe polimorfisme
• objek warisan (atau delegasi)
• Buka rekursi – variabel khusus (sintaksis ini mungkin merupakan kata kunci), biasanya disebut this atau self yang memungkinkan tubuh metode untuk invoke metode lain tubuh objek yang sama. Variabel ini akhir-terikat; ini memungkinkan sebuah metode yang didefinisikan dalam satu kelas untuk memanggil metode lain yang ditentukan kemudian, dalam beberapa subclass daripadanya.
Demikian pula, dalam buku 2003, Konsep-konsep dalam bahasa pemrograman, John C. Mitchell mengidentifikasi empat fitur utama: dinamis pengiriman, abstraksi, subtipe polimorfisme, dan pewarisan. Michael Lee Scott dalam Programming Language Pragmatics hanya mempertimbangkan enkapsulasi, pewarisan dan dinamis pengiriman.
Bahasa OOP Simula (1967) secara umum diterima sebagai bahasa pertama untuk memiliki fitur-fitur utama dari sebuah bahasa berorientasi objek. Hal ini diciptakan untuk membuat program simulasi, di mana apa yang kemudian disebut objek adalah representasi informasi yang paling penting. Smalltalk (1972-1980) adalah dapat dikatakan sebagai contoh kanonik, dan satu dengan yang banyak teori pemrograman berorientasi objek adalah dikembangkan.
Bahasa disebut “murni” OO bahasa, karena segala sesuatu di dalamnya diperlakukan secara konsisten sebagai sebuah objek, dari primitif seperti karakter dan tanda baca, sepanjang jalan sampai ke seluruh kelas, prototip, blok, modul, dll. Mereka dirancang secara khusus untuk memfasilitasi, bahkan menegakkan, metode OO. Contoh: Smalltalk, Eiffel, Ruby, JADE
Bahasa dirancang terutama untuk pemrograman OO, tapi dengan beberapa elemen prosedural. Contoh: C + +, Java, Python.
Bahasa yang secara historis bahasa prosedural, tetapi telah diperluas dengan beberapa fitur OO. Contoh: Fortran 2003, Perl, COBOL 2002.
Bahasa dengan sebagian besar fitur objek (kelas, metode, warisan, usabilitas), tapi dalam bentuk aslinya jelas. Contoh: Oberon (Oberon-1 atau Oberon-2).
Bahasa dengan tipe data abstrak dukungan, tetapi tidak semua fitur object-orientasi, kadang-kadang disebut objek berbasis bahasa. Contoh: Modula-2 (dengan sangat baik dan informasi enkapsulasi menyembunyikan), liat, CLU.
OOP di scripting dalam beberapa tahun terakhir, pemrograman berorientasi objek telah menjadi sangat populer dalam bahasa pemrograman scripting. Python, Ruby dan groovy adalah bahasa scripting yang dibangun di atas prinsip-prinsip OOP, sementara Perl dan PHP telah menambahkan fitur berorientasi objek sejak Perl 5 dan PHP 4, dan ColdFusion sejak versi 6.
Ringkasan
Object Oriented Programming (OOP) dapat diartikan beberapa macam antara lain :
- Suatu teknik atau cara untuk membuat program (perangkat lunak) objek.
- Pemrograman yang dibangun dengan cara membungkus (enkapsulasi) komponennya menjadi kelompok data dan fungsi yang dapat mewarisi atribut dan sifat dari komponen lainnya, dan komponen-komponen tersebut dapat berinteraksi satu sama lainnya.
- Pemrograman yang didasarkan pada objek-objek, yaitu suatu unit terkecil dari program yang mengandung data dan fungsi yang bekerja atas objek tersebut.
Perangkat lunak objek merupakan perangkat lunak yang dibangun dari kelas-kelas dan objek-objek yang saling berinteraksi satu sama lainnya. Kelas adalah deskripsi statis dari sesuatu objek-objek yang memiliki karakteristik yang sama. Objek adalah sesuatu yang diinstansiasi dari kelas.
Langganan:
Komentar (Atom)