PBO 1 — Pengantar Pemrograman Berorientasi Objek (PBO) dan Python
Tujuan Pembelajaran:
Pada akhir pertemuan ini, mahasiswa diharapkan mampu:
- Menjelaskan perbedaan mendasar antara paradigma pemrograman prosedural dan berorientasi objek.
- Memahami konsep dasar dari Pemrograman Berorientasi Objek.
- Merefresh kembali dasar-dasar pemrograman Python yang diperlukan sebagai fondasi PBO.
- Mempersiapkan lingkungan pengembangan Python.
A. Pengantar Paradigma Pemrograman
Sebelum kita menyelami PBO, mari kita pahami dulu apa itu paradigma pemrograman. Bayangkan Anda ingin membangun sebuah rumah. Ada banyak cara untuk membangunnya, kan? Ada yang suka gaya minimalis, ada yang tradisional, ada yang modern. Setiap gaya punya pendekatan, aturan, dan filosofi sendiri.
Nah, dalam pemrograman, paradigma pemrograman itu seperti gaya atau filosofi dalam membangun sebuah program. Ini adalah cara kita berpikir dan menstrukturkan kode untuk memecahkan masalah. Secara umum, ada dua paradigma utama yang sering kita bandingkan:
1. Pemrograman Prosedural
- Filosofi: Program adalah urutan langkah-langkah (prosedur atau fungsi) yang harus dieksekusi secara berurutan untuk mencapai tujuan tertentu. Fokus utamanya adalah “apa yang harus dilakukan”.
- Struktur: Kode diatur dalam fungsi-fungsi atau prosedur-prosedur terpisah. Data seringkali terpisah dari fungsi yang mengoperasikannya.
- Analogi: Resep masakan. Resep adalah urutan langkah-langkah: “potong bawang”, “tumis bumbu”, “masukkan ayam”, dll. Setiap langkah (prosedur) menjelaskan suatu aksi.
- Kelebihan: Sederhana untuk program kecil, mudah dipahami urutan eksekusinya.
- Kekurangan: Sulit dikelola untuk program besar (kompleksitas meningkat), data bisa diakses dan dimodifikasi di mana saja (risiko bug), sulit untuk digunakan kembali (reuse) kode.
- Contoh Kode (Python - Konsep Prosedural):
1 2 3 4 5 6 7 8 9 10 11
# Program untuk menghitung luas persegi panjang panjang = 10 lebar = 5 def hitung_luas(p, l): return p * l luas = hitung_luas(panjang, lebar) print(f"Luas persegi panjang: {luas}") # Data (panjang, lebar) terpisah dari fungsi (hitung_luas)
2. Pemrograman Berorientasi Objek (PBO / OOP - Object-Oriented Programming)
- Filosofi: Program adalah kumpulan objek-objek yang saling berinteraksi. Fokus utamanya adalah “siapa yang melakukan” (objek apa yang bertanggung jawab) dan “bagaimana mereka berinteraksi”. Setiap objek menggabungkan data (informasi) dan perilaku (aksi/fungsi) yang relevan.
- Struktur: Kode diorganisir dalam kelas-kelas, yang berfungsi sebagai cetak biru untuk membuat objek.
- Analogi: Bayangkan smartphone Anda. Smartphone adalah sebuah objek. Ia punya data (merek, model, ukuran layar, sisa baterai) dan perilaku (menelepon, mengambil foto, mengirim pesan, bermain game). Anda tidak perlu tahu bagaimana sirkuit dalamnya bekerja; Anda hanya perlu tahu cara menggunakannya. Setiap aplikasi di smartphone Anda juga bisa dianggap objek yang berbeda.
- Kelebihan:
- Modularitas: Kode lebih terstruktur dan terorganisir.
- Reusable: Objek yang sudah dibuat bisa digunakan kembali di bagian program lain atau di program yang berbeda.
- Maintenance: Lebih mudah memelihara dan mengembangkan program besar.
- Keamanan Data: Data lebih terlindungi.
- Kekurangan: Konsep awal mungkin sedikit lebih kompleks bagi pemula.
B. Konsep Dasar Pemrograman Berorientasi Objek (OOP)
PBO dibangun di atas beberapa pilar utama. Mari kita pahami secara sederhana:
1. Objek (Object)
- Apa itu? Objek adalah instansi atau wujud nyata dari sebuah kelas. Objek memiliki state (data/atribut) dan behavior (perilaku/metode).
- Analogi: Jika mobil adalah sebuah konsep umum (kelas), maka “mobil saya merek Toyota Avanza warna hitam tahun 2023” adalah sebuah objek.
- Atribut (data): Merek (Toyota), Model (Avanza), Warna (Hitam), Tahun (2023).
- Metode (perilaku): NyalakanMesin(), Maju(), Rem(), BelokKiri().
2. Kelas (Class)
- Apa itu? Kelas adalah cetak biru (blueprint) atau template untuk membuat objek. Kelas mendefinisikan struktur (atribut apa saja yang dimiliki objek) dan perilaku (metode apa saja yang bisa dilakukan objek) dari semua objek yang akan dibuat dari kelas tersebut.
- Analogi: Sebuah cetak biru rumah. Cetak biru ini tidak bisa Anda tinggali, tapi dari cetak biru ini, Anda bisa membangun banyak rumah yang memiliki struktur dan fungsi yang sama. Setiap rumah yang dibangun adalah objek dari cetak biru tersebut.
3. Atribut (Attributes) / Properti (Properties)
- Apa itu? Atribut adalah data atau karakteristik yang dimiliki oleh sebuah objek.
- Analogi: Pada objek “mobil saya”, merk, warna, tahun, nomor plat adalah atribut.
4. Metode (Methods)
- Apa itu? Metode adalah fungsi atau perilaku yang dapat dilakukan oleh sebuah objek. Metode beroperasi pada atribut objek.
- Analogi: Pada objek “mobil saya”, menyalakan mesin, berjalan, mengerem, membunyikan klakson adalah metode.
C. Dasar Python
Sebelum kita membuat kelas dan objek, mari kita refresh sedikit dasar-dasar Python yang akan sering kita gunakan.
1. Variabel dan Tipe Data
Python adalah bahasa yang dynamically typed, artinya Anda tidak perlu mendeklarasikan tipe data secara eksplisit.
Tipe Data Umum:
int
(integer): Bilangan bulat (contoh:10
,-5
)float
: Bilangan desimal (contoh:3.14
,-0.5
)str
(string): Teks (contoh:"Halo Dunia"
,'Python'
)bool
(boolean):True
atauFalse
list
: Kumpulan item yang terurut dan bisa diubah (contoh:[1, 2, 3]
,['apel', 'pisang']
)tuple
: Kumpulan item yang terurut dan tidak bisa diubah (contoh:(1, 2)
,('a', 'b')
)dict
(dictionary): Kumpulan pasangan kunci-nilai (key-value pairs) (contoh:{'nama': 'Budi', 'umur': 20}
)
1 2 3 4 5 6 7 8 9 10 11 12 13
nama = "Alice" # str umur = 25 # int tinggi = 170.5 # float is_mahasiswa = True # bool hobi = ["membaca", "coding", "olahraga"] # list koordinat = (10, 20) # tuple data_diri = {"nama": "Budi", "nim": "12345"} # dict # Menggunakan f-string (Python 3.6+) print(f"Nama: {nama}, Umur: {umur}, Hobi: {hobi[0]}") # Menggunakan format() method print("Nama: {}, Umur: {}, Hobi: {}".format(nama, umur, hobi[0]))
2. Operator
Aritmatika:
+
,-
,*
,/
,%
(modulus),**
(pangkat),//
(pembagian bulat)Perbandingan:
==
(sama dengan),!=
(tidak sama dengan),<
,>
,<=
,>=
Logika:
and
,or
,not
1 2 3 4 5
x = 10 y = 3 print(f"x + y = {x + y}") # 13 print(f"x == y: {x == y}") # False print(f"True and False: {True and False}") # False
3. Struktur Kontrol Aliran (Control Flow)
if-elif-else
: Untuk percabangan kondisi.1 2 3 4 5 6 7 8
nilai = 75 if nilai >= 80: keterangan = "Sangat Baik" elif nilai >= 60: keterangan = "Baik" else: keterangan = "Cukup" print(f"Nilai: {nilai}, Keterangan: {keterangan}")
for
Loop: Untuk iterasi pada koleksi (list, string, dll.).1 2 3
buah = ["apel", "pisang", "ceri"] for b in buah: print(f"Saya suka {b}")
while
Loop: Untuk perulangan selama kondisiTrue
.1 2 3 4
hitung = 0 while hitung < 3: print(f"Hitungan ke-{hitung + 1}") hitung += 1
4. Fungsi (Functions)
Blok kode yang dapat digunakan kembali untuk melakukan tugas tertentu.
Didefinisikan dengan kata kunci
def
.1 2 3 4 5 6 7 8 9 10 11
def sapa(nama): """Fungsi ini menyapa seseorang.""" print(f"Halo, {nama}!") def tambah(a, b): """Fungsi ini menjumlahkan dua angka.""" return a + b sapa("Mahasiswa") hasil_tambah = tambah(5, 3) print(f"Hasil penjumlahan: {hasil_tambah}")
D. Persiapan Lingkungan Pengembangan Python
Untuk praktikum, kita memerlukan lingkungan pengembangan yang siap.
Instalasi Python:
- Pastikan Python terinstal di komputer Anda. Anda bisa mengunduhnya dari situs resmi: https://www.python.org/downloads/
- Rekomendasi: Untuk penggunaan akademis dan data science, seringkali disarankan untuk menginstal Anaconda. Anaconda adalah distribusi Python yang sudah dilengkapi dengan banyak pustaka penting dan lingkungan
conda
yang memudahkan manajemen paket. Unduh dari: https://www.anaconda.com/products/individual
Menambahkan Python ke PATH Windows (Jika tidak mencentang add to path saat instalasi atau menggunakan versi portabel): Jika Anda tidak mencentang opsi “Add Python to PATH” saat instalasi, atau jika Anda menginstal Python secara manual (misalnya dengan mengekstrak file zip), Anda perlu menambahkannya secara manual ke variabel lingkungan PATH. Ikuti langkah-langkah berikut:
Cari Lokasi Instalasi Python: Biasanya Python terinstal di
C:\Users\NamaPengguna\AppData\Local\Programs\Python\PythonXX\
(di mana XX adalah versi Python, misalPython39
atauPython310
). Cari juga folderScripts
di dalam folder instalasi Python Anda, misalnyaC:\Users\NamaPengguna\AppData\Local\Programs\Python\PythonXX\Scripts\
.- Buka Pengaturan Variabel Lingkungan:
- Klik kanan pada Start Menu (ikon Windows).
- Pilih System (Sistem) atau Settings > System > About (Pengaturan > Sistem > Tentang).
- Klik Advanced system settings (Pengaturan sistem lanjutan) di sisi kanan atau di bawah “Related settings”.
- Pada jendela “System Properties” (Properti Sistem), klik tombol Environment Variables (Variabel Lingkungan).
- Edit Variabel PATH:
- Di bagian “System variables” (Variabel sistem), cari variabel bernama
Path
. - Pilih
Path
, lalu klik tombol Edit. - Pada jendela “Edit environment variable” (Edit variabel lingkungan), klik New (Baru).
- Tempelkan atau ketikkan path lengkap ke folder instalasi Python Anda (misalnya:
C:\Python39
atauC:\Users\NamaPengguna\AppData\Local\Programs\Python\Python39\
) lalu tekan Enter. - Klik New lagi, dan tempelkan atau ketikkan path lengkap ke folder
Scripts
di dalam instalasi Python Anda (misalnya:C:\Users\NamaPengguna\AppData\Local\Programs\Python\Python39\Scripts\
) dan tekan Enter. - Klik OK pada semua jendela yang terbuka (
Edit environment variable
,Environment Variables
,System Properties
) untuk menyimpan perubahan.
- Di bagian “System variables” (Variabel sistem), cari variabel bernama
- Verifikasi:
- Buka Command Prompt (CMD) atau PowerShell baru (penting untuk membuka yang baru agar perubahan PATH terdeteksi).
- Ketik
python --version
ataupython3 --version
dan tekan Enter. Jika Python sudah terpasang di PATH dengan benar, Anda akan melihat versi Python yang terinstal (misal:Python 3.9.7
). Jika tidak, pastikan Anda telah memasukkan path yang benar dan buka CMD/PowerShell yang baru.
Memilih IDE (Integrated Development Environment) / Editor Kode: IDE akan sangat membantu Anda menulis, menjalankan, dan melakukan debug kode.
- Visual Studio Code (VS Code): Sangat populer, ringan, dan serbaguna. Banyak ekstensi untuk Python.
- Unduh: https://code.visualstudio.com/
- Pastikan menginstal ekstensi Python dari marketplace VS Code.
- PyCharm (Community Edition): IDE khusus Python yang sangat kuat dan kaya fitur.
- Jupyter Notebook / JupyterLab (Jika menggunakan Anaconda): Ideal untuk eksperimen kode, analisis data, dan pembelajaran interaktif, karena bisa menjalankan kode per blok.
- Visual Studio Code (VS Code): Sangat populer, ringan, dan serbaguna. Banyak ekstensi untuk Python.
Langkah-langkah Praktik (di kelas/laboratorium):
- Verifikasi instalasi Python di Command Prompt/Terminal dengan mengetik:
python --version
ataupython3 --version
. - Buka IDE pilihan Anda (VS Code, PyCharm, atau Jupyter Notebook).
- Buat file Python baru (misal:
pertemuan1.py
). - Coba tulis dan jalankan kode-kode penyegaran Python yang sudah dibahas di atas. Pastikan semuanya berjalan tanpa error.
E. Studi Kasus Sederhana (Pre-OOP)
Mari kita pikirkan sebuah masalah sederhana yang akan kita selesaikan dengan pendekatan prosedural dulu, lalu kita bandingkan di pertemuan berikutnya dengan pendekatan PBO.
Masalah: Kita ingin membuat program untuk mengelola informasi tentang beberapa buku di perpustakaan sederhana.
Informasi yang ingin kita simpan untuk setiap buku:
- Judul
- Penulis
- Tahun Terbit
- Status (Tersedia/Dipinjam)
Aksi yang bisa dilakukan:
- Menampilkan detail buku
- Mengubah status buku menjadi ‘Dipinjam’
- Mengubah status buku menjadi ‘Tersedia’
Pendekatan Prosedural (Menggunakan List/Dictionary):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Data buku disimpan dalam dictionary, lalu dikumpulkan dalam list
buku1 = {
"judul": "Harry Potter dan Batu Bertuah",
"penulis": "J.K. Rowling",
"tahun_terbit": 1997,
"status": "Tersedia"
}
buku2 = {
"judul": "Filosofi Teras",
"penulis": "Henry Manampiring",
"tahun_terbit": 2019,
"status": "Tersedia"
}
# Fungsi untuk menampilkan detail buku
def tampilkan_detail_buku(buku):
print("\n--- Detail Buku ---")
print(f"Judul: {buku['judul']}")
print(f"Penulis: {buku['penulis']}")
print(f"Tahun Terbit: {buku['tahun_terbit']}")
print(f"Status: {buku['status']}")
print("-------------------")
# Fungsi untuk meminjam buku
def pinjam_buku(buku):
if buku['status'] == "Tersedia":
buku['status'] = "Dipinjam"
print(f"'{buku['judul']}' berhasil dipinjam.")
else:
print(f"Maaf, '{buku['judul']}' sedang {buku['status']}.")
# Fungsi untuk mengembalikan buku
def kembalikan_buku(buku):
if buku['status'] == "Dipinjam":
buku['status'] = "Tersedia"
print(f"'{buku['judul']}' berhasil dikembalikan.")
else:
print(f"Buku '{buku['judul']}' tidak dalam status dipinjam.")
# Penggunaan program
print("Kondisi Awal:")
tampilkan_detail_buku(buku1)
tampilkan_detail_buku(buku2)
print("\nAksi:")
pinjam_buku(buku1)
pinjam_buku(buku2) # Coba pinjam buku yang sudah dipinjam (setelah aksi pertama)
print("\nKondisi Setelah Aksi:")
tampilkan_detail_buku(buku1)
tampilkan_detail_buku(buku2)
kembalikan_buku(buku1)
print("\nKondisi Setelah Pengembalian:")
tampilkan_detail_buku(buku1)
Penjelasan:
- Perhatikan bagaimana data buku (
buku1
,buku2
) terpisah dari fungsi-fungsi (tampilkan_detail_buku
,pinjam_buku
,kembalikan_buku
). - Jika kita punya 1000 buku, bagaimana cara mengelola datanya? Bagaimana kalau kita ingin menambah informasi lain, misalnya ISBN atau jumlah halaman? Kita harus memodifikasi banyak bagian kode.
- Ini adalah titik awal kita. Di pertemuan berikutnya, kita akan melihat bagaimana PBO memberikan solusi yang lebih elegan dan terstruktur untuk masalah seperti ini.
F. Tugas
- Instalasi & Konfigurasi: Pastikan Python dan IDE pilihan Anda (VS Code/PyCharm/Anaconda) sudah terinstal dan berfungsi dengan baik di laptop masing-masing.
- Latihan Dasar Python: Buatlah sebuah program Python sederhana yang mengaplikasikan konsep dasar yang sudah dipelajari (variabel, tipe data, operator,
if-else
,for
/while
loop, fungsi). Program bisa berupa kalkulator sederhana, konversi suhu, atau game tebak angka.