Skip to content Skip to sidebar Skip to footer

Konsep Pemrograman Berorientasi Objek Dalam Bahasa Java

pemrograman berorientasi objek dengan java

Ilmuit.id. - tulisan ini adalah sebuah pengingat untuk saya yang sadar bahwa Ilmu jika tidak di gunakna berangsur angsur menghilagng dengan adanya tulsian mengenai konsep pemrograman berorientasi objek in iakan selalu menjadi pengingta dikala lupa.

Konsep pemrograman berorintasi objek in itau di singkat menjadi PBO memnag sering di gunakna oleh para pengembang untuk membuat aplikasi dalam skala besar dan agar mudah dalam pemeliharaan dan Update fitur maupun data dalam perjalana aplikasi tersebut.

pada konsep permograman tersebut objek-objek dapat berdiri sendiri atapun berinteraksi untuk mengambil atau pun mengirimakan data.

Konsep pemrograman kalini menggunakan bahsa java dimana baru kali ini juga say amepelajarinya dalam bahasa java. 

Pertanyaan adalah apakah itu objek ?

Bila kita analogikan bahwa kita adalah bagian dari class mahasiswa, maka setiap mahasiswa mempunyai nama budi, deni , raya, putri nah nama nama tersebut adalah objek . 

Setiap objek mempunyai nama, umur, jenis kelamin, semester, warna rambut, orang tua ibu / ayah.dll..

dengan ciri ciri tersebut kita dapat mengenali tipa objek dengan data yang berbeda kemudian dari ciri ciri data tersebut kita menampung dalam suatu wadah yang kita sebut class.

atau kita sebut saja class mahasiswa.

Lalu kita akan bahas perlahan lahan di bawah ini dari hal hal penting yang berkaitan dengan pemrograman berorintasi objek:

Apa itu Class Dalam Konsep Pemrograman Berorientasi Objek ?

Dlam class kita harus mengenal istilah 

Atribut / Field : Dapat kita sebut variable penampung data , oleh atribut inilah kita dapat membedakan objek objek dalam class yang sama.

Method : Mungkin sebelumnya kita mengenal ini dengan sebutan function atau procedure.  Jadi dalam pemrograman kita mengenal namanya method function dan method procedure. Dimana jika method function itu mengembalikan nilai. sedang method procedure tidak mengembalikan nilai.

Ada aturan umum untuk penamaan class yaitu :

Nama class tidak boleh menggunakan spasi ex: 

State, Atribut, Behaviour

Dalam Pemrograman Berbasis Objek (PBO), state dan atribut memiliki keterkaitan, namun mereka tidak sepenuhnya sama.

State: Merujuk pada kondisi atau status dari sebuah objek pada suatu waktu. State objek terdiri dari data yang disimpan di dalam objek, yaitu nilai dari semua atribut atau properti objek tersebut. State dapat berubah seiring waktu ketika nilai atribut objek berubah.

Atribut: Atribut adalah variabel yang mendeskripsikan karakteristik objek. Dalam konteks PBO, atribut adalah bagian dari kelas yang menentukan properti objek dan berfungsi untuk menyimpan data. Atribut inilah yang membentuk state suatu objek.

Contoh: Jika ada kelas Mobil dengan atribut warna, kecepatan, dan jenis, maka state dari objek mobil dapat terdiri dari kombinasi nilai atribut seperti "warna: merah", "kecepatan: 100 km/jam", dan "jenis: sedan".

Jadi, state adalah hasil dari nilai-nilai yang disimpan dalam atribut, dan ketika atribut berubah, maka state dari objek juga akan berubah.

Behaviour

Dalam konteks Pemrograman Berbasis Objek (PBO), behaviour merujuk pada tindakan atau operasi yang dapat dilakukan oleh suatu objek. Behaviour diimplementasikan melalui metode atau fungsi yang merupakan bagian dari kelas.

Setiap objek di dalam PBO memiliki kemampuan untuk melakukan suatu aksi atau perilaku berdasarkan apa yang telah diprogramkan dalam metode-metodenya. Metode ini biasanya memodifikasi state (kondisi atau nilai atribut) dari objek atau berinteraksi dengan objek lain.

Contoh:
Jika kita memiliki kelas Mobil, maka beberapa behaviour atau perilaku yang mungkin ada dalam objek Mobil bisa berupa:

  • berjalan(): untuk membuat mobil bergerak.
  • berhenti(): untuk menghentikan mobil.
  • ubahKecepatan(): untuk mengubah kecepatan mobil.

Jadi, behaviour adalah bagaimana objek bertindak dan berinteraksi, baik dengan dirinya sendiri (mengubah state) maupun dengan objek lain, melalui metode-metode yang ada di dalam kelasnya.

Dalam bahasa pemrograman Java, terdapat beberapa jenis Variable diantaranya : 

1. Variable Lokal 
2. Variable Kelas (Variable Static) 
3. Variable Instance (Non-Static)

Dalam bahasa pemrograman Java, ada tiga jenis variabel yang sering digunakan: Variabel Lokal, Variabel Kelas (Static), dan Variabel Instance (Non-Static). Berikut penjelasannya  yang mudah dipahami:

1. Variabel Lokal

Apa itu? Variabel lokal adalah variabel yang dideklarasikan di dalam metode, konstruktor, atau blok tertentu. Variabel ini hanya bisa digunakan di dalam metode atau blok di mana variabel tersebut dibuat. Ketika metode selesai dijalankan, variabel lokal akan hilang.

Contoh: Kamu bisa menganggap variabel lokal seperti alat kerja sementara di dalam ruangan. Setelah pekerjaan selesai (metode selesai), alat tersebut dibuang atau tidak dipakai lagi.

java
Copy code
public void contohMetode() {
    int angka = 10; // variabel lokal
    System.out.println(angka);
}
Di sini, variabel angka hanya bisa digunakan di dalam metode contohMetode.

2. Variabel Kelas (Static)

Apa itu? Variabel kelas atau static adalah variabel yang dideklarasikan dengan kata kunci static di dalam sebuah kelas. Variabel ini dimiliki oleh kelas itu sendiri, bukan oleh objek individu dari kelas tersebut. Artinya, semua objek yang dibuat dari kelas tersebut akan berbagi variabel static yang sama.

Contoh: Variabel static bisa diibaratkan seperti satu papan tulis yang digunakan bersama oleh semua siswa di kelas. Semua siswa (objek) bisa menulis dan membaca dari papan yang sama (variabel static).

public class Mobil {
    public static String merk = "Toyota"; // variabel kelas (static)
}

Semua objek dari kelas Mobil akan berbagi variabel merk yang sama.

3. Variabel Instance (Non-Static)

Apa itu? Variabel instance adalah variabel yang dideklarasikan di dalam kelas tetapi di luar metode, dan bukan dideklarasikan dengan static. Setiap objek yang dibuat dari kelas tersebut akan memiliki salinan variabel instance-nya sendiri. Artinya, setiap objek memiliki nilai variabel yang berbeda.

Contoh: Variabel instance mirip seperti buku catatan pribadi yang dimiliki oleh setiap siswa. Setiap siswa (objek) memiliki buku catatan mereka sendiri, dan isinya bisa berbeda-beda.


public class Mobil {
    public String warna; // variabel instance (non-static)
}

Setiap objek Mobil akan memiliki warna yang berbeda-beda, tergantung dari nilai yang diberikan.

Kesimpulan:

  • Variabel Lokal hanya hidup di dalam metode dan hilang setelah metode selesai.
  • Variabel Kelas (Static) dimiliki oleh kelas dan dibagi oleh semua objek.
  • Variabel Instance (Non-Static) dimiliki secara terpisah oleh setiap objek, jadi tiap objek bisa memiliki nilai yang berbeda.

Mengetahui dengan jelas penggunaan kata kunci

  • This
  • Super
  • Final
  • Static
Berikut penjelasan penggunaan kata kunci this, super, final, dan static dalam Java dengan bahasa yang mudah dipahami:

1. this
Apa itu? Kata kunci this digunakan untuk mereferensikan objek saat ini (objek yang sedang diproses oleh metode atau konstruktor).

Kapan digunakan? Biasanya digunakan saat ada kebingungan antara nama variabel lokal dan variabel instance (atribut kelas) yang sama, atau untuk merujuk pada objek saat ini di dalam kelas.

Contoh:

public class Mobil {
String warna;

public Mobil(String warna) {
this.warna = warna; // 'this.warna' merujuk pada variabel instance, sementara 'warna' adalah parameter
}
}


Di sini, this.warna merujuk pada variabel instance dari kelas, sedangkan warna merujuk pada parameter metode.

2. super
Apa itu? Kata kunci super digunakan untuk merujuk pada variabel atau metode dari kelas induk (superclass). Ini biasanya digunakan dalam konteks pewarisan (inheritance), di mana sebuah kelas mewarisi properti dari kelas lain.

Kapan digunakan? Ketika kita ingin mengakses atribut atau metode yang ada di kelas induk, atau memanggil konstruktor kelas induk.

Contoh:

public class Kendaraan {
public void berjalan() {
System.out.println("Kendaraan sedang berjalan");
}
}

public class Mobil extends Kendaraan {
public void berjalan() {
super.berjalan(); // memanggil metode 'berjalan' dari kelas Kendaraan
System.out.println("Mobil sedang berjalan");
}
}

Di sini, super.berjalan() memanggil metode berjalan dari kelas induk Kendaraan.

3. final
Apa itu? Kata kunci final digunakan untuk menetapkan bahwa suatu variabel, metode, atau kelas tidak bisa diubah atau diwarisi.
  • Final pada variabel: Nilai variabel tidak bisa diubah setelah diberikan nilai pertama kali.
  • Final pada metode: Metode tidak bisa di-override di kelas turunannya.
  • Final pada kelas: Kelas tidak bisa diwarisi oleh kelas lain.
Kapan digunakan? Ketika kamu ingin memastikan bahwa sesuatu (variabel, metode, atau kelas) tetap tidak berubah atau tidak dapat dimodifikasi.

Contoh:

public final class Kendaraan {
public final void berjalan() {
System.out.println("Kendaraan berjalan");
}
}

public class Mobil extends Kendaraan {
// Tidak bisa mewarisi kelas Kendaraan karena 'final'
// Tidak bisa override metode berjalan karena 'final'
}


Di sini, final membuat kelas Kendaraan tidak bisa diwarisi, dan metode berjalan tidak bisa diubah (di-override).

4. static
Apa itu? Kata kunci static digunakan untuk mendefinisikan anggota kelas (variabel atau metode) yang dimiliki oleh kelas itu sendiri, bukan oleh objek individu. Ini berarti anggota static dapat diakses tanpa harus membuat objek dari kelas tersebut.

Kapan digunakan? Ketika kamu ingin agar sebuah variabel atau metode dapat diakses tanpa perlu membuat objek kelas. Misalnya, untuk variabel yang ingin dibagi di antara semua objek dari kelas tersebut.

Contoh:

public class Mobil {
public static String merk = "Toyota";

public static void info() {
System.out.println("Merk mobil: " + merk);
}
}

public class Main {
public static void main(String[] args) {
System.out.println(Mobil.merk); // Akses tanpa membuat objek
Mobil.info(); // Panggil metode tanpa membuat objek
}
}

Di sini, static memungkinkan variabel merk dan metode info diakses langsung melalui nama kelas Mobil, tanpa perlu membuat objek terlebih dahulu.
Kesimpulan:

  • this: Digunakan untuk merujuk pada objek saat ini.
  • super: Digunakan untuk merujuk pada kelas induk (superclass).
  • final: Digunakan untuk membuat sesuatu tidak bisa diubah (variabel), tidak bisa di-override (metode), atau tidak bisa diwarisi (kelas).
  • static: Digunakan untuk membuat variabel atau metode yang dimiliki oleh kelas, bukan objek, sehingga bisa diakses tanpa membuat objek terlebih dahulu.

Membedakan antara method overloading dan method overridding

Berikut adalah penjelasan mengenai perbedaan method overloading dan method overriding dalam bahasa pemrograman Java dengan bahasa yang mudah dipahami:

1. Method Overloading

Apa itu? Method overloading adalah teknik di mana dua atau lebih metode dalam satu kelas memiliki nama yang sama, tetapi dengan parameter yang berbeda (baik jumlah atau tipe datanya berbeda).

Tujuan: Tujuan dari method overloading adalah agar kita bisa menggunakan metode yang sama untuk tugas yang mirip tetapi dengan cara yang berbeda, tergantung dari parameter yang diberikan.

Kapan digunakan? Method overloading digunakan ketika kita ingin melakukan beberapa variasi dari tindakan yang sama, tetapi dengan input yang berbeda.

Contoh:

public class Kalkulator {
// Overloading metode tambah
public int tambah(int a, int b) {
return a + b;
}

public double tambah(double a, double b) {
return a + b;
}

public int tambah(int a, int b, int c) {
return a + b + c;
}
}


Di sini, metode tambah ada tiga versi (overloading):
  • Versi pertama menerima dua parameter int.
  • Versi kedua menerima dua parameter double.
  • Versi ketiga menerima tiga parameter int.

Meskipun nama metode sama, mereka melakukan operasi yang sama (penjumlahan), tetapi dengan parameter yang berbeda.

2. Method Overriding

Apa itu? Method overriding terjadi ketika kelas anak (subclass) menulis ulang atau mengganti implementasi metode yang ada di kelas induk (superclass) dengan nama, tipe, dan parameter yang sama.

Tujuan: Tujuan dari method overriding adalah memberikan implementasi khusus dari metode di kelas anak yang berbeda dari metode di kelas induk.

Kapan digunakan? Method overriding digunakan ketika kita ingin memberikan perilaku yang berbeda di kelas turunan dibandingkan dengan perilaku default di kelas induknya.

Contoh:

public class Hewan {
public void bersuara() {
System.out.println("Hewan mengeluarkan suara");
}
}

public class Anjing extends Hewan {
@Override
public void bersuara() {
System.out.println("Anjing menggonggong");
}
}

Di sini, metode bersuara di kelas Anjing meng-override metode bersuara dari kelas Hewan. Jadi, ketika metode bersuara dipanggil dari objek Anjing, output-nya akan berbeda dengan objek Hewan.

Perbedaan Utama:

Method Overloading:
  • Terjadi di satu kelas yang sama.
  • Metode yang di-overload harus memiliki parameter yang berbeda (baik jumlah atau tipe datanya).
  • Digunakan untuk menyediakan beberapa cara untuk melakukan tugas yang sama dengan input yang berbeda.

Method Overriding:
  • Terjadi antara kelas induk dan kelas anak (pewarisan/inheritance).
  • Metode yang di-override harus memiliki nama, parameter, dan tipe data yang sama persis.
  • Digunakan untuk mengganti atau menyesuaikan perilaku metode di kelas anak (subclass).
Contoh Singkat Perbandingan:


Overloading:

public class Kalkulator {
public int hitung(int a, int b) {
return a + b;
}

public double hitung(double a, double b) {
return a + b;
}
}


Di sini, metode hitung di-overload dengan parameter berbeda (int dan double).

Overriding:

public class Hewan {
public void bersuara() {
System.out.println("Hewan mengeluarkan suara");
}
}

public class Kucing extends Hewan {
@Override
public void bersuara() {
System.out.println("Kucing mengeong");
}
}


Di sini, metode bersuara di-override oleh kelas Kucing, mengganti perilaku default dari kelas Hewan.

Kesimpulan:
  • Overloading: Metode yang sama di satu kelas, tetapi dengan parameter yang berbeda.
  • Overriding: Mengganti metode dari kelas induk di kelas anak dengan implementasi baru.

Mengetahui dengan jelas tentang konsep lanjutan berorientasi menggunakannya dengan baik

  •  Package 
  •  Pewarisan 
  •  Enkapsulasi 
  •  Polimorfisme 
  •  Interface 
  •  Abstraksi

Berikut penjelasan mengenai konsep-konsep lanjutan dalam Pemrograman Berorientasi Objek (PBO) beserta cara menggunakannya:

1. Package
Apa itu? Package adalah wadah atau folder yang mengorganisir kelas-kelas dan antarmuka dalam program Java agar lebih terstruktur. Package membantu kita mengelompokkan kelas-kelas yang mirip fungsinya.

Contoh penggunaan: Jika kamu memiliki beberapa kelas terkait kendaraan (seperti Mobil, Motor, Sepeda), kamu bisa menempatkan semuanya dalam satu package bernama kendaraan untuk memudahkan pengelolaan.

package kendaraan;

public class Mobil {
    // isi kelas
}

Manfaat: Package membantu mengatur kode dengan lebih baik, terutama dalam proyek besar, dan menghindari konflik nama kelas yang mungkin sama.

2. Pewarisan (Inheritance)
Apa itu? Pewarisan adalah konsep di mana sebuah kelas anak (subclass) bisa mewarisi properti dan metode dari kelas induk (superclass). Dengan pewarisan, kelas anak dapat menggunakan atau mengubah perilaku dari kelas induk tanpa harus menulis ulang kodenya.

Contoh penggunaan: Misalnya, kamu memiliki kelas induk Hewan, dan kelas anak Anjing mewarisi semua atribut dan metode dari Hewan.

public class Hewan {
    public void bergerak() {
        System.out.println("Hewan bergerak");
    }
}

public class Anjing extends Hewan {
    public void bersuara() {
        System.out.println("Anjing menggonggong");
    }
}

Manfaat: Pewarisan memungkinkan kode yang bisa digunakan kembali dan memudahkan pengelolaan hubungan antara objek.

3. Enkapsulasi (Encapsulation)
Apa itu? Enkapsulasi adalah konsep di mana data dalam objek disembunyikan dari luar kelas dengan menggunakan modifier akses (seperti private, protected), dan hanya bisa diakses melalui metode getter dan setter.

Contoh penggunaan: Jika kita memiliki kelas Mobil, atribut seperti kecepatan mungkin disembunyikan, dan hanya bisa diubah melalui metode khusus.

public class Mobil {
    private int kecepatan;

    public int getKecepatan() {
        return kecepatan;
    }

    public void setKecepatan(int kecepatanBaru) {
        if (kecepatanBaru >= 0) {
            this.kecepatan = kecepatanBaru;
        }
    }
}

Manfaat: Enkapsulasi melindungi data, menjaga keamanan informasi, dan memberikan kontrol penuh terhadap cara data dimanipulasi.

4. Polimorfisme (Polymorphism)
Apa itu? Polimorfisme adalah kemampuan sebuah objek untuk mengambil banyak bentuk. Polimorfisme memungkinkan metode yang sama dipanggil dengan cara yang berbeda, tergantung dari objek mana yang memanggilnya.

Polimorfisme Statik (Overloading): Satu metode dengan nama yang sama tetapi parameter berbeda.
Polimorfisme Dinamis (Overriding): Metode di kelas anak mengganti metode di kelas induk.
Contoh penggunaan: Misalnya, kelas Hewan memiliki metode bersuara, tetapi kelas Anjing dan Kucing bisa memberikan implementasi yang berbeda pada metode tersebut.

public class Hewan {
    public void bersuara() {
        System.out.println("Hewan mengeluarkan suara");
    }
}

public class Kucing extends Hewan {
    @Override
    public void bersuara() {
        System.out.println("Kucing mengeong");
    }
}

public class Anjing extends Hewan {
    @Override
    public void bersuara() {
        System.out.println("Anjing menggonggong");
    }
}

Manfaat: Polimorfisme memungkinkan fleksibilitas dan penggunaan kode yang lebih dinamis dalam aplikasi.

5. Interface
Apa itu? Interface adalah kontrak yang mendefinisikan seperangkat metode yang harus diimplementasikan oleh kelas yang menggunakannya. Interface tidak memiliki implementasi metode, hanya deklarasinya.

Contoh penggunaan: Misalnya, kamu membuat interface Kendaraan yang mendefinisikan metode bergerak dan berhenti. Setiap kelas yang mengimplementasikan Kendaraan harus mendefinisikan metode tersebut.

public interface Kendaraan {
    void bergerak();
    void berhenti();
}

public class Mobil implements Kendaraan {
    @Override
    public void bergerak() {
        System.out.println("Mobil bergerak");
    }

    @Override
    public void berhenti() {
        System.out.println("Mobil berhenti");
    }
}

Manfaat: Interface memberikan fleksibilitas dalam mendesain kode, memungkinkan banyak kelas berbeda untuk menggunakan metode yang sama tetapi dengan implementasi yang berbeda.

6. Abstraksi (Abstraction)
Apa itu? Abstraksi adalah konsep di mana kita hanya menampilkan fitur penting dari sebuah objek dan menyembunyikan detail yang tidak relevan. Ini bisa dilakukan dengan menggunakan kelas abstrak atau interface.

Contoh penggunaan: Sebuah kelas Kendaraan mungkin abstrak, dan kelas turunan seperti Mobil atau Motor akan memberikan implementasi spesifik.

public abstract class Kendaraan {
    public abstract void bergerak();
}

public class Mobil extends Kendaraan {
    @Override
    public void bergerak() {
        System.out.println("Mobil bergerak");
    }
}

Manfaat: Abstraksi memungkinkan fokus pada apa yang penting dan menyederhanakan pemrograman dengan menyembunyikan detail yang rumit.

Kesimpulan:
  • Package: Mengorganisir kode dengan lebih rapi dan mencegah konflik nama.
  • Pewarisan: Membuat kelas anak mewarisi properti dan metode dari kelas induk.
  • Enkapsulasi: Menyembunyikan data dan hanya memperbolehkan akses melalui metode tertentu.
  • Polimorfisme: Memungkinkan metode yang sama digunakan secara berbeda di kelas yang berbeda.
  • Interface: Mendefinisikan metode yang harus diimplementasikan oleh kelas lain.
  • Abstraksi: Menyembunyikan detail implementasi dan fokus pada fungsi utama.
  • Semua konsep ini saling melengkapi dan membantu dalam membuat program yang terstruktur, mudah dipelihara, dan fleksibel.
Dalam Pemrograman Berorientasi Objek (PBO), pemahaman dan penggunaan konsep-konsep seperti Package, Pewarisan, Enkapsulasi, Polimorfisme, Interface, dan Abstraksi sangat penting untuk menciptakan kode yang terstruktur, efisien, dan mudah dikelola.

  • Package mengorganisir kelas-kelas agar lebih teratur, mempermudah pengelolaan proyek yang besar.
  • Pewarisan memungkinkan penggunaan kembali kode, meminimalkan penulisan ulang, dan membentuk hubungan hierarkis antar kelas.
  • Enkapsulasi melindungi data dengan hanya memberikan akses melalui metode tertentu, menjaga keamanan dan integritas data.
  • Polimorfisme memberikan kemampuan fleksibel untuk satu metode bekerja secara berbeda tergantung objek yang memanggilnya.
  • Interface mendefinisikan kontrak metode yang harus diimplementasikan, membantu konsistensi dan fleksibilitas.
  • Abstraksi menyembunyikan detail yang kompleks, memungkinkan pengembang fokus pada fitur yang paling relevan.

Secara keseluruhan, konsep-konsep ini bekerja bersama untuk membuat program yang modular, mudah di-maintenance, dan fleksibel, yang siap untuk diubah atau diperluas sesuai kebutuhan tanpa harus mengorbankan efisiensi atau keamanan. Penerapan konsep-konsep ini juga mendorong reusabilitas kode, pengurangan redundansi, serta memudahkan tim dalam bekerja sama pada proyek skala besar.

Post a Comment for "Konsep Pemrograman Berorientasi Objek Dalam Bahasa Java "