de_DEen_USes_ESfa_IRfr_FRhi_INid_IDjapl_PLpt_PT

Menguasai Desain Berorientasi Objek dengan Kartu CRC: Studi Kasus yang Ramah Pemula

“Cara terbaik untuk belajar desain berorientasi objek bukan dengan menghafal pola — melainkan dengan memainkan peran-peran tersebut.”

Dalam artikel ini, kita akan membahas secara bertahappengantar langkah demi langkah tentang kartu CRC (Kelas–Tanggung Jawab–Kolaborator) menggunakan contoh dunia nyata yang ramah pemula: sebuahSistem Peminjaman Buku Perpustakaan. Baik Anda baru memulai perjalanan Anda ke dunia desain perangkat lunak atau memimpin lokakarya tim, kartu CRC menawarkan cara sederhana, kuat, dan kolaboratif untuk memodelkan sistem berorientasi objek.


🎯 Apa Itu Kartu CRC?

Kartu CRC adalah teknik pemodelan ringan, fisik (atau digital) yang digunakan dalam desain berorientasi objek. Setiap kartu mewakili sebuahkelas dan berisi tiga elemen utama:

Bidang Deskripsi
Kelas Nama kelas (misalnya Buku)
Tanggung Jawab Apa yang kelas tersebutketahui atau lakukan
Kolaborator Kelas-kelas lain yang perlu kelas ini bekerja sama dengannya

Mereka sangat efektif untuk berpikir kreatifmerancang, dan memvalidasistruktur kelas sejak awal pengembangan — sebelum menulis satu baris kode pun.


📚 Studi Kasus: Sistem Peminjaman Buku Perpustakaan

Mari kita bayangkan sebuah perpustakaan umum kecil di mana anggota dapat:

  • Cari buku berdasarkan judul

  • Meminjam buku yang tersedia (hingga batas tertentu)

  • Mengembalikan buku setelah selesai

Sistem harus melacak:

  • Buku mana yang dipinjam

  • Oleh siapa

  • Kapan batas waktu pengembalian

Kami akan menggunakan metode metode kartu CRC untuk menemukan dan menyempurnakan kelas-kelas dalam sistem ini — langkah demi langkah.


✅ Langkah 1: Temukan Kelas Kandidat (Mendaur ulang Kata Benda)

Mulailah dengan membaca skenario dan menarik keluar kata benda — ini adalah kelas-kelas potensial.

Berdasarkan deskripsi, kita mengidentifikasi:

  • Perpustakaan

  • Anggota (atau Pengunjung)

  • Buku

  • Pinjaman (atau Peminjaman)

  • Tanggal Jatuh Tempo (mungkin terlalu kecil)

  • Kartu Perpustakaan (mungkin bagian dari Anggota)

Kami menyaring dan hanya menyimpan yang paling bermakna:

✅ AnggotaBukuPinjaman

⚠️ Catatan: Jangan khawatir untuk mendapatkan semua kelas dengan benar pada awalnya — itulah keindahan kartu CRC. Anda akan menemukan yang hilang melalui permainan peran!


✏️ Langkah 2: Buat Kartu CRC Awal

Sekarang, kita menetapkan tanggung jawab dan kolaborator ke setiap kelas.

📘 Kelas: Buku

Tanggung Jawab Kolaborator
Mengetahui judulnya
Mengetahui penulisnya
Mengetahui ISBN-nya
Mengetahui apakah saat ini tersedia Pinjaman
Dipinjam Pinjaman
Dikembalikan Pinjaman

💬 Buku tidak “mengetahui” siapa yang meminjamnya — ia hanya mengetahui apakah memiliki pinjaman yang aktif.


👤 Kelas: Anggota

Tanggung jawab Kolaborator
Tahu nama
Tahu ID anggota
Tahu berapa banyak buku yang saat ini dipinjam Pinjaman
Meminjam buku (jika diizinkan) Buku, Pinjaman
Mengembalikan buku Buku, Pinjaman
Periksa apakah batas peminjaman telah tercapai Pinjaman

💬 Anggota mengelola perilaku peminjaman sendiri dan memeriksa batas melalui kelas Pinjaman.


📅 Kelas: Pinjaman

Tanggung jawab Kolaborator
Mencatat buku mana yang dipinjam Buku
Mencatat anggota mana yang meminjamnya Anggota
Mencatat tanggal peminjaman
Menghitung tanggal jatuh tempo
Tahu apakah sudah terlambat
Tandai sebagai dikembalikan Buku

💬 Kelas Pinjaman menyimpan hubungan antara Anggota dan Buku, termasuk detail waktu.


🎭 Langkah 3: Berperan dalam Suatu Adegan — “Meminjam Buku”

Sekarang datang bagian menyenangkannya: berperan adegan tersebut seolah-olah kartu-kartu itu benda nyata.

📖 Adegan: Curtis ingin meminjam “Kode Bersih”, yang tersedia.

Mari kita bahas satu per satu:

  1. Anggota (Curtis) mengatakan: “Saya ingin meminjam ‘Kode Bersih’.”
    → Pertama dicek: “Apakah saya sudah memiliki kurang dari 3 buku?”
    → Bertanya Pinjaman“Berapa banyak pinjaman aktif yang saya miliki?”

  2. Pinjaman menanggapi: “Anda memiliki 1 pinjaman aktif → Anda dapat meminjam.”

  3. Anggota mencari buku: “Di mana ‘Kode Bersih’?”
    → Bertanya Buku“Apakah Anda tersedia?”

  4. Buku memeriksa: “Apakah saya memiliki pinjaman aktif (belum dikembalikan)?”
    → Menanyakan Pinjaman“Apakah ada pinjaman aktif untuk saya?”

  5. Pinjaman menanggapi: “Tidak — Anda tersedia!”

  6. Anggota membuat baru Pinjaman objek:

    • Menghubungkan ke ini Buku dan Anggota

    • Menetapkan tanggal pinjam = hari ini

    • Menghitung tanggal jatuh tempo = hari ini + 14 hari

  7. Buku diperbarui: “Sekarang saya memiliki pinjaman aktif → Saya tidak lagi tersedia.”

✅ Hasil: Proses peminjaman terasa alami, terdistribusi, dan logis.


🔄 Langkah 4: Skenario Lain — “Kembalikan Buku”

📖 Skenario: Curtis mengembalikan “Kode Bersih”

  1. Anggota (Curtis) mengatakan: “Saya ingin mengembalikan ‘Clean Code’.”

  2. Anggota menemukan yang sesuai Pinjaman (kemungkinan dengan menanyakan Pinjaman dengan buku dan anggota).

  3. Pinjaman menandai dirinya sebagai dikembalikan.

  4. Pinjaman memberi tahu Buku“Anda sekarang tersedia lagi.”

✅ Bersih, jelas, dan utuh — tidak ada kelas yang melakukan pekerjaan di luar tanggung jawabnya.


🔍 Langkah 5: Sempurnakan & Tambah Kelas yang Hilang

Setelah berperan, kami menyadari adanya kekosongan:

❓ Siapa yang menemukan buku berdasarkan judul?

Saat ini, Anggota sedang menanyakan Buku secara langsung — tetapi Buku tidak tahu cara mencari!
Kami membutuhkan koordinator pusat.

➕ Kelas Baru: Perpustakaan

Tanggung jawab Kolaborator
Tambahkan buku baru ke dalam koleksi Buku
Temukan buku berdasarkan judul Buku
Daftarkan anggota baru Anggota
Proses permintaan peminjaman buku Anggota, Buku, Peminjaman
Proses pengembalian buku Anggota, Buku, Peminjaman
Tahu semua peminjaman saat ini Peminjaman

💬 Perpustakaan bertindak sebagai pusat utama — ia mengetahui semua buku, semua anggota, dan semua peminjaman.


✨ Alur Terbaru: “Pinjam Buku” dengan Perpustakaan

  1. Anggota → Perpustakaan“Temukan buku berjudul ‘Clean Code’.”

  2. Perpustakaan mencari koleksinya dan mengembalikan Buku (atau nol jika tidak ditemukan).

  3. Anggota sekarang mengetahui buku tersebut ada → meminta Perpustakaan“Bolehkah saya meminjam buku ini?”

  4. Perpustakaan memeriksa:

    • Apakah buku ini tersedia? (melalui Book.isAvailable())

    • Apakah anggota berada di bawah batas peminjaman? (melalui Loan.countActiveLoans(member))

  5. Jika ya → Perpustakaan membuat pinjaman baru Pinjaman dan memperbarui kedua Buku dan Pinjaman.

  6. Buku menjadi tidak tersedia; Pinjaman melacak hubungan tersebut.

✅ Sekarang alirannya masuk akal — yang Perpustakaan menangani penemuan dan koordinasi.


🧩 Ringkasan Akhir Kartu CRC (Disederhanakan untuk Pemula)

Kelas Tanggung Jawab Utama Kolaborator Utama
Perpustakaan Mengelola buku, anggota, pinjaman; menangani peminjaman/pengembalian Buku, Anggota, Pinjaman
Anggota Mengetahui informasi pribadi; memulai peminjaman/pengembalian Perpustakaan, Pinjaman
Buku Menyimpan metadata; melacak ketersediaan Perpustakaan, Pinjaman
Pinjaman Melacak riwayat peminjaman; menghitung tanggal jatuh tempo; mengelola status pengembalian Anggota, Buku, Perpustakaan

✅ Prinsip Desain: Setiap kelas memiliki tujuan yang jelas, dan tanggung jawab adalah kohesif dan tersebar dengan baik.


🌟 Mengapa Kartu CRC Bekerja Sangat Baik (Pemahaman Awal untuk Pemula)

Manfaat Penjelasan
Desain Berbasis Tanggung Jawab Mendorong Anda untuk berpikir: “Apa yang diketahui atau dilakukan oleh kelas ini?” bukan hanya menyimpan data.
Penemuan Alami Kelas yang Hilang Permainan peran mengungkap celah (seperti kelas yang hilang Perpustakaan) — tidak perlu menebak-tebak.
Umpan Balik Segera Melalui Permainan Peran Jika alur terasa tidak nyaman, Anda tahu tanggung jawab berada di tempat yang salah.
Rendah Formalitas & Kolaboratif Tidak perlu alat rumit — cukup kartu indeks, catatan perekat, atau papan tulis. Sangat cocok untuk tim.
Menjembatani Kebutuhan ke Kode Mengubah cerita pengguna menjadi interaksi kelas yang nyata.

🛠️ Tips Cepat untuk Sesi CRC Pertama Anda

  1. Gunakan kartu fisik (kartu indeks 3×5 atau catatan perekat) — lebih menarik perhatian.

  2. Satu kelas per kartu — tetap sederhana.

  3. Tulis dengan ukuran besar dan mudah dibaca — orang lain harus bisa membacanya dengan mudah.

  4. Mainkan peran secara lisan — bagikan kartu seperti benda nyata.

  5. Mulailah dengan 3–6 skenario inti (contoh: meminjam, mengembalikan, mencari).

  6. Jangan berusaha sempurna — tujuannya adalah iterasi, bukan desain akhir. Sempurnakan seiring berjalannya waktu.

  7. Gunakan nama yang sederhana dan spesifik domain — hindari istilah teknis. Gunakan “Anggota” alih-alih “Pendukung” jika tim Anda setuju.

  8. Undang semua orang untuk berpartisipasi — bahkan non-programmer bisa membantu mengidentifikasi tanggung jawab yang hilang.

  9. Gambarlah diagram kelas yang sederhana setelahnya — untuk memvisualisasikan hubungan dan memastikan konsistensi.

  10. Jadikan menyenangkan — anggaplah seperti permainan. Semakin terlibat tim Anda, hasilnya akan semakin baik.


🔄 Coba Sendiri: Domain Selanjutnya yang Dapat Dijelajahi

Setelah Anda menguasai sistem perpustakaan, coba terapkan kartu CRC pada domain lain yang ramah pemula:

☕ Sistem Pesanan Kafe

  • Kelas: PelangganPesananMenuItemBaristaKasir

  • Skenario: Tempatkan pesanan → Tambahkan minuman → Terapkan diskon → Bayar → Cetak struk

🪙 Mesin Penjual Otomatis

  • Kelas: MesinPenjualOtomatisProdukKoinPengeluarKalkulator Uang Kembalian

  • Skenario: Masukkan koin → Pilih produk → Keluarkan produk → Kembalikan uang kembalian

🎮 Permainan Kuis

  • Kelas: KuisPertanyaanPemainPencatat SkorSesi Permainan

  • Skenario: Mulai kuis → Jawab pertanyaan → Periksa kebenaran → Tampilkan skor akhir

🚗 Garasi Parkir

  • Kelas: GarasiMobilTempat ParkirTiketGerbang

  • Skenario: Masuk garasi → Parkir mobil → Keluar → Bayar biaya → Ambil tiket

Setiap sistem ini dibangun berdasarkan prinsip yang sama:

  • Identifikasi kata benda → tetapkan tanggung jawab → berperan → sempurnakan → ulangi.


📌 Pikiran Akhir: Kartu CRC Lebih dari Sekadar Teknik — Mereka Adalah Pola Pikir

Kekuatan sebenarnya dari kartu CRC bukan terletak pada kartu itu sendiri — melainkan pada percakapan yang mereka picu.

Ketika Anda menulis kartu dan berkata, “Siapa yang mengerjakan ini?” atau “Siapa yang perlu diajak bicara?”, Anda sudah berpikir seperti desainer berbasis objek.

🔥 Kiat Pro: Gunakan kartu CRC selama perencanaan sprint, penelitian teknis, bahkan dalam wawancara untuk menunjukkan pemikiran desain Anda.

Mereka bukan hanya untuk pengembang — mereka untuk siapa saja yang terlibat dalam pembuatan perangkat lunak: manajer produk, desainer, pengujicoba, dan mahasiswa.


📎 Ingin Tahu Lebih Banyak?

👉 Unduh template kartu CRC yang bisa dicetak (PDF atau digital) untuk digunakan dalam workshop berikutnya Anda.
👉 Coba sesi CRC langsung dengan rekan kerja — tetapkan peran: “Kamu adalah Anggota,” “Kamu adalah Buku,” dll.
👉 Bagikan hasil Anda — unggah kartu Anda di media sosial dengan #CRCcards atau #OODesignJourney.


🏁 Kesimpulan

The Sistem Peminjaman Buku Perpustakaanadalah salah satu contoh kartu CRC yang paling klasik dan efektif — bukan karena kompleks, tetapi karena sederhana, mudah dipahami, dan mengungkapkan.

Dengan mengikuti hanya lima langkah— brainstorming, pembuatan kartu, peran-peran, penyempurnaan, dan pengulangan — Anda dapat:

  • Menggali kelas secara alami

  • Menetapkan tanggung jawab secara jelas

  • Mendeteksi kekurangan desain sejak dini

  • Membangun model mental bersama sebagai tim

Dan yang terbaik dari semuanya? Anda tidak perlu menjadi pengembang senior untuk melakukannya.
Anda hanya perlu rasa ingin tahu, beberapa kartu, dan keinginan untuk bermain.


✅ Sekarang giliran Anda: Ambil beberapa catatan sticky, pilih sistem sederhana (seperti kafe atau mesin penjual otomatis), dan coba metode CRC.

📌 Ingat: Desain yang baik bukan tentang menulis kode sempurna — tetapi tentang mengajukan pertanyaan yang tepat.

Dan dengan kartu CRC, Anda sudah mengajukannya.


📌 Bonus: Templat Kartu CRC yang Dapat Dicetak (Versi Teks)

┌────────────────────┐
│    [NAMA KELAS]    │
├────────────────────┤
│ Tanggung Jawab:    │
│ -                  │
│ -                  │
│ -                  │
├────────────────────┤
│ Kolaborator:       │
│ -                  │
│ -                  │
└────────────────────┘

Cetak ini pada kartu ukuran 3×5 atau gunakan dalam alat digital seperti Miro, Figma, atau Google Slides.


📚 Langkah Selanjutnya?
Ingin panduan lengkap tentang Sistem Pemesanan Kafe dengan gaya CRC yang sama?
👉 Cukup katakan saja — saya akan mengirimkan studi kasus berikutnya, langkah demi langkah, dengan kartu, skenario, dan peran-peran!

Selamat mendesain! 🎮🧩💻

This post is also available in Deutsch, English, Español, فارسی, Français, English, 日本語, Polski and Portuguese.