saindras

pbo-pertemuan-3.2

Sep 15th, 2025 (edited)
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.89 KB | None | 0 0
  1. class Tugas:
  2.     # Mewakili satu tugas dalam daftar
  3.     def __init__(self, deskripsi):
  4.         self.deskripsi = deskripsi
  5.         self.selesai = False
  6.     # Menandai tugas sebagai selesai
  7.     def tandai_selesai(self):
  8.         self.selesai = True
  9.     # Representasi string dari objek Tugas
  10.     def __str__(self):
  11.         if self.selesai:
  12.             status = "βœ“"  
  13.         else:
  14.             status = "βœ—"
  15.         return f"[{status}] {self.deskripsi}"
  16.  
  17. class DaftarTugas:
  18.     # Mewakili koleksi dari banyak objek Tugas dan iterable
  19.     def __init__(self):
  20.         self._koleksi_tugas = []
  21.         # Untuk melacak posisi saat iterasi
  22.         self._indeks = 0
  23.     # Menambahkan tugas baru ke dalam koleksi
  24.     def tambah_tugas(self, deskripsi_tugas):
  25.         self._koleksi_tugas.append(Tugas(deskripsi_tugas))
  26.     # Mengembalikan objek iterator (dirinya sendiri) dan mereset indeks setiap kali iterasi baru dimulai
  27.     def __iter__(self):
  28.         self._indeks = 0
  29.         return self
  30.     # Mengembalikan elemen berikutnya dari koleksi
  31.     def __next__(self):
  32.         if self._indeks < len(self._koleksi_tugas):
  33.             hasil = self._koleksi_tugas[self._indeks]
  34.             self._indeks += 1
  35.             return hasil
  36.         else:
  37.             # Sinyal bahwa iterasi telah selesai
  38.             raise StopIteration
  39.  
  40. # Buat instance dari koleksi
  41. daftar_belanja = DaftarTugas()
  42.  
  43. # Tambahkan beberapa objek ke dalamnya
  44. daftar_belanja.tambah_tugas("Beli Apel")
  45. daftar_belanja.tambah_tugas("Beli Susu")
  46. daftar_belanja.tambah_tugas("Bayar Tagihan Listrik")
  47.  
  48. # Akses isinya dengan for loop sederhana
  49. print("--- Daftar Belanja ---")
  50. for tugas in daftar_belanja:
  51.     print(tugas)
  52.  
  53. # Tandai satu tugas selesai (contoh modifikasi objek)
  54. daftar_belanja._koleksi_tugas[1].tandai_selesai()
  55.  
  56. print("\n--- Daftar Belanja ---")
  57. # Lakukan iterasi lagi
  58. for tugas in daftar_belanja:
  59.     print(tugas)
Add Comment
Please, Sign In to add comment