A brief introduction to the OOP concepts, Software Design Principles and Design Patterns. The presentation shows how to refactor C# code with applying some design principles and patterns to implement loose coupling
4. OOP SÄULEN
ENCAPSULATION, INHERITANCE & POLYMORPHISM
• Unterklasse ist abgeleitet von
vorhandener Klasse
• Unterklasse kann neue Daten und
Methoden definieren
4
5. OOP SÄULEN
ENCAPSULATION, INHERITANCE & POLYMORPHISM
• Lamp-Wire-Battery
public static LightOn( Battery bat)
{ // connect the lamp and the battery using the wire }
LightOn(cubeBat); LightOn(bigBat); LightOn(smallBat);
Battery
CubeBattery: Battery
SmallBattery: Battery
BigBattery: Battery
5
7. DIE S.O.L.I.D DESIGN PRINZIPIEN
SRP,OCP,LSP,ISP,DIP, DI&IOC
• Single Responsibility Principle (SRP)
• Objekt hat genau eine Aufgabe
7
8. DIE S.O.L.I.D DESIGN PRINZIPIEN
SRP,OCP,LSP,ISP,DIP, DI&IOC
• Open-Close Principle (OCP)
• Open for extension
• Close for modification
8
9. DIE S.O.L.I.D DESIGN PRINZIPIEN
SRP,OCP,LSP,ISP,DIP, DI&IOC
• Liskov Substitution Principle (LSP)
• Wenn ein Programm mit der Klasse A
richtig ist, dann ist es auch noch richtig,
wenn wir die Objekte von A mit den
Objekten von B ersetzen wobei B von A
abgeleitet ist
9
10. DIE S.O.L.I.D DESIGN PRINZIPIEN
SRP,OCP,LSP,ISP,DIP, DI&IOC
• Interface Segregation Principle (ISP)
• Viele spezialisierte Schnittstellen sind
besser als eine Allzweck-Schnittstelle
10
11. DIE S.O.L.I.D DESIGN PRINZIPIEN
SRP,OCP,LSP,ISP,DIP, DI&IOC
• Dependency Inversion Principle (DIP)
• Gegen Abstraktion (Interface)
implementieren und nicht gegen konkrete
Klasse
• Module entkoppeln
11
12. DIE S.O.L.I.D DESIGN PRINZIPIEN
SRP,OCP,LSP,ISP,DIP, DI&IOC
• Dependency Injection (DI)
• Abhängigkeit über Konstruktor, Methode
oder Property zurVerfügung stellen
• Inversion of Control (IoC)
• IoC container invertiert die
Ablaufsteuerung des Programms
12