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. Encapsulation (#43)
Inheritance Class anak mewarisi perilaku class induk. Inheritance (#44)
Polymorphism Satu cara panggil, banyak bentuk perilaku. Polymorphism (#45)
Abstraction Fokus ke “apa yang bisa dilakukan”, bukan “bagaimana di dalam”. Abstraction (#46)

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__ (#42)
  4. Encapsulation & @property (#43)
  5. Inheritance & super() (#44)
  6. Polymorphism (#45)
  7. Abstraction & ABC (#46)
  8. Composition vs Inheritance (#47)
  9. Special methods & dataclass (#48)
  10. Capstone: sistem perpustakaan mini (#49)

Domain contoh sepanjang seri: perpustakaan / inventaris buku — sederhana, mudah divisualisasikan, dan bisa dihubungkan ke IoT lewat OOP MicroPython / ESP32 (#51) serta pintu web Class di Flask / FastAPI (#52) (Tier 2, setelah Capstone).

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: 10/10 artikel live. Lanjut Class & Object (#41). Capstone: sistem perpustakaan mini (#49).