“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 kreatif, merancang, 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:
✅ Anggota, Buku, Pinjaman
⚠️ 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:
-
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?” -
Pinjaman menanggapi: “Anda memiliki 1 pinjaman aktif → Anda dapat meminjam.”
-
Anggota mencari buku: “Di mana ‘Kode Bersih’?”
→ Bertanya Buku: “Apakah Anda tersedia?” -
Buku memeriksa: “Apakah saya memiliki pinjaman aktif (belum dikembalikan)?”
→ Menanyakan Pinjaman: “Apakah ada pinjaman aktif untuk saya?” -
Pinjaman menanggapi: “Tidak — Anda tersedia!”
-
Anggota membuat baru Pinjaman objek:
-
Menghubungkan ke ini Buku dan Anggota
-
Menetapkan tanggal pinjam = hari ini
-
Menghitung tanggal jatuh tempo = hari ini + 14 hari
-
-
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”
-
Anggota (Curtis) mengatakan: “Saya ingin mengembalikan ‘Clean Code’.”
-
Anggota menemukan yang sesuai Pinjaman (kemungkinan dengan menanyakan Pinjaman dengan buku dan anggota).
-
Pinjaman menandai dirinya sebagai dikembalikan.
-
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
-
Anggota → Perpustakaan: “Temukan buku berjudul ‘Clean Code’.”
-
Perpustakaan mencari koleksinya dan mengembalikan Buku (atau
noljika tidak ditemukan). -
Anggota sekarang mengetahui buku tersebut ada → meminta Perpustakaan: “Bolehkah saya meminjam buku ini?”
-
Perpustakaan memeriksa:
-
Apakah buku ini tersedia? (melalui
Book.isAvailable()) -
Apakah anggota berada di bawah batas peminjaman? (melalui
Loan.countActiveLoans(member))
-
-
Jika ya → Perpustakaan membuat pinjaman baru Pinjaman dan memperbarui kedua Buku dan Pinjaman.
-
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
-
Gunakan kartu fisik (kartu indeks 3×5 atau catatan perekat) — lebih menarik perhatian.
-
Satu kelas per kartu — tetap sederhana.
-
Tulis dengan ukuran besar dan mudah dibaca — orang lain harus bisa membacanya dengan mudah.
-
Mainkan peran secara lisan — bagikan kartu seperti benda nyata.
-
Mulailah dengan 3–6 skenario inti (contoh: meminjam, mengembalikan, mencari).
-
Jangan berusaha sempurna — tujuannya adalah iterasi, bukan desain akhir. Sempurnakan seiring berjalannya waktu.
-
Gunakan nama yang sederhana dan spesifik domain — hindari istilah teknis. Gunakan “Anggota” alih-alih “Pendukung” jika tim Anda setuju.
-
Undang semua orang untuk berpartisipasi — bahkan non-programmer bisa membantu mengidentifikasi tanggung jawab yang hilang.
-
Gambarlah diagram kelas yang sederhana setelahnya — untuk memvisualisasikan hubungan dan memastikan konsistensi.
-
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:
Pelanggan,Pesanan,MenuItem,Barista,Kasir -
Skenario: Tempatkan pesanan → Tambahkan minuman → Terapkan diskon → Bayar → Cetak struk
🪙 Mesin Penjual Otomatis
-
Kelas:
MesinPenjualOtomatis,Produk,Koin,Pengeluar,Kalkulator Uang Kembalian -
Skenario: Masukkan koin → Pilih produk → Keluarkan produk → Kembalikan uang kembalian
🎮 Permainan Kuis
-
Kelas:
Kuis,Pertanyaan,Pemain,Pencatat Skor,Sesi Permainan -
Skenario: Mulai kuis → Jawab pertanyaan → Periksa kebenaran → Tampilkan skor akhir
🚗 Garasi Parkir
-
Kelas:
Garasi,Mobil,Tempat Parkir,Tiket,Gerbang -
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! 🎮🧩💻
- Cara Menggambar Kartu CRC di Visual Paradigm: Panduan langkah demi langkah ini memberikan petunjuk tentang cara membuat kartu CRC menggunakan alat diagram khusus perangkat lunak.
- Memahami Diagram Kartu CRC di Visual Paradigm: Ringkasan yang menjelaskan bagaimana diagram ini digunakan untuk memodelkan sistem berorientasi objek dan interaksi mereka.
- Cara Membuat Diagram Kartu CRC di Visual Paradigm: Tutorial mendetail yang ditemukan di Community Circle yang mencakup pembuatan dan penyesuaian diagram CRC.
- Pengantar Diagram CRC di Visual Paradigm: Panduan komprehensif yang berfokus pada pemanfaatan diagram CRC untuk desain berorientasi objek dan pemodelan sistem yang lebih luas.
- Menghasilkan Kartu CRC dari Diagram Kelas: Diskusi komunitas ini mengeksplorasi metode untuk memanfaatkan diagram kelas yang sudah ada untuk secara otomatis menghasilkan kartu melalui rekayasa balik.
- Menyinkronkan Kartu CRC dengan Diagram Kelas: Sumber teknis yang membahas pemodelan dua arah untuk memastikan konsistensi desain antara kartu dan model kelas.
- Pengantar Diagram Kartu CRC (Panduan PDF): Sumber teknis yang dapat diunduh yang menjelaskan konsep inti dan aplikasi kartu CRC dalam analisis sistem.
- Membangun Koneksi antara Kartu CRC dan Diagram Kelas: Artikel ini menyoroti teknik untuk menjaga keterlacakan dan keterkaitan antara tingkatan pemodelan yang berbeda.
- Templat Kartu CRC di Galeri Visual Paradigm: Sumber daya yang menampilkan templat yang dapat diunduh yang dirancang untuk mendukung desain berorientasi objek tahap awal.
- Memindahkan Kartu CRC Antar Diagram: Panduan yang menjelaskan cara memindahkan kartu antar diagram berbeda sambil mempertahankan konsistensi data.
This post is also available in Deutsch, English, Español, فارسی, Français, English, 日本語, Polski and Portuguese.









