5 Prinsip Solid yang Dijelaskan

Hari ini saya ingin berbicara tentang S.O.L.I.D., lima prinsip pertama dari pemrograman berorientasi objek yang kami temukan penting untuk membangun perangkat lunak yang bekerja. Jika Anda tidak mengetahuinya, dalam pemrograman komputer, akronim prinsip SOLID diperkenalkan oleh Michael Feathers untuk lima prinsip yang didefinisikan oleh Robert C. Martin pada awal tahun 2000-an.

Seperti yang Anda ketahui, untuk mendapatkan perangkat lunak yang berfungsi, kita harus memiliki kopling yang rendah, kohesi yang tinggi dan enkapsulasi yang kuat, yang merupakan sesuatu yang prinsip SOLID membantu kita memperolehnya. Idenya adalah bahwa, dengan menerapkan prinsip-prinsip itu bersama-sama, Anda dapat menulis kode kualitas yang lebih baik yang kuat. Sistem yang dibuat menjadi mudah dipelihara, digunakan kembali, dan diperluas seiring waktu. Pada dasarnya, prinsip SOLID membantu pengembang perangkat lunak untuk mencapai skalabilitas dan menghindari bahwa kode Anda rusak setiap kali Anda menghadapi perubahan.

OK, jadi mari kita mulai dengan dasar-dasar, S.O.L.I.D. berdiri untuk:

S – Prinsip tanggung jawab tunggal

O – Open-closed principle

Prinsip substitusi L – Liskov

I – Prinsip segregasi antarmuka

D – Prinsip Inversi Ketergantungan

Mari kita lihat setiap prinsip secara individual untuk memahami mengapa S.O.L.I.D dapat membantu pengembang untuk membangun perangkat lunak berkualitas.

Prinsip-Prinsip Pokok

1. prinsip Tanggung jawab tunggal

"Seharusnya tidak pernah ada lebih dari satu alasan bagi sebuah kelas untuk berubah."

Seperti yang Anda lihat, prinsip ini menyatakan bahwa suatu objek / kelas hanya boleh memiliki satu tanggung jawab dan bahwa itu harus sepenuhnya dikemas oleh kelas. Di sini, ketika kita berbicara tentang tanggung jawab, kita berarti alasan untuk berubah. Prinsip ini akan mengarah pada kohesi yang lebih kuat di kelas dan kopling yang lebih longgar antara kelas ketergantungan, pembacaan yang lebih baik dan kode dengan kompleksitas yang lebih rendah.

Jauh lebih sulit untuk memahami dan mengedit kelas ketika memiliki berbagai tanggung jawab. Jadi jika kita memiliki lebih dari satu alasan untuk berubah, fungsi ini akan dibagi menjadi dua kelas dan masing-masing akan menangani tanggung jawabnya sendiri.

Kami peduli memisahkan fungsi karena setiap tanggung jawab adalah akses perubahan. Ketika kelas memiliki lebih dari satu tanggung jawab, tanggung jawab tersebut menjadi digabungkan dan penggandengan ini dapat mengarah pada basis kode yang rapuh yang sulit untuk refactor ketika persyaratan Anda muncul.

2. Prinsip terbuka-tertutup

"Entitas perangkat lunak (kelas, modul, fungsi, dll.) Harus terbuka untuk ekstensi, tetapi ditutup untuk modifikasi."

Di sini, idenya adalah bahwa suatu entitas memungkinkan perilakunya diperluas tetapi tidak pernah dengan memodifikasi kode sumbernya. Kelas apa pun (atau apa pun yang Anda tulis) harus ditulis sedemikian rupa sehingga dapat digunakan apa adanya. Ini dapat diperpanjang jika perlu, tetapi tidak pernah dapat dimodifikasi. Anda dapat mempertimbangkan ini ketika Anda menulis kelas Anda. Gunakan kelas dengan cara apa pun yang Anda butuhkan, tetapi memodifikasi perilakunya datang dengan menambahkan kode baru, tidak pernah dengan memodifikasi yang lama. Prinsip yang sama dapat diterapkan untuk modul, paket, pustaka.

Dengan menerapkan prinsip terbuka-tertutup Anda akan mendapatkan kopling longgar, Anda akan meningkatkan keterbacaan dan akhirnya, Anda akan mengurangi risiko melanggar fungsi yang ada.

3. Prinsip penggantian Liskov

"subtipe harus dapat diganti untuk jenis dasarnya"

Seperti namanya mengatakan itu, Prinsip Pergantian Likov didefinisikan oleh Barbara Liskov. Idenya di sini adalah bahwa objek harus dapat diganti dengan contoh subtipe mereka, dan itu tanpa mempengaruhi fungsi sistem Anda dari sudut pandang klien. Pada dasarnya, daripada menggunakan implementasi yang sebenarnya, Anda harus selalu dapat menggunakan kelas dasar dan mendapatkan hasil yang Anda tunggu. Seringkali ketika kita ingin merepresentasikan suatu objek, kita memodelkan kelas-kelas kita berdasarkan sifat-sifatnya dan alih-alih itu, kita seharusnya benar-benar lebih fokus pada perilaku.

Prinsip ini pada dasarnya menegaskan bahwa abstraksi kita benar dan membantu kita mendapatkan kode yang mudah digunakan kembali dan hierarki kelas yang sangat mudah dipahami.

Apa yang banyak dikatakan adalah bahwa Pergantian Prinsip Liskov memiliki hubungan yang sangat kuat dengan prinsip sebelumnya, prinsip terbuka-tertutup. Robert C. Martin bahkan mengatakan bahwa "pelanggaran LSP adalah pelanggaran laten OCP".

4. Prinsip segregasi antarmuka

"Kelas yang mengimplementasikan antarmuka, tidak harus dipaksa untuk menerapkan metode yang tidak mereka gunakan."

Di sini, ini tentang cara menulis antarmuka. Jadi apa yang dikatakan? Pada dasarnya, begitu antarmuka menjadi terlalu besar / gemuk, kita benar-benar perlu membaginya menjadi antarmuka kecil yang lebih spesifik. Dan antarmuka akan ditentukan oleh klien yang akan menggunakannya, yang berarti bahwa klien antarmuka hanya akan tahu tentang metode yang terkait dengan mereka.

Sebenarnya, jika Anda menambahkan metode yang seharusnya tidak ada, kelas yang mengimplementasikan antarmuka harus menerapkan metode-metode itu juga. Itulah mengapa; Klien tidak harus dipaksa untuk bergantung pada antarmuka yang tidak mereka gunakan. ISP dimaksudkan untuk menjaga sistem dipisahkan dan dengan demikian lebih mudah untuk refactor, perubahan, dan menyebarkan.

5. Prinsip Ketergantungan Inversi

"Modul tingkat tinggi tidak boleh bergantung pada modul tingkat rendah, melainkan keduanya harus bergantung pada abstraksi. Abstraksi tidak boleh bergantung pada detail; melainkan detail harus bergantung pada abstraksi."

Terakhir dari prinsip-prinsip SOLID tetapi tidak sedikit, prinsip ini terutama berkaitan dengan mengurangi ketergantungan antara modul kode. Pada dasarnya, Prinsip Ketergantungan Ketergantungan akan sangat membantu dalam memahami cara menggabungkan sistem Anda dengan benar.

Jika detail implementasi Anda akan tergantung pada abstraksi tingkat yang lebih tinggi, itu akan membantu Anda untuk mendapatkan sistem yang digabungkan dengan benar. Juga, itu akan mempengaruhi enkapsulasi dan kohesi sistem itu.

Kesimpulan

Ketika mengembangkan perangkat lunak apa pun, ada dua konsep yang sangat penting: kohesi (ketika bagian yang berbeda dari suatu sistem akan bekerja sama untuk mendapatkan hasil yang lebih baik daripada jika setiap bagian akan bekerja secara individual) & kopling (dapat dilihat sebagai tingkat ketergantungan kelas, metode atau entitas perangkat lunak lainnya).

Kopling biasanya hadir dalam banyak kode dan seperti yang saya sebutkan sebelumnya, situasi yang optimal adalah memiliki kopling rendah dan kohesi tinggi. Dengan pengantar singkat tentang 5 prinsip SOLID ini, Anda harus memahami bahwa mereka membantu kita ketika sampai pada hal itu.

Ada begitu banyak prinsip dalam rekayasa perangkat lunak dan saya akan merekomendasikan bahwa sebelum menulis kode, Anda harus melakukan riset, membaca, dan mencoba memahami prinsip-prinsipnya. Meskipun mungkin tampak seperti banyak, SOLID menjadi bagian dari Anda dan kode Anda dengan menggunakannya secara terus menerus dan menyesuaikan pedomannya.

Teleskop – Prinsip Operasi dan Faktor-faktor yang Mempengaruhi Sifat-Sifatnya

Teleskop adalah perangkat yang digunakan untuk melihat objek yang jauh. Mereka menemukan penggunaannya dalam astronomi dan fisika. Ini memungkinkan Anda untuk melihat objek yang jauh dengan memperbesarnya. Ada banyak jenis teleskop dan harganya bervariasi sesuai dengan spesifikasinya. Banyak aksesori juga tersedia yang dapat digunakan bersama dengan teleskop. Teleskop kecil yang digunakan sebagai mainan juga mampu melihat beberapa objek sekitar 50 meter.

Prinsip di mana teleskop berfungsi

Prinsip di mana teleskop bekerja sangat sederhana. Ada dua lensa yang membentuk tugas untuk melihat objek yang berada pada jarak tertentu. Salah satu lensa mengambil cahaya dari objek yang dilihat dan membuatnya tersedia di titik fokus. Lensa lain mengambil cahaya terang dari titik fokus dan menyebarkannya ke retina Anda sehingga Anda dapat melihat. Lensa yang mengambil cahaya dari objek disebut lensa objektif atau cermin utama. Lensa yang mengambil cahaya dari titik fokus disebut lensa eyepiece.

Faktor-faktor yang mempengaruhi tampilan objek

Kemampuan teleskop untuk mengumpulkan cahaya dari objek yang dilihat dan kemampuan untuk memperbesar gambar adalah faktor-faktor yang mempengaruhi efisiensi teleskop. Kemampuan mengumpulkan cahaya dari objek tergantung pada diameter lensa atau cermin, yang sebaliknya disebut aperture. Semakin besar bukaan, semakin banyak cahaya yang bisa dikumpulkannya. Memperbesar gambar tergantung pada kombinasi lensa yang digunakan. Lensa mata di teleskop melakukan pembesaran.

Beberapa teleskop optik terbesar di dunia beroperasi

Kami mengatakan teleskop menjadi lebih besar berdasarkan ukuran aperture. Berdasarkan ini kita dapat mengatakan bahwa Keck dan Keck II adalah teleskop terbesar yang beroperasi dengan ukuran lobang 10 meter. Teleskop Keck terdiri dari 36 segmen cermin. Ini terletak di Mauna Kea, Hawaii. Terbesar berikutnya adalah Hobby-Eberly yang terletak di Mt. Fowlkes, Texas yang memiliki celah 9,2 meter. Anda bisa mendapatkan daftar teleskop optik terbesar di http://astro.nineplanets.org/bigeyes.html.

Memilih teleskop Anda

Pilihan teleskop sangat tergantung pada apa yang ingin Anda amati. Anda dapat memilih teleskop gabungan dan teleskop jenis refraktor untuk dilihat melalui langit perkotaan. Untuk langit pedesaan, Anda dapat menggunakan teleskop dan reflektor gabungan. Mereka lebih baik daripada teleskop jenis refraktor. Setiap jenis memiliki kelebihan dan kekurangannya sendiri. Oleh karena itu, banyak orang memiliki teleskop yang berbeda untuk tujuan yang berbeda.