Pemrograman berorientasi objek (Object Oriented Programming atau disingkat OOP) adalah paradigma pemrograman yang berorientasikan kepada objek yang merupakan suatu metode dalam pembuatan program, dengan tujuan untuk menyelesaikan kompleksnya berbagai masalah program yang terus meningkat. Objek adalah entitas yang memiliki atribut, karakter (bahavour) dan kadang kala disertai kondisi (state)
Tujuan utama pemrograman berorientasi objek
Tujuan utama dari pemrograman berorientasi objek (PBO) adalah untuk mempermudah pengembangan software dengan cara mengorganisir kode menjadi objek-objek yang dapat berinteraksi satu sama lain. Konsep PBO mengizinkan pengembang untuk mengorganisir program mereka menjadi bagian-bagian yang lebih kecil dan mandiri yang disebut objek. Setiap objek memiliki data dan fungsi-fungsi yang berkaitan dengannya, dan dapat berinteraksi dengan objek lain melalui metode yang didefinisikan pada kelas tersebut.
APA SAJA KONSEP DASAR DALAM PBO?
- Class
Class adalah sebuah blueprint atau cetak biru untuk membuat objek-objek dalam program. Class menyediakan struktur, perilaku, dan properti yang digunakan untuk membuat objek-objek dalam program. Class dapat berisi variabel (atau disebut dengan field) dan method, yang mendefinisikan perilaku objek.
- Object
Object adalah sebuah instance atau contoh dari sebuah class. Object dibuat dari sebuah class dengan menggunakan kata kunci “new”. Ketika sebuah object dibuat, ia memiliki semua properti dan perilaku yang didefinisikan dalam class tersebut.
- Inheritance
Inheritance atau pewarisan adalah salah satu konsep dasar dalam pemrograman berorientasi objek (PBO) yang memungkinkan sebuah class untuk mewarisi properti dan metode dari class lain yang telah ada sebelumnya (parent class atau superclass). Class yang menerima warisan disebut subclass atau child class. Cara kerja inheritance adalah dengan menunjukkan hubungan parent-child antara class menggunakan kata kunci extends. Syntaxnya seperti ini:
class Parent {
// Properties dan methods
}
class Child extends Parent {
// Properties dan methods baru
}
Dalam contoh di atas, Child merupakan subclass dari Parent. Dengan kata lain, Child mewarisi semua properti dan metode dari Parent, serta dapat menambahkan properti dan metode baru atau mengubah perilaku metode yang diwarisi dari Parent.
- Polymorphism
Polymorphism adalah salah satu konsep utama dalam Pemrograman Berorientasi Objek (PBO). Polymorphism merujuk pada kemampuan suatu objek untuk memiliki banyak bentuk atau perilaku yang berbeda tergantung pada cara objek tersebut digunakan.
Dalam Pemrograman Berorientasi Objek (PBO), Polymorphism dapat dicapai melalui dua cara yaitu melalui Overloading dan Overriding. Berikut adalah contoh dari kedua cara tersebut:
- Overloading: Overloading terjadi ketika suatu class memiliki beberapa method dengan nama yang sama, namun memiliki parameter yang berbeda. Contohnya seperti:
public class PersegiPanjang {
private int panjang, lebar;
public PersegiPanjang(int panjang, int lebar) {
this.panjang = panjang;
this.lebar = lebar;
}
public int hitungLuas() {
return panjang * lebar;
}
public int hitungLuas(int sisi1, int sisi2) {
return sisi1 * sisi2;
}
}
- Overriding: Overriding terjadi ketika sebuah subclass memiliki method yang sama dengan superclass-nya. Dalam hal ini, method yang ada pada subclass akan menimpa atau menggantikan method pada superclass-nya. Contohnya seperti:
public class Hewan {
public void suara() {
System.out.println(“Hewan bersuara…”);
}
}
public class Kucing extends Hewan {
@Override
public void suara() {
System.out.println(“Meong…”);
}
}
public class Anjing extends Hewan {
@Override
public void suara() {
System.out.println(“Guk-guk…”);
}
}
- Encapsulation
Encapsulation adalah salah satu prinsip utama dalam Pemrograman Berorientasi Objek (PBO) yang mengacu pada penyembunyian detail dari suatu objek dan menjaga data dan perilaku yang terkait di dalam satu tempat yang terisolasi. Hal ini dilakukan dengan membuat variabel dan method pada suatu kelas bersifat private, sehingga hanya dapat diakses oleh kelas itu sendiri.
Dalam PBO, encapsulation sangat penting karena membantu kita dalam membuat kode yang lebih aman, terstruktur, dan mudah dipelihara. Hal ini juga membantu dalam mengurangi kompleksitas dan meningkatkan fleksibilitas dalam pengembangan program, sehingga kita dapat dengan mudah menambahkan atau mengubah fitur tanpa mempengaruhi kode yang ada sebelumnya.
konsep coupling dan cohesion dalam Pemrograman Berorientasi Objek.
Coupling mengacu pada seberapa erat ketergantungan antara dua kelas atau komponen dalam sebuah program. Semakin tinggi tingkat coupling antara dua kelas, semakin sulit dan kompleks untuk memodifikasi salah satu kelas tanpa memengaruhi yang lain. Coupling yang terlalu tinggi juga dapat menghasilkan kode yang sulit dipahami dan sulit diuji.
Sebaliknya, cohesion mengacu pada seberapa terkait dan fokus suatu kelas terhadap satu tugas atau tujuan tertentu. Semakin tinggi tingkat cohesion suatu kelas, semakin mudah untuk memahami dan memodifikasi kelas. Kode yang memiliki tingkat cohesion yang baik cenderung lebih mudah dipelihara, diuji, dan diubah.
Perbedaan antara abstract class dan interface
Berikut adalah perbedaan antara abstract class dan interface:
- Konsep Dasar
- Abstract class merupakan kelas yang tidak dapat di-instantiate atau dibuat menjadi objek langsung. Sebaliknya, abstract class berperan sebagai kerangka kerja atau template yang diperluas oleh kelas anaknya. Abstract class dapat memiliki metode abstrak atau non-abstrak, dan metode abstrak tersebut harus diimplementasikan oleh kelas anak.
- Interface merupakan sebuah kontrak yang digunakan untuk menggambarkan perilaku objek. Interface hanya dapat memiliki metode abstrak dan konstanta, dan tidak memiliki implementasi kode sama sekali. Interface dapat di-implementasikan oleh kelas-kelas lain yang ingin menggunakan perilaku yang digambarkan oleh interface tersebut.
- Tujuan
- Abstract class digunakan untuk menggambarkan kesamaan atau hubungan antara kelas-kelas yang ada dalam sebuah hierarki kelas. Abstract class juga digunakan untuk mengurangi duplikasi kode dengan memberikan implementasi dasar untuk metode-metode yang sama di kelas-kelas anaknya.
- Interface digunakan untuk memastikan bahwa kelas-kelas yang berbeda dapat memiliki perilaku yang sama, tanpa harus peduli dengan detail implementasi dari perilaku tersebut.
- Implementasi
- Abstract class diimplementasikan dengan membuat class abstrak dan meng-extend class tersebut ke class anak, lalu mengimplementasikan metode-metodenya.
- Interface diimplementasikan dengan membuat interface, lalu mengimplementasikan semua metode yang terdapat pada interface tersebut pada class yang meng-implementasikannya.
- Multiple Inheritance
- Abstract class mendukung multiple inheritance dengan menggunakan keyword extends untuk mewarisi class lain. Namun, karena Java hanya mendukung single inheritance untuk class, dalam hal multiple inheritance pada abstract class, hanya satu class yang bisa di-extend dan class-class lainnya diimplementasikan menggunakan interface.
- Interface mendukung multiple inheritance dengan menggunakan keyword implements untuk meng-implementasikan banyak interface sekaligus.
Perbedaan antara private, protected, dan public access modifier
- Private access modifier: Variabel atau method yang dideklarasikan sebagai private hanya dapat diakses oleh kelas itu sendiri. Tidak ada kelas lain yang dapat mengakses variabel atau method tersebut. Variabel atau method private digunakan untuk menyembunyikan informasi yang tidak perlu diakses atau dimodifikasi oleh kelas lain.
- Protected access modifier: Variabel atau method yang dideklarasikan sebagai protected hanya dapat diakses oleh kelas yang berada dalam package yang sama atau kelas turunan dari kelas yang mengandung variabel atau method tersebut. Variabel atau method protected digunakan untuk memberikan akses pada kelas turunan.
- Public access modifier: Variabel atau method yang dideklarasikan sebagai public dapat diakses oleh kelas mana saja, baik dari package yang sama atau package yang berbeda. Variabel atau method public digunakan untuk memberikan akses pada kelas lain untuk menggunakan variabel atau method tersebut.
Perbedaan utama antara ketiga access modifier tersebut adalah seberapa besar akses yang diberikan pada variabel atau method. Private memberikan akses yang paling ketat, hanya untuk kelas itu sendiri. Protected memberikan akses lebih besar, untuk kelas dalam package yang sama atau kelas turunan. Public memberikan akses terluas, untuk kelas mana saja, dari package yang sama atau berbeda. Dalam menggunakan access modifier, kita harus mempertimbangkan keamanan data dan fungsionalitas dari program yang kita buat.
//
// <![CDATA[
var intervalId = setInterval(function () { if (MtPopUpList) { LanguageMenu = new MtPopUpList(); var langMenu = document.getElementById(LanguageMenu_popupid); var origLangDiv = document.createElement("div"); origLangDiv.id = "OriginalLanguageDiv"; origLangDiv.innerHTML = "ORIGINAL: “; langMenu.appendChild(origLangDiv); LanguageMenu.Init(‘LanguageMenu’, LanguageMenu_keys, LanguageMenu_values, LanguageMenu_callback, LanguageMenu_popupid); window[“LanguageMenu”] = LanguageMenu; clearInterval(intervalId); } }, 1);
// ]]>