Objektumelvű tervezés alapjai · Single responsibility principle: Egy programegység csak...

Preview:

Citation preview

Objektumelvű tervezés alapjai

SOLID elvekSingle responsibility principle: Egy programegység csak egyvalamiért felelhet.

Open/closed principle: a programegységek nyitottak a kiterjesztésre, de zártak a módosításra (Kiterjeszthető az osztály módosítása nélkül).

Liskov substitution principle: Az objektumok altípusaik példányaival helyettesíthetőek a program értelmének megváltozása nélkül.

Interface segregation principle: Több kliens specifikus interfész használata egy általános helyett. Egy kliens nem függhet olyan metódusoktól, amelyeket nem használ.

Dependency inversion principle: Az egyes programegységek függőségei absztakciók, nem konkrét implementációk.

SRP

SRP

OCP

LSPMinden olyan helyen, ahol a szülő osztály egy példányát használjuk, kicserélhető a leszármazott osztály példányával a program jelentésének megváltozása nélkül.

- Az altípusos polimorfizmus és az LSP hasonló fogalom. Mi is volt az altípusos polimorfizmus?

- Emlékeztető:

Person <|-- Student eseténPerson p = new Student();learn((Student)p); // helyes, learn szignatúrája: void learn(Student s) {…}payTaxes(p); // helyes, payTaxes szignatúrája: void payTaxes(Person s) {…}

Tehát a „p” tud Studentként és Personként is viselkedni.

LSPclass Car { public void doTaxiService() {...}}class Truck extends Car {...}

Car c = new Car();c.doTaxiService();c = new Truck();c.doTaxiService(); ??

Probléma általában: nem átgondolt öröklődés (UnsupportedOperationException)

ISP

ISP

DIP

Design patterns

- Előadáson néhány előkerül említés szinten- Architekturális, létrehozási, strukturális, viselkedési minták- Nem receptek, hanem ajánlások gyakran előforduló problémákra- Célszerű ezeket megismerni, a hatékonyabb munka érdekében

Szoftverarchitektúrák

- Szoftverarchitektúrának nevezzük a szoftver fejlesztése során meghozott elsődleges tervezési döntések halmazát.

- A szoftver architektúra elsődleges feladata a rendszer magasszintű felépítésének és működésének meghatározása, a komponensek és relációk kiépítése

Monolitikus architektúra

Model-nézet architektúra

Model-nézet-perzisztencia

MVC

MVC

Rendszerterv

Rendszerterv

UML use case diagram

UML package diagram

UML package diagram

UML component diagram

UML deployment diagram

UML state machine diagram

UML sequence diagram

ForrásokÁbrák, idézett szövegek: Giachetta Roberto előadásdiái