REKAYASA PERANGKAT LUNAKA : 09. PERANCANGAN SISTEM BERORIENTASI OBJEK
Halo, para pembaca! Kali ini kita akan membahas tentang perancangan sistem berorientasi objek, sebuah konsep yang fundamental dalam dunia pemrograman. Jika Anda pernah bertanya-tanya bagaimana sistem perangkat lunak yang kompleks dapat dikelola dengan lebih mudah dan efisien, maka Anda berada di tempat yang tepat. Mari kita telusuri lebih dalam tentang bagaimana objek-objek dalam sistem berinteraksi, mempertahankan state mereka, dan bagaimana kita dapat merancang kelas-kelas objek yang efektif.
1. Pendahuluan
Sistem berorientasi objek terdiri dari objek yang berinteraksi yang mempertahankan keadaan (state) lokal dan menyediakan operasi pada state tersebut. Representasi state ini bersifat pribadi dan tidak dapat diakses langsung dari luar objek. Proses desain berorientasi objek melibatkan perancangan kelas objek dan hubungan antara kelas-kelas tersebut. Mengubah implementasi suatu objek atau menambahkan metode atau operasi tidak mempengaruhi objek lain dalam sistem.
Hal-hal yang perlu diperhatikan dalam desain berorientasi objek meliputi:
- Memahami dan Mendefinisikan Konteks serta Interaksi Eksternal dengan Sistem: Sebelum memulai desain, penting untuk memahami konteks di mana sistem akan beroperasi dan bagaimana ia akan berinteraksi dengan pengguna atau sistem lainnya.
- Desain Arsitektur Sistem: Membuat arsitektur yang jelas dan terstruktur adalah langkah awal yang krusial dalam mendesain sistem berorientasi objek.
- Identifikasi Objek Utama dalam Sistem: Tentukan objek-objek utama yang akan menjadi bagian dari sistem dan apa saja tanggung jawab mereka.
- Kembangkan Model Desain: Setelah objek diidentifikasi, langkah selanjutnya adalah mengembangkan model desain yang menjelaskan hubungan dan interaksi antara objek.
- Tentukan Antarmuka: Desain antarmuka yang jelas untuk setiap objek sehingga mereka dapat berinteraksi dengan objek lainnya dengan cara yang terdefinisi dengan baik.
Desain berorientasi objek biasanya diimplementasikan dengan bahasa pemrograman berorientasi objek. Keuntungan utama dari desain ini adalah:
- Modularitas: Sistem analis dapat menghemat waktu dan menghindari kesalahan dengan menggunakan objek secara modular.
- Fleksibilitas: Programmer dapat menerjemahkan desain ke dalam kode tanpa mengubah kode yang sudah ada.
- Reuse: Memungkinkan penggunaan modul program yang dapat digunakan kembali (reuse) yang telah diuji dan diverifikasi.
A. Identifikasi Kelas Objek
Identifikasi kelas objek adalah langkah pertama dalam desain sistem berorientasi objek. Ada beberapa pendekatan yang bisa digunakan untuk mengidentifikasi kelas objek:
- Analisis Gramatikal: Gunakan deskripsi bahasa alami untuk mengidentifikasi objek dan atribut sebagai kata benda, serta operasi atau layanan sebagai kata kerja.
- Entitas Nyata dalam Domain Aplikasi: Gunakan entitas nyata seperti mobil, peran seperti manajer atau dokter, acara seperti permintaan, interaksi seperti pertemuan, lokasi seperti kantor, unit organisasi seperti perusahaan.
- Analisis Berbasis Skenario: Identifikasi dan analisis berbagai skenario penggunaan sistem secara bergantian untuk menentukan objek yang relevan.
B. Istilah dalam Objek Oriented
- Objek (Object): Konsep atau abstraksi tentang sesuatu yang memiliki arti untuk aplikasi yang akan dikembangkan. Objek diwakili dengan kata benda dan bisa berupa orang, tempat, benda abstrak, organisasi, atau peralatan. Contoh: Karyawan, Kantor, Transaksi.
- Atribut (Attribute): Karakteristik yang menggambarkan objek. Atribut adalah nilai yang ditentukan berdasarkan domain tertentu. Contoh: kelas MOBIL memiliki atribut WARNA.
- Metode (Method): Tugas-tugas spesifik yang dapat dilakukan oleh suatu objek. Metode dituliskan dengan kata kerja yang menggambarkan apa dan bagaimana suatu objek melakukan sesuatu. Contoh: PELANGGAN dapat melakukan pemesanan, membayar tagihan.
- Pesan (Message): Perintah yang memberi tahu suatu objek untuk melakukan metode tertentu. Contoh: pesan TAMBAHKAN SISWA mengarahkan kelas SISWA untuk menambahkan nomor siswa, nama, dan data lain tentang siswa itu.
- Kelas (Class): Kelas adalah deskripsi umum yang menggambarkan sebuah kumpulan objek yang sama. Semua objek dalam kelas berbagi atribut dan metode yang sama, sehingga kelas seperti blue print atau template untuk semua objek di dalam kelas. Contoh: superclass kendaraanBermotor adalah generalisasi dari kelas Truk, SUV, Minibus, dan Car.
C. Hubungan Antara Objek dan Kelas
Hubungan memungkinkan objek untuk berkomunikasi dan berinteraksi ketika mereka melakukan fungsi bisnis dan transaksi yang diperlukan oleh sistem. Hubungan menggambarkan apa yang perlu diketahui objek satu sama lain, bagaimana objek merespon perubahan pada objek lain, dan efek keanggotaan dalam kelas, superclass, dan subclass.
2. Karakteristik Objek
A. Enkapsulasi (Encapsulation)
Data dan prosedur/fungsi dikemas bersama-sama dalam suatu objek, sehingga prosedur/fungsi lain dari luar tidak dapat mengaksesnya. Ini memungkinkan objek digunakan sebagai komponen modular di mana saja dalam sistem. Misalnya, dalam sebuah aplikasi perbankan, informasi rekening bank dikemas dalam satu objek sehingga hanya metode dalam objek tersebut yang dapat mengakses dan memodifikasi data tersebut.
B. Pewarisan (Inheritance)
Pewarisan adalah salah satu pembeda utama antara sistem konvensional dan sistem berbasis objek. Subclass mewarisi semua atribut dan operasi dari superclass, yang berarti semua struktur dan algoritma data yang dirancang untuk superclass tersedia untuk subclass. Misalnya, subclass Minibus mewarisi semua atribut kendaraanBermotor, tetapi juga menggabungkan atribut tambahan yang spesifik hanya untuk Minibus.
C. Polimorfis (Polymorphism)
Polimorfis memungkinkan operasi yang sama memiliki perilaku berbeda dalam kelas yang berbeda. Misalnya, metode yang sama dapat memiliki implementasi yang berbeda dalam kelas yang berbeda, sehingga mengurangi usaha yang diperlukan untuk memperluas perancangan sistem berorientasi objek.
3. Kelas-Kelas Perancangan
Model kebutuhan menentukan serangkaian kelas-kelas analisis yang masing-masing kelas menggambarkan beberapa elemen masalah yang dilihat oleh pengguna. Himpunan kelas-kelas perancangan menciptakan suatu infrastruktur perangkat lunak yang mendukung solusi bisnis.
A. Karakteristik Kelas Perancangan
- Lengkap dan Cukup: Kelas perancangan harus menjadi enkapsulasi lengkap dari semua atribut dan metode yang diharapkan. Misalnya, kelas Scene adalah lengkap hanya jika kelas ini berisi semua atribut dan metode yang dapat layak diasosiasikan dengan pembuatan suatu scene video.
- Sederhana: Metode-metode yang dihubungkan dengan sebuah kelas perancangan harus fokus ke pencapaian satu fungsi spesifik. Contoh: kelas VideoClip memiliki atribut StartPoint dan EndPoint untuk mengindikasikan titik awal dan titik akhir.
- Kohesi Tinggi: Kelas perancangan kohesif memiliki satu kumpulan kecil tanggung jawab yang fokus. Contoh: kelas VideoClip dapat berisi satu kumpulan metode-metode untuk mengedit klip video.
- Keterhubungan Rendah: Model perancangan dengan keterhubungan rendah lebih mudah diimplementasikan, diuji, dan dipelihara. Pembatasan ini dinamakan Law of Demeter yang menyatakan bahwa suatu metode seharusnya hanya mengirim pesan ke metode-metode pada kelas-kelas yang berdekatan.
4. Pendekatan Pemrograman Terstruktur
Karakteristik Pendekatan Berorientasi Prosedur/Fungsi meliputi penekanan pada algoritma pemecahan masalah, program besar dipecah menjadi program-program yang lebih kecil, dan penggunaan pendekatan top-down. Dalam pendekatan ini, fungsi/prosedur berbagi data global dan data bergerak secara bebas dalam sistem dari satu fungsi ke fungsi yang lain yang terkait.
5. Pendekatan Berorientasi Objek
Karakteristik pada Pendekatan Berorientasi Objek meliputi fokus pada data, objek-objek dapat saling berkomunikasi dengan saling mengirim message satu sama lain, dan penggunaan pendekatan bottom-up. Program besar dibagi menjadi beberapa objek, dengan struktur data dirancang dan menjadi karakteristik dari objek-objek tersebut. Data tersembunyi dan terlindung dari fungsi/prosedur yang ada di luar objek
6. Perbedaan Pemrograman Terstruktur dengan Pendekatan Berorientasi Objek
- Pemrograman Terstruktur: Fokus pada urutan fungsi atau prosedur, sulit dalam menangkap kebutuhan reusable components.
- Pendekatan Berorientasi Objek: Fokus pada data, perubahan pada struktur data internal tidak mempengaruhi struktur data objek lain, dan penggunaan pendekatan bottom-up.
Sekian pembahasan kita tentang perancangan sistem berorientasi objek. Dengan memahami konsep-konsep dasar seperti objek, atribut, metode, dan hubungan antar objek, kita dapat merancang sistem yang lebih modular, mudah dikelola, dan siap untuk berkembang sesuai kebutuhan. Jangan lupa untuk terus berlatih dan menerapkan prinsip-prinsip ini dalam proyek Anda. Sampai jumpa di artikel berikutnya, dan tetap semangat dalam eksplorasi dunia pemrograman!
Comments
Post a Comment