Saya telah mempelajari OOP bersamaan dengan implementasi MVC Zend selama beberapa bulan terakhir. Saya cukup baru dalam pemrograman, tetapi saya merasa sangat kuat bahwa saya harus mempelajari berbagai hal dengan cara yang 'benar', yang bagi saya berarti memastikan saya memahami mengapa segala sesuatunya dilakukan sebagaimana adanya. Yaitu, saya telah menemukan bahwa dalam mempelajari cara melakukan sesuatu (apa saja, katakan musik), cara terbaik untuk belajar bagaimana melakukan sesuatu adalah dengan mengetahui mengapa hal itu dilakukan dengan cara itu.
Bagaimanapun, saya telah berjuang sangat keras dengan memahami bagaimana mengembangkan model bisnis saya sendiri (yaitu, M dari MVC), dan saya telah memutuskan itu bukan karena saya tidak mengerti OOP secara umum, karena saya telah mempelajarinya untuk beberapa berbulan-bulan dan saya tidak berpikir konsepnya sangat sulit untuk dipahami. Saya menemukan contoh-contoh yang saya pelajari sangat intuitif. Masalahnya bagi saya, saya pikir, terletak pada proses menerjemahkan masalah saya sendiri menjadi solusi berorientasi objek. Contoh-contoh dalam buku (yang telah saya baca sejauh ini) terlalu jelas, sehingga proses menerjemahkan masalah menjadi objek tidak terlalu sulit. Apa yang saya pikir mungkin saya lewatkan adalah proses abstrak tingkat tinggi. Semacam daftar langkah atau pertanyaan yang harus dijawab oleh setiap solusi berorientasi objek pada level tertinggi.
Jika Anda harus menggambarkan proses seperti itu dalam tidak lebih dari lima langkah, akan seperti apa mereka dan mengapa? Apa proses yang paling efektif dalam menerjemahkan masalah menjadi solusi berorientasi objek?
sumber
Jawaban:
Menemukan model yang cocok tidak selalu mudah. Ini adalah salah satu dari hal-hal ini yang membutuhkan lebih banyak pengalaman daripada pengetahuan biasa. Namun, resep sederhana berikut mungkin dapat membantu Anda mengatasi gangguan mental awal.
Awalnya dijelaskan dalam makalah ini oleh Abbott dan sering disebut sebagai "analisis tekstual Abbott".
Contoh:
Kata benda , kata kerja dan
adjectives
ditandai.Iterasi analisis pertama akan menghasilkan:
Kelas:
Mulai dari sini, Anda dapat berpikir tentang kelas mana yang memerlukan atribut dan metode untuk mengimplementasikan perilaku dan kemudian memperbaiki model tersebut.
sumber
Menurut pendapat saya, mengambil pendekatan TDD adalah alami dan efisien:
Dengan proses ini, Anda dapat secara bertahap menghasilkan kode yang dapat diuji dengan desain suara. Anda mungkin berpikir pada awalnya bahwa tes menulis tidak perlu tetapi aktivitas itu sebenarnya membantu Anda membangun arsitektur suara.
sumber
Berikut langkah-langkah yang saya gunakan dalam kode c ++:
Alasan untuk (1) adalah bahwa ia mendefinisikan ruang lingkup apa fungsi milik kelas. Alasan untuk (2) adalah bahwa ia mendefinisikan bagaimana kelas berkomunikasi dengan dunia luar. Alasan untuk (3) adalah bahwa ia mendefinisikan bagaimana memilih fungsionalitas kelas yang diperlukan dalam setiap situasi. Alasan untuk (4) adalah memungkinkan kelas digunakan dalam banyak situasi yang berbeda. Alasan untuk (5) adalah bahwa ia mendefinisikan batas antara desain dan implementasi.
sumber