# Pengenalan SOLID principle

**SOLID** adalah singkatan dari lima prinsip desain objek yang penting dalam pemrograman berorientasi objek (OOP). Prinsip-prinsip ini membantu menghasilkan sistem yang mudah dimengerti, fleksibel, dan mudah dirawat. Berikut adalah penjelasan singkat dari masing-masing prinsip SOLID:

1. **Single Responsibility Principle (SRP):** Sebuah kelas harus memiliki hanya satu alasan untuk berubah, artinya, kelas tersebut harus hanya memiliki satu tanggung jawab atau fungsi.
2. **Open/Closed Principle (OCP):** Perangkat lunak (kelas, modul, fungsi, dll.) harus terbuka untuk perluasan, tetapi tertutup untuk modifikasi, yang berarti kita dapat menambahkan fungsionalitas baru tanpa mengubah kode yang sudah ada.
3. **Liskov Substitution Principle (LSP):** Objek dari kelas dasar harus dapat diganti dengan objek kelas turunan tanpa mengganggu koreksi dari program yang menggunakan objek tersebut.
4. **Interface Segregation Principle (ISP):** Klien tidak boleh dipaksa untuk bergantung pada antarmuka yang tidak digunakan. Dalam konteks ini, "interface" merujuk pada kontrak yang didefinisikan oleh sebuah kelas atau modul.
5. **Dependency Inversion Principle (DIP):** Modul tingkat tinggi tidak boleh tergantung pada modul tingkat rendah. Keduanya harus bergantung pada abstraksi. Abstraksi tidak boleh tergantung pada detail. Detail harus bergantung pada abstraksi.

Sumber: "Design Principles and Design Patterns" oleh Robert C. Martin (Uncle Bob) - [Wikipedia](https://en.wikipedia.org/wiki/SOLID)
