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
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
Sebut benda dunia nyata Buku, anggota perpustakaan, sensor, pompa — bukan “data1” dan “fungsi2”.
-
2
Catat data yang melekat Untuk Buku: judul, penulis, tahun. Itu calon attribute.
-
3
Catat aksi yang masuk akal info(), pinjam(), kembalikan() — calon method.
-
4
Buat satu contoh konkret di kepala “buku_a = Belajar Python milik Sari, 2024” — itu object.
-
5
Baru tulis class Sintaks Python menyusul di #41. Mental model dulu, keyboard kemudian.
Indeks rencana Seri 3 (OOP Python)
Artikel ini adalah #40 (ini) — pembuka Seri 3. Jalur linear yang akan kita tempuh:
- #40 (ini) — Mengenal OOP & cara berpikir objek
- Class dan object pertama di Python (#41)
- Attribute, method, dan constructor
__init__ - Encapsulation &
@property - Inheritance
- Polymorphism
- Abstraction & ABC
- Composition vs inheritance
- Special methods & dataclass
- 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
- Pilih satu benda di proyekmu (buku, sensor DHT, lampu relay). Tulis 3 data + 2 aksi di kertas.
- Bandingkan: kalau masih dict + fungsi, di mana bug paling mungkin muncul?
- (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.