Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:ffit:3-jahr:java:learningunits:lu03:a [2025/08/29 12:16] – apeter | de:modul:ffit:3-jahr:java:learningunits:lu03:a [2025/09/01 12:18] (aktuell) – apeter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== LU03a - Funktionale Implementationen 2 ====== | + | ====== LU03a - Prinzipien 1 (DRY, SRP) ====== |
| + | |||
| + | ==== Prinzipien ==== | ||
| + | |||
| + | * **DRY (Don’t Repeat Yourself)** | ||
| + | * **SRP (Single Responsibility Principle)** | ||
| + | * //OCP (Open/ | ||
| + | * //LSP (Liskov Substitution Principle)// | ||
| + | * //ISP (Interface Segregation Principle)// | ||
| + | * //DIP (Dependency Inversion Principle)// | ||
| + | * //KISS (Keep It Simple, Stupid)// | ||
| + | * //YAGNI (You Ain’t Gonna Need It)// | ||
| + | * //SoC (Separation of Concerns)// | ||
| + | * //Law of Demeter (Principle of Least Knowledge)// | ||
| + | |||
| + | SOLID steht wiederum für SRP, OCP, LSP, ISP, DIP | ||
| + | |||
| + | Wir fokussieren uns erstmal auf **DRY** und **SRP**. | ||
| + | |||
| + | === DRY === | ||
| + | |||
| + | Code ist viel simpler art- und erweiterbar, | ||
| + | |||
| + | Wenn Sie zum Beispiel an zwei unterschiedlichen Orten denselben Datenbankaufruf haben, kann man diese Funktionalität auslagern in eine gemeinsame Methode (oder oftmals gar eine eigene Klasse). | ||
| + | |||
| + | <code java> | ||
| + | Connection conn = DriverManager.getConnection(URL, | ||
| + | </ | ||
| + | |||
| + | <code java> | ||
| + | public class Database { | ||
| + | private static final String URL = Config.get(" | ||
| + | private static final String USER = Config.get(" | ||
| + | private static final String PASSWORD = Config.get(" | ||
| + | |||
| + | public static Connection getConnection() throws SQLException { | ||
| + | return DriverManager.getConnection(URL, | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Kontrollieren Sie Ihren Code hinsichtlich dieses Prinzips und korrigieren Sie bei Bedarf. | ||
| + | |||
| + | === SRP === | ||
| + | Jede Klasse sollte nur einen Aufgabenbereich haben. Das Lesen und Schreiben von Dateien ist somit zu trennen von der Logik für den Zugriff auf die Datenbank usw. | ||
| + | |||
| + | Kontrollieren Sie Ihren Code hinsichtlich dieses Prinzips und korrigieren Sie bei Bedarf. | ||
| + | |||
| + | Ein möglicher Aufbau der Klassen könnte folgendermassen aussehen. | ||
| + | |||
| + | {{: | ||
| - | ==== Weitere Anpassungen ==== | ||
| - | **Change request 2.1**: Damit '' | ||