From 465ab955320a7f9b952f2f3762129b08e360e2c8 Mon Sep 17 00:00:00 2001 From: Lucius Bachmann Date: Fri, 3 May 2024 13:32:50 +0200 Subject: [PATCH] sw_concepts: replace liskov substitution principle example And also remove the 's behind Liskov. The name is not written consistently in the literature, and without the 's it is just easier. --- topics/sw_concepts/sw_concept_slides.md | 31 +++++++------------------ 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/topics/sw_concepts/sw_concept_slides.md b/topics/sw_concepts/sw_concept_slides.md index 594fb3b..125b20d 100644 --- a/topics/sw_concepts/sw_concept_slides.md +++ b/topics/sw_concepts/sw_concept_slides.md @@ -334,7 +334,7 @@ Open Closed Beispiel: nachher \colEnd -Liskov's substitution principle +Liskov substitution principle ------- * Implementationen eines Interfaces müssen ausgetauscht werden können. @@ -342,29 +342,14 @@ Liskov's substitution principle * Sie geben maximal die gleichen Rückgabewerte zurück. * Werfen maximal die gleichen Exceptions (oder Subtypen der Exceptions). -Beispiel einer Verletzung des Liskov's substitution principle +Beispiel einer Verletzung des Liskov substitution principle ------- -```python -class Vehicle: - pass - -class Car(Vehicle): - pass - -class Bicycle(Vehicle): - pass - -class Garage: - def park(self, vehicle: Vehicle): - pass +![Liskov substitution principle bad case](images/interface-segregation/interface-segregation-bad-case.png) -class BicycleGarage(Garage): - def park(self, vehicle: Vehicle): - if (not isinstance(vehicle, Bicycle)): - raise ValueError("BicycleGarage can only park bicycles") - -``` +Das Liskov Substitution Principle ist hier verletzt, da die `DishWashingMachine::washClothes` +Methode sich nicht so verhält, wie das Interface verlangt.\ +`DishWashingMachine` kann nicht überall dort eingesetzt werden, so das Interface `Washer` verlangt wird. Interface Segregation ------- @@ -386,6 +371,8 @@ Interface Segregation Beispiel nachher ![Interface Segregation good case](images/interface-segregation/interface-segregation-good-case.png) +Hier lösen wir die Verletzung des Liskov Substitution Principles mit Interface Segregation. + Dependency Inversion ------ @@ -554,7 +541,7 @@ Zusammenfassung * SOLID Principles * Single Responsibility Principle * Open Closed Principle - * Liskov's Substitution Principle + * Liskov Substitution Principle * Interface Segregation Principle * Depdendency Inversion Principle * Design Patterns