0% menganggap dokumen ini bermanfaat (0 suara)
11 tayangan19 halaman

Uts Pbo

Dokumen ini adalah laporan praktikum tentang implementasi inheritance dan enkapsulasi dalam pemrograman berorientasi objek (OOP) menggunakan Python untuk aplikasi laundry. Tujuannya adalah untuk menerapkan konsep OOP, membuat aplikasi GUI dengan Tkinter, dan menampilkan hasil transaksi laundry. Laporan mencakup teori dasar, metode praktikum, hasil implementasi, serta kesimpulan dan saran.

Diunggah oleh

rubbykhairizaki
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
11 tayangan19 halaman

Uts Pbo

Dokumen ini adalah laporan praktikum tentang implementasi inheritance dan enkapsulasi dalam pemrograman berorientasi objek (OOP) menggunakan Python untuk aplikasi laundry. Tujuannya adalah untuk menerapkan konsep OOP, membuat aplikasi GUI dengan Tkinter, dan menampilkan hasil transaksi laundry. Laporan mencakup teori dasar, metode praktikum, hasil implementasi, serta kesimpulan dan saran.

Diunggah oleh

rubbykhairizaki
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd

LAPORAN PRAKTIKUM

PEMOGRMAN BERORIENTASI OBJEK

Impelmentasi Irheritance Dan Enkapsulasi pada APLIKASI LAUNDRY

Untuk Memenuhi ujian tengah semester pada mata kuliah pemograman beriorientasi object

Dosen Pengampu : Prajoko, [Link].I., [Link].

Disusun oleh :
Ruby Khairi Zaky (2430511049)
Wangsa Muhamad Rafi (2430511064)
Kemal Ahmad Rabbani (2430511057)
Muhamad Syahdan Abdurohman (2430511071)

FAKULTAS SAINS DAN TEKNOLOGI


PROGRAM STUDI TEKNIK INFORMATIKA
UNIVERSITAS MUHAMMADIYAH SUKABUMI
2025
DAFTAR ISI

BAB 1.....................................................................................................................................................1
PENDAHULUAN.................................................................................................................................1
Latar Belakang....................................................................................................................................1

Tujuan Praktikum................................................................................................................................1
BAB II....................................................................................................................................................2
DASAR TEORI.....................................................................................................................................2
Enkapsulasi.........................................................................................................................................2
Inherintance.........................................................................................................................................3
BAB III.................................................................................................................................................5
Metode Praktikum.............................................................................................................................5
Alat dan Bahan.................................................................................................................................5
BAB IV...................................................................................................................................................6
HASIL DAN PEMBAHASAN.............................................................................................................6
Hasil Implementasi Inheritance.....................................................................................................6
PEMBAHASAN............................................................................................................................10
BAB V..................................................................................................................................................14
KESIMPULAN DAN SARAN...........................................................................................................14
Kesimpulan.......................................................................................................................................14
Saran..................................................................................................................................................14
DAFTAR PUSTAKA......................................................................................................................14
LAMPIRAN......................................................................................................................................16

2
3
BAB 1

PENDAHULUAN

Latar Belakang

Pemrograman Berorientasi Objek (Object-Oriented Programming/OOP) merupakan salah satu paradigma


pemrograman modern yang berfokus pada pengorganisasian kode melalui konsep objek. Paradigma ini hadir
untuk mengatasi keterbatasan pendekatan prosedural yang sering menghasilkan kode yang sulit dikembangkan,
diperbaiki, serta kurang fleksibel saat menghadapi perubahan kebutuhan sistem. Dengan menggunakan objek
sebagai elemen utama, PBO memberikan struktur yang lebih terorganisasi, modular, dan mudah dipelihara.

Salah satu konsep dasar dalam PBO adalah instansiasi objek, yaitu proses pembuatan objek nyata
berdasarkan cetak biru yang disebut kelas. konsep enkapsulasi, yaitu mekanisme penyembunyian data agar
atribut pada suatu objek tidak dapat diakses sembarangan dari luar kelas.

Konsep penting lainnya adalah inheritance (pewarisan), yaitu kemampuan suatu kelas untuk mewarisi
atribut dan metode dari kelas lain. Melalui inheritance, pengembang dapat membangun hierarki kelas yang lebih
terstruktur, menghindari duplikasi kode, serta memungkinkan pengembangan fitur baru secara lebih cepat dan
efisien.

Tujuan Praktikum

1. Menerapkan Konsep Object-Oriented programing(OOP) Pada Python.


2. Mengimplementasikan Inheritance dan Enkapsulasi
3. Membuat Aplikasi GUI berbasis Tkinter.
4. Menampilkan hasil transaksi laundry dengan antarmuka futuristik.

1
BAB II

DASAR TEORI

Konsep Dasar Pemograman Berorientasi Objek

Pemrograman Berorientasi Objek (PBO) adalah paradigma pemrograman yang memodelkan suatu
sistem ke dalam objek-objek yang merepresentasikan entitas dunia nyata. Konsep dasarnya dimulai
dari kelas, yaitu cetak biru yang berisi atribut dan method, lalu objek sebagai hasil instansiasi dari
kelas tersebut yang dapat digunakan dalam program.

Enkapsulasi

konsep dasar dalam Pemrograman Berorientasi Objek (PBO) yang digunakan untuk membungkus
data (atribut) dan perilaku (method) ke dalam satu kesatuan, yaitu class. Prinsip ini membatasi akses
langsung terhadap atribut agar tidak dapat diubah secara bebas dari luar kelas. Untuk menjaga
keamanan data, atribut biasanya dibuat private, sedangkan akses dan pengubahan nilai dilakukan
melalui method getter dan setter yang telah disediakan. Dengan cara ini, setiap perubahan nilai dapat
dikontrol dan divalidasi, sehingga memastikan integritas data tetap terjaga. Enkapsulasi tidak hanya
meningkatkan keamanan, tetapi juga membuat struktur program lebih terorganisir dan mudah dikelola.

Manfaat Enkapsulasi sebagai berikut:


1. Keamanan Data Lebih Terjamin
Atribut tidak dapat diakses atau diubah sembarangan dari luar kelas karena dilindungi oleh
mekanisme akses.
2. Kontrol Penuh Terhadap Data
Penggunaan setter memungkinkan validasi sebelum data disimpan, sehingga nilai atribut selalu
sesuai aturan.
3. Mengurangi Dampak Kesalahan Pengguna
Programmer dapat mencegah input yang salah atau tidak sesuai kebutuhan program.
4. Mempermudah Pemeliharaan Program
Perubahan internal class tidak memengaruhi bagian lain selama antarmuka (getter/setter) tetap
sama.
5. Meningkatkan Modularitas
Class menjadi lebih mandiri dan tertutup, sehingga program lebih terstruktur dan mudah
dikembangkan.

Selain itu Enkapsulasi Memiliki kekurangan. Diantaranya:


1. Penulisan Kode Menjadi Lebih Panjang
Karena membutuhkan getter dan setter untuk setiap atribut.
2. Sedikit Menambah Kompleksitas
Programmer harus memahami aturan penggunaan akses modifier dengan benar.
3. Tidak Efisien untuk Struktur Data Sederhana
Untuk kasus kecil atau program sederhana, penggunaan enkapsulasi bisa dirasa terlalu
2
berlebihan.

Inherintance

Inheritance (pewarisan) adalah salah satu konsep utama dalam Pemrograman Berorientasi Objek
(PBO) yang memungkinkan sebuah kelas mewarisi atribut dan method dari kelas lain. Kelas yang
mewariskan disebut kelas induk (parent class / superclass), sedangkan kelas yang menerima warisan
disebut kelas turunan (child class / subclass).

Jenis-Jenis Inheritance:
1. Single Inheritance
Merupakan pewarisan di mana satu kelas turunan hanya memiliki satu kelas induk. Hubungan
pewarisan terjadi secara langsung antara satu induk dan satu anak.
2. Multilevel Inheritance
Pewarisan yang terjadi secara berlapis atau berantai. Sebuah kelas turunan dapat menjadi induk
bagi kelas lain, sehingga terbentuk struktur bertingkat.
3. Multiple Inheritance
Sebuah kelas turunan mewarisi atribut dan method dari lebih dari satu kelas induk. Jenis ini
memungkinkan penggabungan karakteristik dari beberapa induk sekaligus.
4. Hierarchical Inheritance
Dalam jenis ini, satu kelas induk diwarisi oleh dua atau lebih kelas turunan. Semua kelas
turunan memperoleh fitur yang berasal dari satu induk yang sama.
5. Hybrid Inheritance
Merupakan kombinasi dari dua atau lebih jenis inheritance sebelumnya. Hybrid inheritance
dapat menggabungkan pola hierarchical, multilevel, atau multiple inheritance dalam satu
struktur pewarisan.

Kelebihan Inheritance yaitu:

1. Reusability (Penggunaan Kembali Kode)


Atribut dan method yang dimiliki kelas induk dapat digunakan kembali oleh kelas turunan
tanpa perlu menulis ulang.
2. Mengurangi Duplikasi Kode
Struktur kode lebih efisien karena fungsi umum disimpan pada kelas induk.
3. Mempermudah Pengembangan Aplikasi
Fungsionalitas baru dapat ditambahkan pada kelas turunan tanpa mengubah kode asli kelas
induk.
4. Struktur Program Lebih Terorganisir
Hubungan antar kelas menjadi lebih jelas dan terstruktur.
5. Mendukung Polymorphism
Method yang diwarisi dapat dioverride untuk memberikan perilaku berbeda pada kelas turunan.

Inheritance juga memiliki kekurangan nya yaitu:

1. Ketergantungan Antar Kelas Tinggi


Perubahan pada kelas induk dapat berdampak luas pada kelas turunan.
2. Meningkatkan Kompleksitas Program
Semakin banyak level pewarisan, semakin sulit melacak alur kode.
3. Resiko Overriding yang Salah
Jika method dioverride tanpa pemahaman yang tepat, dapat menyebabkan error atau perilaku
yang tidak diinginkan.
3
4. Tidak Selalu Efektif untuk Semua Kasus
Terkadang komposisi (membuat objek dalam objek lain) lebih baik daripada inheritance.
5. Multiple Inheritance Berpotensi Menimbulkan Konflik
Contohnya: dua kelas induk memiliki method dengan nama yang sama.

4
BAB III
Metode Praktikum

Alat dan Bahan

Pratikum ini dilakukan untuk memahami konsep dasar inheritance(pewarisan) Dalam


pemograman berorientasi objek(OOP) menggunakan pthon. Adapun alat dan bahan yang
digunakan :

 Laptop
 Bahasa Pemrograman (Python, dan Thonny)
 Bahan Praktikum (Script Program Python yang terdiri dari kelas induk Laundry, Amang
laundry sebagai studi kasus)
 Langkah kerja (Persiapan lingkungan kerja, Instalasi Python dan IDE, Pembuatan Kelas
induk Laundry, Definisikan Atribut Private, Buat method, Pembuatan kelas, Inheritance.
Tambahkan Atribut baru,

5
BAB IV

HASIL DAN PEMBAHASAN

Hasil Implementasi Inheritance

Berikut adalah kode program lengkap


yang diaplikasikan menggunakan bahasa python:

# KELAS INDUK
class Laundry:
def _init_(self, nama_pelanggan, jenis_layanan, berat, harga_per_kg, status):
# Enkapsulasi (atribut privat)
self._nama_pelanggan = nama_pelanggan
self.__jenis_layanan = jenis_layanan
self.__berat = berat
self. _harga_per_kg = harga_per_kg
self.__status = status

def get_nama(self):
return self.__nama_pelanggan

def set_status(self, status):__


self.__status = status

def hitung_total(self):
return self._berat * self._harga_per_kg

def ubah_harga(self, harga_baru):


self.__harga_per_kg = harga_baru

def tampilkan_info(self):
return (
f"Nama Pelanggan : {self.__nama_pelanggan}\n"
f"Jenis Layanan : {self.__jenis_layanan}\n"
f"Berat Cucian : {self.__berat} kg\n"
f"Harga per Kg : Rp{self.__harga_per_kg:,}\n"
f"Status : {self.__status}\n"
f"Total Bayar : Rp{self.hitung_total():,}\n"
)

# KELAS TURUNAN
class LaundryKiloan(Laundry):
def _init_(self, nama_pelanggan, jenis_layanan, berat, harga_per_kg, status, parfum,
express):
super()._init_(nama_pelanggan, jenis_layanan, berat, harga_per_kg, status)
self.__parfum = parfum
self.__express = express
6
self.__diskon = 0
self.__catatan = ""
self.__pembayaran = "Belum Bayar"

def set_diskon(self, persen):


self.__diskon = persen

def hitung_total(self):
total = super().hitung_total()
if self.__express:
total += 5000
if self.__diskon > 0:
total -= total * (self.__diskon / 100)
return total

def ubah_catatan(self, catatan):


self.__catatan = catatan

def tampilkan_info(self):
return (
super().tampilkan_info() +
f"Parfum : {self.__parfum}\n"
f"Express : {'Ya' if self.__express else 'Tidak'}\n"
f"Diskon : {self.__diskon}%\n"
f"Catatan : {self.__catatan}\n"
f"Status Bayar : {self.__pembayaran}\n"
f"Total Akhir : Rp{self.hitung_total():,}\n"
f"{'-'*45}\n"
)

# APLIKASI GUI
class LaundryApp:
def _init_(self, root):
[Link] = root
[Link](">>Amang Loundry<<")
[Link]("640x580")
[Link](False, False)
[Link](bg="#1A001F") # warna latar belakang ungu tua

self.daftar_laundry = []

# Styling (ungu futuristik)


style = [Link]()
style.theme_use("clam")
[Link]("TLabel", background="#1A001F", foreground="#E0B3FF",
font=("Consolas", 10))
[Link]("TButton", background="#4B0082", foreground="white",
font=("Consolas", 10, "bold"), padding=5)
[Link]("TButton", background=[("active", "#7D3C98")])
[Link]("TEntry", fieldbackground="#290033", foreground="#E0B3FF")
[Link]("TCombobox", fieldbackground="#290033", foreground="#E0B3FF")

7
# Judul
[Link](root, text="💠 AMANG LAUNDRY 💠", font=("Orbitron", 18, "bold"),
foreground="#C77DFF", background="#1A001F").pack(pady=10)
[Link](root, text=" Pakaian Bersih Kembali - Terima Antar Jemput ", font=("Consolas",
10), foreground="#E0B3FF", background="#1A001F").pack()

# Frame Input
frame = [Link](root, padding=10, style="TFrame")
[Link](pady=10)

labels = [
"Nama Pelanggan:", "Jenis Layanan:", "Berat (kg):",
"Parfum:", "Express (ya/tidak):", "Status:", "Diskon (%):"
]
[Link] = {}

for i, text in enumerate(labels):


[Link](frame, text=text).grid(row=i, column=0, sticky="w", pady=5)
if text == "Jenis Layanan:":
entry = [Link](frame, values=["Kiloan", "Satuan"], width=22)
elif text == "Status:":
entry = [Link](frame, values=["Menunggu", "Proses", "Selesai"], width=22)
else:
entry = [Link](frame, width=25)
[Link](row=i, column=1, pady=5)
[Link][text] = entry

# Tombol
btn_frame = [Link](root, style="TFrame")
btn_frame.pack(pady=10)
[Link](btn_frame, text="💾 Tambah Data", command=self.tambah_data).grid(row=0,
column=0, padx=5)
[Link](btn_frame, text="📋 Tampilkan Semua",
command=self.tampilkan_semua).grid(row=0, column=1, padx=5)
[Link](btn_frame, text="🚀 Keluar", command=[Link]).grid(row=0, column=2,
padx=5)

# Output area
self.text_output = [Link](root, width=72, height=15, bg="#2D004D", fg="#E0B3FF",
insertbackground="white", relief="flat", font=("Consolas", 10))
self.text_output.pack(pady=10)
self.text_output.config(state="disabled")

# Footer
[Link](root, text="CyberLaundry © 2089 | by Syahdan", font=("Consolas", 9),
foreground="#A566FF", background="#1A001F").pack(side="bottom", pady=5)

# -------------------------------------------------
def tambah_data(self):
nama = [Link]["Nama Pelanggan:"].get()
layanan = [Link]["Jenis Layanan:"].get()
berat = [Link]["Berat (kg):"].get()
8
parfum = [Link]["Parfum:"].get()
express = [Link]["Express (ya/tidak):"].get().lower() == "ya"
status = [Link]["Status:"].get()
diskon = [Link]["Diskon (%):"].get()

if not nama or not layanan or not berat:


[Link]("⚠️Peringatan", "Semua data wajib diisi!")
return

try:
berat = float(berat)
diskon = float(diskon) if diskon else 0
except ValueError:
[Link]("❌ Error", "Berat dan diskon harus berupa angka!")
return

harga = 8000 if [Link]() == "kiloan" else 5000


laundry = LaundryKiloan(nama, layanan, berat, harga, status, parfum, express)
laundry.set_diskon(diskon)

self.daftar_laundry.append(laundry)
[Link]("✅ Sukses", f"Data laundry '{nama}' berhasil ditambahkan!")
self.clear_input()

# -------------------------------------------------
def tampilkan_semua(self):
self.text_output.config(state="normal")
self.text_output.delete(1.0, "end")

if not self.daftar_laundry:
self.text_output.insert("end", "💤 Belum ada data laundry.\n")
else:
for data in self.daftar_laundry:
self.text_output.insert("end", data.tampilkan_info())

self.text_output.config(state="disabled")

# -------------------------------------------------
def clear_input(self):
for entry in [Link]():
if isinstance(entry, [Link]):
[Link]("")
else:
[Link](0, "end")

# MAIN PROGRAM
if _name_ == "_main_":
root = [Link]()
app = LaundryApp(root)
[Link]()

PEMBAHASAN
9
# KELAS INDUK
class Laundry:
def__init_(self, nama_pelanggan, jenis_layanan, berat, harga_per_kg, status):
# Enkapsulasi (atribut privat)
self.__nama_pelanggan = nama_pelanggan
self.__jenis_layanan = jenis_layanan
self.__berat = berat
self.__harga_per_kg = harga_per_kg
self.__status = status

1. Analisis Kode # Kelas Induk

Class laundry ini dirancang untuk merepresentasikan data dasar layanan laundry dengan
menerapkan konsep OOP (Object-Oriented Programming), khususnya enkapsulasi melalui
penggunaan atribut privat. Di dalam metode konstruktor terdapat lima atribut privat yang
masing-masing berfungsi menyimpan informasi penting tentang transaksi laundry konstruktor
yang dipanggil secara otomatis setiap kali objek baru dari kelas dibuat. Tujuannya adalah
menginisialisasi semua atribut sejak awal sehingga objek yang dihasilkan memiliki data lengkap
dan siap digunakan untuk proses selanjutnya, seperti perhitungan harga, perubahan status, atau
sebagai dasar bagi kelas turunan melalui mekanisme pewarisan (inheritance).

Adapun poin penting yang ada pada kelas ini diantaranya:


a. Kelas ini mewakili data tentang Laundry secara terstruktur.
b. Kelas ini memiliki atribut untuk nama Laundry, Jenis layanan tersebut, Berat, harga per
kg,dan status pelanggan.
c. Atribut-atribut tersebut bersifat private untuk melindungi data.
d. Metode __init__ digunakan sebagai konstruktor.
e. Konstruktor memberikan nilai [Link] atribut-atribut tersebut, hal ini akan menjaga
data Laundry agar lebih rapi dan terenkapsulasi

1. Analisis Kode # Getter & Setter

def get_nama(self):
return self.__nama_pelanggan

def set_status(self, status):__


self.__status = status

def hitung_total(self):
return self._berat * self._harga_per_kg

def ubah_harga(self, harga_baru):


self.__harga_per_kg = harga_baru

def tampilkan_info(self):
return (
f"Nama Pelanggan : {self.__nama_pelanggan}\n"
f"Jenis Layanan : {self.__jenis_layanan}\n"
f"Berat Cucian : {self.__berat} kg\n"
1
0
f"Harga per Kg : Rp{self.__harga_per_kg:,}\n"
f"Status : {self.__status}\n"
f"Total Bayar : Rp{self.hitung_total():,}\n"
)

Kode di atas merupakan bagian dari sebuah kelas dalam python yang mempresentasikan
objek laundry(pelanggan). Di dalam nya terdapat beberapa metode yang digunakan untuk
mengakses dan memodifikasi data(getter dan setter), serta menampilkan informasi tentang nama
pelanggan.

a. getter & setter

 def get_nama(self): berfungsi Mengambil dan mengembalikan nilai nama pelanggan dari
atribut privat __nama_pelanggan.
 def set_status(self, status):berfungsi Mengubah atau memperbarui status cucian.
 def hitung_total(self):berfungsi Menghitung total biaya laundry berdasarkan rumus:
total = berat × harga_per_kg
 def ubah_harga(self, harga_baru): berfungsi Mengubah nilai harga per kilogram menjadi
harga baru.
 def tampilkan_info(self): berfungsi untuk Menyusun dan mengembalikan informasi
lengkap mengenai pesanan laundry, yaitu: Nama pelanggan, Jenis layanan Berat cucian,
Harga per kg Status cucian, Total biaya (menggunakan hitung_total()

# KELAS TURUNAN
class LaundryKiloan(Laundry):
def _init_(self, nama_pelanggan, jenis_layanan, berat, harga_per_kg, status, parfum,
express):
super()._init_(nama_pelanggan, jenis_layanan, berat, harga_per_kg, status)
self.__parfum = parfum
self.__express = express
self.__diskon = 0
self.__catatan = ""
self.__pembayaran = "Belum Bayar"

def set_diskon(self, persen):


self.__diskon = persen

def hitung_total(self):
total = super().hitung_total()
if self.__express:
total += 5000
if self.__diskon > 0:
total -= total * (self.__diskon / 100)
return total

def ubah_catatan(self, catatan):


self.__catatan = catatan

def tampilkan_info(self):
return (
super().tampilkan_info() +

1
1
f"Parfum : {self.__parfum}\n"
f"Express : {'Ya' if self.__express else 'Tidak'}\n"
f"Diskon : {self.__diskon}%\n"
f"Catatan : {self.__catatan}\n"
f"Status Bayar : {self.__pembayaran}\n"
f"Total Akhir : Rp{self.hitung_total():,}\n"
f"{'-'*45}\n"
)

2. Analis Kode # Kelas Turunan


Kelas Laundry kiloan merupakan turunan dari kelas Laundry, yang berarti ia mewarisi semua
atribut dan method dari kelas induk. Dengan pewarisan ini, objek dari kelas laundry kiloan
dapat mengakses method seperti info_pelanggan(), jenis_layanan() dan berat_hargaperkg().
Kelas laundry kiloan juga memperluas fungsionalitas dengan menambahkan atribut dan method
yang lebih spesifik tentang laundry.
 Method set_diskon(self, persen): menampilkan diskon dalam bentuk persentase.
 hitung_total(self): Mengambil perhitungan total dari kelas induk menggunakan
 ubah_catatan(self, catatan): berfungsi Mengubah atau menambah catatan pelanggan.
atribut dan method dasar yang sudah ada. Kelas ini kemudian menambahkan atribut khusus
seperti parfum, express, diskon, catatan pelanggan, dan status pembayaran sehingga mampu
menangani kebutuhan layanan laundry kiloan secara lebih lengkap.

laundry = LaundryKiloan(nama, layanan, berat, harga, status, parfum, express)


class LaundryApp:
def _init_(self, root):
[Link] = root
[Link](">>Amang Loundry<<")
[Link]("640x580")
[Link](False, False)
[Link](bg="#1A001F") # warna latar belakang ungu tua
nama = [Link]["Nama Pelanggan:"].get()
layanan = [Link]["Jenis Layanan:"].get()
berat = [Link]["Berat (kg):"].get()
parfum = [Link]["Parfum:"].get()
express = [Link]["Express (ya/tidak):"].get().lower() == "ya"
status = [Link]["Status:"].get()
diskon = [Link]["Diskon (%):"].get()

3. Analisis Kode #Instansi Objek dan # Menjalankan Method

Kode diatas merupakan objek dari class laundry dengan nama mamang laundry pada objek
Laundry yang terdapat parameter dengan nilai nilai atribut sebagai berikut
Nama_pelanggan sebagai nama pelanggan dari objek laundry
Layanan_laundry sebagai layanan pada laundry
Berat_perkg sebagai penghitung berapa banyak baju
Parfum_wangi sebagai pewangi untuk mencuci
Express_laundry sebagai pengantaran setelah selesai dan dikirimkan
Status_laundry sebagai info sudah selesai atau belum nya
Diskon_laundry sebagai potongan pada event tertentu

1
2
Selanjutnya, terdapat kode atau method untuk memanggil dan menampilkan fungsi dengan
menambahkan [Link](). Pada kode diatas yang ditampilkan adalah info_laundry() untuk
menampilkan informasi terkait laundry pada mamang laundry. Selanjutnya menampilkan
infromasi tentang laundry. Nama_pelanggan untuk menampilkan seseorang yang sedang
menghantarkan cucian nya.

BAB V

KESIMPULAN DAN SARAN


1
3
Kesimpulan

Praktikum ini berhasil mengimplementasikan konsep pundamental Pemrograman Berorientasi Objek


(Object-Oriented Programming/OOP) merupakan paradigma pemrograman yang sangat efektif digunakan
dalam pengembangan aplikasi karena mampu menghasilkan struktur kode yang lebih rapi, modular,
mudah dipelihara, dan mudah dikembangkan. Pada praktikum ini, konsep OOP seperti kelas, objek,
enkapsulasi, serta inheritance berhasil diimplementasikan melalui studi kasus layanan Amang Laundry.
Kelas Laundry bertindak sebagai kelas induk yang memuat atribut dan metode dasar seperti nama
pelanggan, jenis layanan, berat cucian, harga per kilogram, dan status. Penggunaan atribut privat
menunjukkan penerapan enkapsulasi untuk menjaga keamanan dan integritas data. Sementara itu, kelas
LaundryKiloan berperan sebagai kelas turunan yang memperluas fungsionalitas kelas induk dengan
menambahkan fitur khusus seperti parfum, layanan express, diskon, dan catatan tambahan. Hal ini
menunjukkan bahwa inheritance mampu mengurangi duplikasi kode dan memungkinkan ekspansi fitur
secara efisien.
Proses instansiasi objek dilakukan saat program membuat objek baru berdasarkan input pengguna,
kemudian objek tersebut digunakan untuk menjalankan berbagai method seperti menghitung total biaya,
menampilkan informasi laundry, dan mengubah status atau catatan pelanggan. Pada bagian antarmuka
pengguna, pembuatan aplikasi GUI menggunakan Tkinter memudahkan pengguna dalam menginput data
serta menampilkan daftar transaksi secara lebih interaktif dan menarik.
Secara keseluruhan, praktikum ini memperlihatkan bagaimana konsep OOP dapat digunakan secara nyata
untuk membangun aplikasi yang terstruktur, mudah dikembangkan, dan dapat diperluas sesuai kebutuhan
sistem.

Saran

Untuk pengembangan aplikasi dan pemahaman OOP menjadi lebih optimal, terdapat
beberapa saran yang dapat dijadikan bahan pengembangan ke depan, Sebaiknya penulisan
konstruktor pada seluruh kelas disempurnakan menggunakan __init__ agar program berjalan
tanpa error. Perlu ditambahkan validasi input yang lebih ketat agar aplikasi lebih robust,
misalnya mencegah pengguna memasukkan data kosong atau format yang tidak sesuai.
Penggunaan messagebox dapat diperluas untuk memberi notifikasi status pembayaran atau
proses laundry secara lebih informatif. Program dapat dikembangkan lebih lanjut dengan
menambahkan fitur seperti sistem penyimpanan data menggunakan database atau file, sehingga
data tetap tersimpan meskipun aplikasi ditutup. Tampilan GUI masih bisa ditingkatkan agar
lebih responsif dan modern, misalnya menambahkan tombol edit, hapus, atau pencarian data
pelanggan. Selain itu, penggunaan konsep OOP lain seperti polymorphism atau composition
juga dapat dijadikan studi lanjutan untuk memperkaya fungsionalitas program.
Dengan melakukan pengembangan dan evaluasi secara berkala, aplikasi laundry ini dapat
menjadi sistem yang lebih lengkap, lebih efisien, dan lebih bermanfaat dalam mendukung
otomatisasi layanan laundry berbasis teknologi

DAFTAR PUSTAKA

Mohammad Hizqiya, 2019, Bahasa Pemrograman Python ,


[Link]
1
4
administraction-y-finanzas/makalah-bahasa-pemrograman-python/21131730?origin=home-
recent-1
Muhammad Fachric and Enny Itje Sela, "Modul Praktikum: Pemrograman Berorientasi Objek, Sleman,
2019.
H. Jusuf, "Konsep Pemrograman Berorientasi Objek." 2021.

1
5
LAMPIRAN

Link Vidio Youtube : [Link]

1
6

Anda mungkin juga menyukai