From a52ad438557d258fc4bc6b2edf7b3ec9fee65c2f Mon Sep 17 00:00:00 2001 From: Yousri <54667@etu.he2b.be> Date: Tue, 10 May 2022 11:15:24 +0200 Subject: [PATCH] UML OCP finished, Start with Liskov Substitution Principle --- Intro_to_Solid.md | 14 ++++++++++++-- assets/UML_Solid | Bin 0 -> 32602 bytes 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 assets/UML_Solid diff --git a/Intro_to_Solid.md b/Intro_to_Solid.md index adc6da5..32c79c5 100644 --- a/Intro_to_Solid.md +++ b/Intro_to_Solid.md @@ -144,7 +144,7 @@ class InvoicePersistence(abc.ABC): The new _InvoicePersistence_ class has an abstract method. So, if a class inherits the _InvoicePersistence_ class, you have to implement the _save_ method. -And for example, we will create a _DataBasePersistence_ class, and this class inherit the abstract _InvoicePersistence_ class. +And for example, we will create a _DataBasePersistence_ class, and this class inherits the abstract _InvoicePersistence_ class. ```python class DatabasePersistence(InvoicePersistence): def __init__(self, invoice): @@ -154,7 +154,7 @@ class DatabasePersistence(InvoicePersistence): def save(self, invoice): print("Save in database ...") ``` -Let's make the same thing with _FilePersistence_ class. +Let's do the same thing with _FilePersistence_ class. ```python class FilePersistence(InvoicePersistence): def __init__(self, invoice): @@ -164,3 +164,13 @@ class FilePersistence(InvoicePersistence): def save(self, invoice): print("Save to file ...") ``` +Ok, we do a lot of things, let's make a UML to represent our class structure. + +
+ +
+ +That will be more simple to do extension. + +### Liskov Substitution Principle + diff --git a/assets/UML_Solid b/assets/UML_Solid new file mode 100644 index 0000000000000000000000000000000000000000..a2581d6c6937b4506260e883f680715e3f2415e2 GIT binary patch literal 32602 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 Zz`m{PRBUcsgER5xhYlXmOw%|K^k4d|Moj