unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Kelas

Kelas #

Dalam bahasa pemrograman Java, kelas (class) adalah cetak biru atau template dari objek. Kelas mendefinisikan struktur data dan perilaku (melalui atribut/properti dan metode) yang dimiliki oleh objek yang dihasilkan dari kelas tersebut. Dengan kata lain, kelas adalah definisi yang mendasari bagaimana sebuah objek harus dibuat dan bagaimana objek tersebut berinteraksi di dalam program.

Konsep Dasar #

  1. Atribut (Properties/Fields/Variables): Atribut adalah variabel yang mendefinisikan karakteristik atau data yang dimiliki oleh objek. Atribut dideklarasikan di dalam kelas.

  2. Metode (Methods): Metode adalah fungsi yang dideklarasikan di dalam kelas dan digunakan untuk mendefinisikan perilaku atau aksi yang dapat dilakukan oleh objek.

  3. Objek (Instance): Objek adalah realisasi atau instansiasi dari sebuah kelas. Setiap objek memiliki salinan atribut dan dapat menggunakan metode yang didefinisikan dalam kelas.

  4. Konstruktor (Constructor): Konstruktor adalah metode khusus yang dipanggil saat objek dibuat. Konstruktor biasanya digunakan untuk menginisialisasi atribut atau melakukan pengaturan awal yang diperlukan.

Deklarasi Kelas Sederhana #

public class Mobil {
    // Atribut
    String merk;
    String warna;
    int kecepatan;

    // Konstruktor
    public Mobil(String merk, String warna, int kecepatan) {
        this.merk = merk;
        this.warna = warna;
        this.kecepatan = kecepatan;
    }

    // Metode
    public void tambahKecepatan(int kenaikan) {
        kecepatan += kenaikan;
        System.out.println("Kecepatan sekarang: " + kecepatan + " km/h");
    }

    public void kurangiKecepatan(int pengurangan) {
        kecepatan -= pengurangan;
        System.out.println("Kecepatan sekarang: " + kecepatan + " km/h");
    }

    public void infoMobil() {
        System.out.println("Merk: " + merk);
        System.out.println("Warna: " + warna);
        System.out.println("Kecepatan: " + kecepatan + " km/h");
    }
}

Penjelasan:

  • Atribut: merk, warna, dan kecepatan adalah atribut yang mendeskripsikan karakteristik sebuah mobil.
  • Konstruktor: Konstruktor Mobil(String merk, String warna, int kecepatan) digunakan untuk menginisialisasi objek dengan nilai awal.
  • Metode: tambahKecepatan, kurangiKecepatan, dan infoMobil adalah metode yang digunakan untuk mengubah atau menampilkan informasi tentang mobil.

Menginstansiasi Objek #

Untuk menggunakan kelas Mobil, kita perlu membuat objek dari kelas tersebut.

public class Main {
    public static void main(String[] args) {
        // Membuat objek Mobil
        Mobil mobilSaya = new Mobil("Toyota", "Merah", 0);

        // Menggunakan metode
        mobilSaya.tambahKecepatan(50);
        mobilSaya.kurangiKecepatan(10);
        mobilSaya.infoMobil();
    }
}

Penjelasan:

  • Instansiasi: Mobil mobilSaya = new Mobil("Toyota", "Merah", 0); membuat objek mobilSaya dari kelas Mobil dengan atribut merk = “Toyota”, warna = “Merah”, dan kecepatan = 0.
  • Metode: mobilSaya.tambahKecepatan(50); menambah kecepatan mobil sebesar 50 km/h.

Teknik Implementasi Kelas #

Kelas dan Objek #

  • Kelas: Definisi dari objek, mendeskripsikan atribut dan metode yang dimiliki.
  • Objek: Instansiasi dari kelas, yang berarti membuat variabel yang menyimpan referensi ke objek nyata yang dibuat berdasarkan cetak biru kelas.

Enkapsulasi (Encapsulation) #

Enkapsulasi adalah prinsip di mana atribut dan metode yang tidak perlu diakses dari luar kelas disembunyikan, biasanya dengan menggunakan modifier akses private. Metode getter dan setter biasanya digunakan untuk mengakses dan mengubah nilai dari atribut yang disembunyikan.

public class AkunBank {
    // Atribut dengan akses private
    private String nomorRekening;
    private double saldo;

    // Konstruktor
    public AkunBank(String nomorRekening, double saldoAwal) {
        this.nomorRekening = nomorRekening;
        this.saldo = saldoAwal;
    }

    // Metode untuk mendapatkan saldo (getter)
    public double getSaldo() {
        return saldo;
    }

    // Metode untuk menyetor uang (setter)
    public void setoran(double jumlah) {
        if (jumlah > 0) {
            saldo += jumlah;
            System.out.println("Setoran berhasil. Saldo sekarang: " + saldo);
        }
    }

    // Metode untuk menarik uang
    public void tarik(double jumlah) {
        if (jumlah > 0 && jumlah <= saldo) {
            saldo -= jumlah;
            System.out.println("Penarikan berhasil. Saldo sekarang: " + saldo);
        } else {
            System.out.println("Penarikan gagal. Saldo tidak mencukupi.");
        }
    }
}

Penjelasan:

  • Atribut private: Atribut nomorRekening dan saldo disembunyikan dari akses luar untuk melindungi data.
  • Metode getter dan setter: Digunakan untuk mengakses (getSaldo()) dan mengubah nilai (setoran(double jumlah)) atribut saldo.

Pewarisan (Inheritance) #

Pewarisan adalah konsep di mana sebuah kelas (subkelas) dapat mewarisi atribut dan metode dari kelas lain (superkelas). Subkelas dapat menambahkan atribut dan metode tambahan atau meng-override metode yang ada.

// Superkelas
public class Hewan {
    String nama;
    int umur;

    public Hewan(String nama, int umur) {
        this.nama = nama;
        this.umur = umur;
    }

    public void suara() {
        System.out.println("Hewan membuat suara.");
    }
}

// Subkelas
public class Anjing extends Hewan {
    public Anjing(String nama, int umur) {
        super(nama, umur);
    }

    @Override
    public void suara() {
        System.out.println("Anjing menggonggong: Guk guk!");
    }
}

public class Main {
    public static void main(String[] args) {
        Anjing anjing = new Anjing("Buddy", 3);
        anjing.suara(); // Output: Anjing menggonggong: Guk guk!
    }
}

Penjelasan:

  • Pewarisan: Anjing adalah subkelas dari Hewan, mewarisi atribut nama dan umur, serta metode suara().
  • Override: Metode suara() di Anjing meng-override metode suara() dari Hewan.

Polimorfisme #

Polimorfisme memungkinkan objek untuk diakses melalui referensi dari kelas induknya, dengan tetap mengeksekusi metode yang spesifik dari objek tersebut.

public class Main {
    public static void main(String[] args) {
        Hewan hewan1 = new Anjing("Buddy", 3);
        Hewan hewan2 = new Kucing("Kitty", 2);

        hewan1.suara(); // Output: Anjing menggonggong: Guk guk!
        hewan2.suara(); // Output: Kucing mengeong: Meong!
    }
}

Penjelasan:

  • Polimorfisme: hewan1 dan hewan2 keduanya bertipe Hewan, tetapi mereka memanggil metode suara() dari kelas spesifik masing-masing (Anjing dan Kucing).

Abstraksi (Abstraction) #

Abstraksi adalah konsep untuk menyembunyikan detail implementasi dan hanya menunjukkan fitur penting dari objek. Ini bisa dicapai dengan menggunakan kelas abstrak atau interface.

Kelas Abstrak:

abstract class Kendaraan {
    abstract void bergerak();
}

class Mobil extends Kendaraan {
    void bergerak() {
        System.out.println("Mobil bergerak dengan roda.");
    }
}

public class Main {
    public static void main(String[] args) {
        Kendaraan mobil = new Mobil();
        mobil.bergerak(); // Output: Mobil bergerak dengan roda.
    }
}

Penjelasan:

  • Kelas Abstrak: Kendaraan adalah kelas abstrak yang mendefinisikan metode bergerak() tanpa implementasi. Kelas Mobil mengimplementasikan metode bergerak().

Kesimpulan #

Kelas adalah fondasi utama dalam pemrograman berorientasi objek di Java, memungkinkan Anda untuk mengelompokkan data dan perilaku terkait ke dalam satu entitas yang terstruktur. Dengan menggunakan teknik seperti enkapsulasi, pewarisan, polimorfisme, dan abstraksi, Anda dapat menulis kode yang lebih modular, mudah dipelihara, dan dapat digunakan kembali. Implementasi kelas dengan teknik yang tepat memungkinkan pembuatan program yang lebih efisien dan fleksibel.

« Fungsi
Interface »