Pendahuluan — Seri 3: dari perangkat ke cara berpikir

Seri ESP32 di Koding Indonesia mengajarkan membangun perangkat: sensor, MQTT, dashboard, sampai capstone greenhouse (#39). Seri 3 ini bergeser ke fondasi yang sama pentingnya: merapikan pikiran & kode supaya proyek (IoT, web, script) tidak jadi spaghetti.

Artikel ini adalah pembuka Seri 3 — Pemrograman Berorientasi Objek (OOP) dengan Python. Kamu belum wajib pernah memakai class. Yang dibutuhkan: rasa ingin paham kenapa orang bilang “pikirkan objek dulu, baru tulis kode”.

Prasyarat ringan: pernah menulis variabel dan fungsi sederhana (bahasa apa saja). Kalau kamu dari dunia Arduino/C++, bagian soft-landing Python di bawah akan membantu. Contoh Python di ekosistem Kindo sudah ada di subscriber MQTT → MySQL (#18) — artikel itu fokus IoT; artikel ini fokus cara berpikir OOP.

Soft-landing Python (5 menit)

OOP di Seri 3 memakai Python 3.11+. Instal dari python.org (centang “Add Python to PATH” di Windows), lalu cek di terminal:

python --version
# contoh keluaran: Python 3.12.3

Dua sintaks yang cukup untuk membaca contoh di artikel ini:

# variabel
judul = "Dasar OOP"
halaman = 120

# fungsi
def sapa(nama):
    return f"Halo, {nama}!"

print(sapa("Anton"))

Kalau perintah python tidak ketemu di Windows, coba py --version. Editor: VS Code + ekstensi Python sudah cukup.

Masalah yang OOP coba selesaikan

Bayangkan kamu mengelola data buku di perpustakaan mini. Versi prosedural (data + fungsi terpisah) cepat terlihat berantakan:

# Data tersebar di beberapa dict / list
buku_a = {"judul": "Belajar Python", "penulis": "Sari", "tahun": 2024}
buku_b = {"judul": "ESP32 Praktis", "penulis": "Budi", "tahun": 2023}

def info_buku(buku):
    return f'{buku["judul"]} oleh {buku["penulis"]} ({buku["tahun"]})'

def pinjam(buku, anggota):
    # aturan pinjam tersebar di banyak fungsi…
    print(f'{anggota} meminjam {buku["judul"]}')

print(info_buku(buku_a))
pinjam(buku_b, "Rina")

Semakin banyak fitur (denda, e-book, majalah, antrian pinjam), semakin banyak fungsi yang harus “mengingat” struktur dict yang sama. Satu typo key ("Judul" vs "judul") sudah cukup bikin bug diam-diam.

OOP mengajak kamu menggabungkan data dan perilaku yang saling terkait ke dalam satu konsep: objek. Class adalah cetakannya; object adalah barang konkretnya.

Class vs object — cetakan dan barangnya

class Buku Cetakan / blueprint judul · penulis · tahun + info() · pinjam() object buku_a "Belajar Python" · Sari · 2024 satu barang konkret object buku_b "ESP32 Praktis" · Budi · 2023 cetakan sama, data beda buat instance buat instance
Satu class bisa menghasilkan banyak object — masing-masing punya state sendiri.

Cuplikan “rasa” OOP (detail sintaks class di Class & Object (#41)):

class Buku:
    def __init__(self, judul, penulis, tahun):
        self.judul = judul
        self.penulis = penulis
        self.tahun = tahun

    def info(self):
        return f"{self.judul} oleh {self.penulis} ({self.tahun})"

buku_a = Buku("Belajar Python", "Sari", 2024)
buku_b = Buku("ESP32 Praktis", "Budi", 2023)
print(buku_a.info())
print(buku_b.info())

buku_a dan buku_b adalah dua object berbeda dari cetakan yang sama. Itulah inti mental model OOP untuk pemula.

Empat pilar OOP — preview singkat

Seri 3 akan membahas empat ide klasik satu per satu. Di artikel pembuka ini cukup kenalan:

Pilar Inti dalam satu kalimat Bahas di
Encapsulation Sembunyikan detail; tampilkan antarmuka yang aman. Artikel Encapsulation (menyusul)
Inheritance Class anak mewarisi perilaku class induk. Artikel Inheritance (menyusul)
Polymorphism Satu cara panggil, banyak bentuk perilaku. Artikel Polymorphism (menyusul)
Abstraction Fokus ke “apa yang bisa dilakukan”, bukan “bagaimana di dalam”. Artikel Abstraction (menyusul)

Jangan hafalkan definisi formal dulu. Yang penting: OOP bukan sekadar menulis kata class — melainkan mengatur tanggung jawab di kode. Detail sintaks class ada di Class dan Object Pertama (#41).

Kapan kamu tidak perlu OOP?

OOP bukan agama. Untuk skrip 20 baris yang sekali jalan, dict + fungsi sering lebih jujur dan cepat. Pakai OOP saat:

  • Ada banyak data sejenis yang sering diperlakukan sama (banyak buku, banyak sensor node, banyak user)
  • Aturan bisnis mulai tersebar di banyak fungsi
  • Kamu ingin batas jelas: “modul A tidak boleh mengutak-atik isi dalam B”

Kalau semua cukup dengan satu fungsi main() yang linear — tunggu sampai rasa “berantakan” muncul, baru refactor ke class. Itu juga bagian dari berpikir dewasa sebagai programmer.

Pola Dasar — berpikir objek sebelum coding

  1. 1
    Sebut benda dunia nyata Buku, anggota perpustakaan, sensor, pompa — bukan “data1” dan “fungsi2”.
  2. 2
    Catat data yang melekat Untuk Buku: judul, penulis, tahun. Itu calon attribute.
  3. 3
    Catat aksi yang masuk akal info(), pinjam(), kembalikan() — calon method.
  4. 4
    Buat satu contoh konkret di kepala “buku_a = Belajar Python milik Sari, 2024” — itu object.
  5. 5
    Baru tulis class Sintaks Python menyusul di #41. Mental model dulu, keyboard kemudian.
Ringkas: benda → data → aksi → contoh → class.

Indeks rencana Seri 3 (OOP Python)

Artikel ini adalah #40 (ini) — pembuka Seri 3. Jalur linear yang akan kita tempuh:

  1. #40 (ini) — Mengenal OOP & cara berpikir objek
  2. Class dan object pertama di Python (#41)
  3. Attribute, method, dan constructor __init__
  4. Encapsulation & @property
  5. Inheritance
  6. Polymorphism
  7. Abstraction & ABC
  8. Composition vs inheritance
  9. Special methods & dataclass
  10. Capstone: sistem perpustakaan mini

Domain contoh sepanjang seri: perpustakaan / inventaris buku — sederhana, mudah divisualisasikan, dan bisa dihubungkan ke IoT di jalur opsional nanti (MicroPython).

Latihan singkat

  1. Pilih satu benda di proyekmu (buku, sensor DHT, lampu relay). Tulis 3 data + 2 aksi di kertas.
  2. Bandingkan: kalau masih dict + fungsi, di mana bug paling mungkin muncul?
  3. (Opsional) Buka subscriber MQTT → MySQL (#18) dan tandai mana yang “prosedural murni” vs mana yang sudah terasa seperti tanggung jawab tersendiri (subscriber, parser, database).

FAQ singkat

Apakah OOP hanya untuk Python?
Tidak. Konsepnya ada di Java, C++, C#, PHP, bahkan sebagian di firmware C++ Arduino. Python dipilih karena sintaksnya ramah untuk belajar konsep.

Apakah saya harus hapus semua dict?
Tidak. Dict tetap sah. Class berguna saat data + aturan mulai “hidup” bersama.

Kenapa tidak langsung inheritance?
Karena banyak orang terburu mewarisi class sebelum paham object sederhana. Urutan Seri 3 sengaja linear.

Kesimpulan & langkah berikutnya

OOP adalah cara mengelompokkan data + perilaku menjadi object dari sebuah class (cetakan). Empat pilar menunggu di artikel Encapsulation sampai Abstraction; hari ini cukup punya mental model dan Python yang siap jalan.

Lanjut ke Class dan Object Pertama di Python (#41): kita menulis class Buku dari nol, membuat beberapa instance, dan melihat identitas tiap object.

Seri 3 progress: 1/10 artikel live di #40; lanjut #41. Capstone di akhir seri: sistem perpustakaan mini.