# 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://zakimaliki.gitbook.io/solid-principle/pengenalan-solid-principle.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
