Skip to content

Commit

Permalink
sw_concepts: replace liskov substitution principle example
Browse files Browse the repository at this point in the history
And also remove the 's behind Liskov.
The name is not written consistently in the literature,
and without the 's it is just easier.
  • Loading branch information
BacLuc committed May 17, 2024
1 parent 0f30725 commit 465ab95
Showing 1 changed file with 9 additions and 22 deletions.
31 changes: 9 additions & 22 deletions topics/sw_concepts/sw_concept_slides.md
Original file line number Diff line number Diff line change
Expand Up @@ -334,37 +334,22 @@ Open Closed Beispiel: nachher

\colEnd

Liskov's substitution principle
Liskov substitution principle
-------

* Implementationen eines Interfaces müssen ausgetauscht werden können.
* Sie nehmen mindestens die gleichen Inputwerte an (dürfen auch mehr).
* 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
-------
Expand All @@ -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
------

Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 465ab95

Please sign in to comment.