Penyusun OOP pada Java
Ini penting buat lo yang mau belajar tentang pemrograman OOP. OOP pada Java merupakan bahasa pemrograman paling populer saat ini. Keyword yang digunakan pun menggunakan bahasa sehari-hari (dalam bahasa Inggris).
Oke, Sebelum membaca ini ada baiknya lo baca tulisan ini. Oki doki 😁
Intinya disitu gue bahas tentang JAVA.
Komponen penyusun OOP JAVA
Kelas
Dimana-mana lo mau baca artikel, baca buku apapun itu, kelas adalah blueprint atau cetakan untuk membuat objek (udah itu doank) . Contoh:
class LuasPersegiPanjang(){}
Dalam penulisan kelas ada aturannya sob. Kelas itu merepresentasikan objek yang mau dibuat (tentang objek udah gw bahas *link nya diatas), jadi dalam membuat nama kelas sesuain dengan objek apa yang mau dibuat. Sebelum penulisan kelas ada kata “class” dan penulisan nama kelasnya diawali huruf KAPITAL dan CamelCaseSepertiIniOkeBesarKecilNyambung. (ini udah aturan bakunya sob *penulisan CamelCase berlaku untuk kelas, atribut dan method yang kita buat).
Atribut
Atribut ya atribut misal kelas manusia, atributnya ada nama, umur, tinggi dll sesuai program yang mau dibuat membutuhkan atribut apa. Untuk contohnya:
class LuasPersegiPanjang(){//atribut
int panjang;
int lebar}
Penggunaan atribut ini berlaku atau digunakan dimulai kurung kurawal buka sampai kurung kurawal tutup (scope namanya).
Method
Method ini merepresentasikan apa aja sih yang bisa dilakukan oleh sebuah objek (algoritma yang dikelompokan). Misal kelas manusia method nya bisa jalan, bicara, makan dll sesuai programnya mau bisa ngapa aja. Contohnya:
class LuasPersegiPanjang(){ //atribut
int panjang;
int lebar;
//method
int hitung(panjang, lebar){
int hasil;
hasil = panjang * lebar;
return hasil;
}
}
Pada pemrograman prosedural dikenal fungsi. Ya pada dasarnya fungsi itu sama seperti method, cuma bedanya method didalam kelas atau bergantung ama kelas kalo fungsi itu nggak.
Kenapa dalam pemrograman kita membuat method? dengan membuat method, kita jadi lebih mudah untuk mengelompokkan perintah-perintah, tujuannya untuk menyelesaikan masalah dengan cara memecah masalah tersebut menjadi beberapa bagian sehingga dibuatlah method-method itu. (Paham ya?)
Jenis method ada 2. Pada contoh diatas, itu adalah jenis method yang mengembalikan nilai berupa INTEGER terlihat di baris akhir ada kyword return “hasil”. Ini menandakan ngembaliin nilai dan program berhenti disitu, coba deh lo tambah kode program di bawah return (lihat apa yg terjadi). Untuk method yang mengembalikan nilai, lo gunain tipe2 data.
Dan method yang nggak mengembalikan nilai, lo gunakan “void”. (Inget)
Contoh penggunaan method:
public static void main(String[] args){
//cara pengaksesan menggunakan objek
LuasPersegiPanjang luas1 = new LuasPersegiPanjang();
luas1.hitung(2,5);
}
Enkapsulasi
Bahasa Indonesianya adalah pembungkusan. Kenapa perlu dibungkus? supaya kita dapat mengelola hak akses. Apa aja yang bisa dibungkus? yang bisa dibungkus adalah kelas, atribut, dan method. Perhatikan tabel berikut:
Macam-macam encapsulation ada 4 Public, Protected, Default, dan Private.
- Public, yang bisa akses : kelas lain, sub kelas satu folder, sub kelas lain folder, bukan sub kelas. (intinya bisa diakses oleh semua)
- Dst bisa lo baca yang ada di table…
contoh cara penggunaannya:
public class LuasPersegiPanjang(){//atribut
private int panjang;
private int lebar;
//method
public int hitung(panjang, lebar){
int hasil;
hasil = panjang * lebar;
return hasil;
}
}
Pola enkapsulasi paling sering yang digunakan oleh kelas adalah public, atribut adalah private, dan method adalah public. Kenapa? ya supaya kelas dapat diakses semuanya, method juga, tapi nggak dengan atribut. Atribut di beri private supaya hanya kelas itu saja yang bisa mengolah variabel itu. Untuk ngakses nilai atribut dibuatlah method GET dan SET supaya bisa diakses semua.
public class LuasPersegiPanjang(){ //atribut
private int panjang;
private int lebar;
//method
public int hitung(panjang, lebar){
int hasil;
hasil = panjang * lebar;
return hasil;
}
public void setPanjang(int panjang){
this.panjang = panjang;
}
public void setLebar(int lebar){
this.lebar = lebar;
}
public int getPanjang(){
return this.panjang;
}
public int getLebar(){
return this.lebar;
}
}
Seperti itu. (bingung sama “this”?), this itu merepresentasikan kelas itu sendiri. Jadi, misal this.panjang ya berarti atribut panjang milik kelas itu sendiri (kayak gini ni LuasPersegiPanjang.panjang). Gitu.
Inheritance
Untuk selanjutnya baca ini dulu ya..
Okey udah?.. Jadi gini, Inheritance itu bukanlah keyword pada pemrograman. Inheritance itu adalah sebuah konsep, konsep pewarisan. Jadi seperti bapak dan anak, bapak mewarisi sifat ke anak.
Nah dalam kasus java seperti apa? Dalam kasus java sebuah kelas (super class) dapat menurunkan sifatnya (berupa atribut dan method dengan syarat enkapsulasi yang berlaku *udah dijelasin diatas) kepada anaknya (sub class). Langsung contoh:
class Superclass {
int umur; //ini namanya konstruktor
Superclass(int umur) {
this.umur = umur;
}
public void getUmur() {
System.out.println("umur : " + umur);
}
}
Itu untuk Superclass atau bapak nya.
public class Subclass extends Superclass {
//subkelas dapat menggunakan atribut super kelas
Subclass(int umur) {
super(umur);
}
public static void main(String arguments[]) {
//subkelas dapat menggunakan metode super kelas
Subclass s = new Subclass(24);
s.getUmur();
}
}
Penjelasanya: Untuk mewarisi sifat yang dimiliki super kelas kita menggunakan keyword “extends” jadi kita bebas menggunakan atribut ataupun method yang dimiliki super kelas, namun super kelas tidak dapat menggunakan atribut dan metode yang dimiliki sub kelasnya.
Untuk kasus lainnya dikarenakan satu sub kelas hanya boleh meng-extends satu super kelas dan apabila sub kelas ingin menggunakan method dari kelas lainnya, digunakanlah interface.
Contoh:
interface Bicycle {
// wheel revolutions per minute
void changeCadence(int newValue);
void changeGear(int newValue);
void speedUp(int increment);
void applyBrakes(int decrement);
}
Dalam interface method gak memiliki badan, (coba perhatikan).
class ACMEBicycle implements Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
// The compiler will now require that methods
// changeCadence, changeGear, speedUp, and applyBrakes
// all be implemented. Compilation will fail if those
// methods are missing from this class.
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {
speed = speed - decrement;
}
void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}
Keyword yang digunakan adalah “implements”, disini terjadi suatu kontrak antara subkelas yang mengimplement super kelas. Kontraknya adalah subkelas wajib menggunakan semua metode yang ada pada superkelasnya.