Praktikum PBO

Konsep Dasar OOP

Pengenalan Class, Object, Attribute, dan Constructor dengan analogi Mahasiswa IT.

1. Pengantar & Analogi Dunia Nyata

Selamat datang di dunia Object-Oriented Programming (OOP)! Kalau kamu mahasiswa IT, pasti sering dengar istilah ini. Tapi apa sih sebenarnya OOP itu?

Bayangkan kehidupan di kampus. Kampus punya Formulir Pendaftaran Mahasiswa Baru. Formulir itu sendiri hanyalah selembar kertas kosong dengan kolom-kolom (Nama, NIM, Prodi). Formulir kosong ini belum bisa disebut "Mahasiswa", dia cuma cetakan atau blueprint.

Nah, ketika kamu mengisi formulir itu dengan data dirimu ("Fifi", "125140001", "Informatika"), barulah formulir itu mewakili satu individu nyata. Temanmu mengisi formulir lain dengan datanya ("Siti", "67890", "Sistem Informasi").

Analogi OOP

Dalam OOP:

  • Formulir Kosong = Class (Konsep/Cetakan)
  • Formulir Terisi (Individu) = Object (Barang Jadi)

2. Konsep Teknis

OOP adalah paradigma pemrograman yang melihat segala sesuatu sebagai Objek yang saling berinteraksi, bukan sekadar urutan instruksi (seperti di pemrograman prosedural).

Mengapa OOP?

Kenapa kita harus repot-repot pakai OOP?

  1. Modularity: Kode dipecah menjadi bagian-bagian kecil (Object) yang independen. Kalau ada error di Student, kita tidak perlu mengobrak-abrik kode Dosen.
  2. Reusability: Class yang sudah dibuat bisa dipakai berkali-kali di proyek lain.
  3. Easier Debugging: Karena kode terstruktur per-objek, melacak bug jadi lebih mudah.

Setiap objek memiliki dua hal utama:

  1. Attribute (State): Data yang dimiliki objek (contoh: Nama, NIM).
  2. Behavior (Method): Apa yang bisa dilakukan objek (contoh: Belajar, Tidur).

3. Komponen Utama

A. Class (Cetakan)

Class adalah template atau blueprint. Dia mendefinisikan "Mahasiswa itu punya data apa aja sih?" dan "Mahasiswa bisa ngapain aja sih?".

Naming Convention

Nama Class di Java sebaiknya menggunakan format PascalCase. Contoh: Student, AcademicRecord, FinalProject.

B. Object (Wujud Nyata)

Object adalah hasil instansiasi dari Class. Satu Class bisa menghasilkan ribuan Object yang berbeda-beda datanya (Mahasiswa A, Mahasiswa B, dst).

C. Attribute (Variable)

Attribute adalah variabel yang disimpan di dalam object. Ini adalah "ciri-ciri" dari object tersebut.

  • Contoh: nama, nim, prodi.

Default Values

Jika kita tidak mengisi nilai attribute saat object dibuat, Java akan memberikan nilai default:

  • String (Object) -> null (Kosong/Hampa)
  • int / double (Angka) -> 0 / 0.0
  • boolean -> false

D. Constructor (Setup Awal)

Constructor adalah method spesial yang namanya SAMA PERSIS dengan nama Class. Fungsinya: Dijalankan pertama kali saat object dibuat (new).

Constructor tidak memiliki return type (seperti void atau int). Jika kamu menulis public void Student(), itu akan dianggap sebagai method biasa, bukan Constructor!

E. Method (Perilaku)

Method adalah fungsi yang dimiliki object. Ini menunjukkan aksi apa yang bisa dilakukan.

  • Contoh: study(), code(), skipClass().

F. Keyword this

Sering bingung kenapa ada this.nama = nama? this adalah cara sebuah object menunjuk ke dirinya sendiri.

  • this.nama: Mengacu pada attribute nama milik object (Global di class).
  • nama: Mengacu pada parameter/variabel lokal.

Ini sangat berguna untuk menghindari ambiguitas nama variabel.

4. Studi Kasus Koding (Java)

Mari kita implementasikan konsep di atas ke dalam kode Java.

File 1: Student.java (Blueprint)

public class Student {
    // 1. ATTRIBUT (Data)
    // Varia```java
public class Student {
    // 1. ATTRIBUT (Data)
    // Variabel pakai Bahasa Indonesia agar lebih relate
    String nama;
    String nim;
    String prodi;

    // 2. CONSTRUCTOR (Setup Awal)
    // Namanya HARUS sama dengan nama Class
    public Student(String nama, String nim, String prodi) {
        System.out.println("--> Mendaftarkan mahasiswa baru: " + nama);
        
        // Menggunakan 'this' untuk membedakan variable class vs parameter
        this.nama = nama;
        this.nim = nim;
        this.prodi = prodi;
    }

    // 3. METHOD (Perilaku)
    // Nama Method pakai Bahasa Inggris (Standar Internasional)
    
    public void study() {
        // Di sini kita bisa pakai 'nama' langsung tanpa 'this'
        // karena tidak ada parameter yang namanya sama.
        System.out.println(nama + " (" + prodi + ") sedang belajar OOP.");
    }

    public void code(String bahasa) {
        System.out.println(nama + " sedang ngoding pakai bahasa " + bahasa + "...");
    }

    public void sleep() {
        System.out.println(nama + " sedang tidur di kelas. zzz...");
    }
}

File 2: Main.java (Eksekusi)

public class Main {
    public static void main(String[] args) {
        // MEMBUAT OBJECT (Instansiasi)
        // Saat 'new Student(...)' dipanggil, Constructor otomatis jalan!
        
        // Mahasiswa 1
        Student mhs1 = new Student("Galih", "124140001", "Teknik Informatika");
        
        // Mahasiswa 2
        Student mhs2 = new Student("Fifi", "125140001", "Teknik Informatika");

        System.out.println("\n--- Kegiatan Kampus ---");

        // MEMANGGIL METHOD (Menyuruh object beraksi)
        mhs1.study();
        mhs1.code("Java");

        mhs2.study();
        mhs2.sleep();
    }
}

5. Bedah Kode

  1. public class Student: Kita mendefinisikan template mahasiswa.
  2. String nama;: Setiap mahasiswa pasti punya nama (Attribute). Jika tidak diisi, isinya null.
  3. public Student(...): Ini Constructor. Perhatikan tidak ada void atau tipe return. Dia menerima input (nama, nim, prodi) dan menyimpannya ke dalam object menggunakan this.nama = nama.
  4. new Student(...): Keyword new adalah perintah untuk "Mencetak Formulir". Java akan menyiapkan memori baru khusus untuk object ini, lalu memanggil Constructor.
  5. mhs1.study(): Kita menyuruh object mhs1 untuk menjalankan aksi belajar. Outputnya akan sesuai dengan nama mhs1 (Galih).
  6. mhs2.study(): Kita menyuruh object mhs2 belajar. Outputnya sesuai nama mhs2 (Fifi).

6. Latihan

Sebuah dealer mobil ingin mendigitalkan sistem katalog mereka. Setiap mobil memiliki merek dan tahun pembuatan yang perlu dicatat.

Buatlah class Car dengan spesifikasi berikut:

1. Attributes

  • merk (String): Merek mobil (contoh: "Toyota").
  • tahun (int): Tahun pembuatan mobil.

2. Constructor

  • Menerima parameter merk dan tahun.
  • Menginisialisasi attribute dengan nilai parameter tersebut.

3. Method

  • describe(): Mencetak deskripsi mobil dengan format: Mobil: <merk>, Tahun: <tahun>

Output yang Diharapkan

Mobil: Toyota, Tahun: 2020
Main.java

7. Kesimpulan

  • Class adalah cetakannya (Formulir).
  • Object adalah hasil jadinya (Lembar formulir yang sudah diisi).
  • Constructor adalah proses pengisian data awal saat object pertama kali dibuat.
  • Method adalah aksi yang bisa dilakukan oleh object tersebut.
  • this adalah cara object menyebut dirinya sendiri ("Aku").

Paham konsep ini? Bagus! Sekarang kita lanjut ke materi berikutnya: bagaimana cara melindungi data-data ini agar tidak diacak-acak sembarangan (Encapsulation).

On this page