DP - Objektumorientált tervezés Design Patternekkel

A következő aktuális időpontról érdeklődjön telefonon, vagy a NetAcademia postán keresztül.

A tanfolyam hossza: 4 nap
Ára: 285 000 Ft +ÁFA

Általános leírás
A .NET Framework lassan a domináns platformmá válik a Microsoft technológiákat használó fejlesztők számára. A .NET Framework egy nagyon szépen felépített objektumorientált API, amin keresztül gazdag funkcionalitáskészlet érhető el. Ám ennek kiaknázásához már nem elég a megfelelő függvényeket a megfelelő sorrendben meghívni, a Framework objektumorientált jellegéből következik, hogy számos objektumorientált elvre épít, amelyeket nem csak a szerzőknek, de nekünk, a keretrendszert használóknak is ismerni kell, ha tényleg ki akarjuk használni a benne rejlő lehetőségeket.
Az elmúlt évek C# oktatása közben nagyon sok hallgatón látszott, hogy hiányzik neki az a plusz, amitől érti, milyen vezérelvek mentén rakták össze a keretrendszert, és miért pont úgy kell használni bizonyos funkciókat, ahogy azt a dokumentáció írja. Ha megértjük azokat a design elveket, amelyek mentén az összes keretrendszer, beleértve a .NET Framework-öt is felépül, akkor sokkal magasabb szinten, és sokkal tudatosabban tudunk majd fejleszteni.
Ezt ígéri ez a tanfolyam is. Fejlesztői, tervezői tudatosságot ad, hogy ne szolgaként, lebutított RTFM üzemmódban használjuk az objektumorientált képességeket, hanem emelt fővel lehessünk a Framework írói, társszerzői és szakértő használói.

Szükséges előismeretek
Szükséges előismeretek
az OO fogalmak alapismerete elengedhetetlenül fontos a tanfolyam megértéséhez. A kurzus Design Patterns alapokkal, de nem OO alapokkal foglalkozik. Az OOP alapfogalmakról, mint például absztrakció, egységbe zárás vagy polimorfizmus beszélünk a tanfolyamon, de aki életében először hallja ezeket a fogalmakat, annak e kurzus meredek lesz. A példák C# alapúak, ezért a nyelv ismerete, de minimum JAVA vagy C++ ismeret elengedhetetlen a példák értéséhez.
A hallgatók nyomtatott tananyagot kapnak, valamint Erich Gamma, Richard Helm, Ralph Johnson és John Vlissides Programtervezési minták című könyvét.

A tanfolyam elvégzésével szerezhető képességek
Objektumorientált rendszerek tervezése Design Patternek segítségével

A tanfolyam tartalma
1. Bevezetés
Mennyi időt szánjunk analízisre, tervezésre, programozásra, tesztelésre? Fejlesztési processzek és módszertanok. Miért van rájuk szükség? Hogyan gondolkodjunk egy szoftver projektről? Muként szervezzük meg a buildeket? A Unified Process és az Extreme Programming alapvető elemei. Az Iterative Development jelentősége, főbb fázisai. Mik azok az Agile processzek? Jól használható Extreme Programming alapelvek.
2009+: Continous Integration Team Foundation Serverrel.
2. Bevezetés az Objektumorientált analízisbe
Az OO analízis jelentősége, helye egy szoftver életciklusában. Mit jelent az analízis és a tervezés? Mi az az UML, mire való? A legfontosabb UML diagramok. OO analízis főbb eszközei: System Sequence Diagram (SSD), Domain Model, Interaction Diagram. Fogalmi (probléma-tartománybeli) osztályok megkeresése. Fogalmi osztály kategória lista, Főnevek keresése, Analízis könyvek, Analysis patterns. Asszociációk hozzáadása a Domain Modelhez. Domain Model rajzolása Visioban. Common Associations List, Coad Object Model Patternek. Attribútumok hozzáadása a Domain Modelhez. Operation Contractok.
3. Objektumorientált fogalmi alapozás
Osztály, objektum fogalmak letisztázása. Identitás, állapot, viselkedés. Absztrakció fogalmának megvilágítása. Mi az az encapsulation? Objektumszintű és osztályszintű adatok. Statikus mezők, metódusok. Objektumorientált rendszerek felépítése: öröklődés, osztályhierarchiák, egyszeres -és többszörös öröklődés, polimorfizmus, absztrakt alaposztályok, interfészek, korai és kései kötés.
4. Objektumorientált tervezési és UML alapok
OOP tervezés alapvető eszközei: Class diagram, Interaction diagram, GRASP analízis, Sequence és Collaboration Diagramok. Az objektumorientált tervezés alapvető eszközei: Class diagram, Interaction diagram, GRASP analízis, Sequence és Collaboration Diagramok. Objektumok felelősségének tisztázása. Felelősség kategóriák. General Responsibility Assignment Software Patterns: alapvető felelősség elosztási patternek elemzése: Information Expert, Creator, Low Coupling, High Cohesion, Controller, Polimorphism, Indirection, Pure Fabrication, Protected Variations. UML class diagram visszafejtése programkódból.
2009+: a Visual Studio 2008 class modellező eszköze.
5. Karbantartható kódírási alapelvek
Tervezési alapok: erős kohézió, gyenge csatolás, no redundancia. A "Gang of Four" tervezési tanácsai.
Interfész alapú programozás. Aggregálás vs. leszármaztatás. A leszármaztatás hátulütői.
Az adatrejtés elvének kitágítása. Az objektumok fogalmának újraértelmezése.
2009+: Refactoring eszközök a Visual Studio 2008-ban.
6. Mik azok a Design Patternek?
Fogalmi meghatározás. Mit ígérnek a patternek? Mire nem jók a patternek? Milyen témakörökben találhatunk patterneket? A Design Patterns könyv és alapvető használata.
7. A Bridge pattern felderítése
Egy Postscript és PDF kimentű rajzolóprogram példájából indulunk ki. Megnézzük, hogy hagyományos OO elvek alapján a leszármaztatás hatására exponenciálisan elszaporodnak az osztályok a problématartományban. Ezek után közösen gondolkodva bevetjük a korábbi fejezetekben alkalmazott GRASP patterneket valamint a GoF alapelveket, így megszüljük az egyik leghasznosabb patternt, a Bridge-et. Azaz "levezetjük" a patternt a korábban tanult alapelvek felhasználásával.
Labor: Előkészítettünk egy példát, ami egy egyszerűsített ADO.NET alapú adatelérő réteg (Data Access Layer, DAL), ami SQL Server és Access háttérrel képes üzleti entitásokat elmenteni és visszatölteni. A példa szenved az exponenciális robbanás problémájától. A hallgatók feladata a példát úgy refactorolni, hogy az a Bridge pattern alapján minimális munkával bővíthető legyen új adatbázisokhoz és új üzleti entitásokhoz.
8. A Strategy pattern
Algoritmuscsaládok definiálása és kezelése.
2009+: példák a Windows Communication Foundationből és a Windows Presentation Foundationből.
9. Az Adapter Pattern
Hogyan hozzunk össze nem együttműködésre tervezett osztályokat, osztályhierarchiákat? Miként lehet összebékíteni egymással nem összeillő interfészeket? Hogyan lehet olyan komponenseket tervezni, amelyekhez a külvilág hozzácsatolhatja a saját bővítését (Pluggable Adapterek). Milyen eszközök vannak erre hagyományos interface és .NET-es delegate alapon?
2009+: SQL Bulk Copy adapter tetszőleges adatforrások nagyon gyors SQL Serverbe betöltéséhez (több 10x gyorsabban mint insertekkel).
Labor:
A laborpéldánk egy Windows Form TreeView osztályból leszármaztatott osztály, amely képes tetszőleges hierarhikus adatforrást bejárni és azt megjeleníteni. A hierarchia és a vezérlő között egy interface biztosítja az átjárást (illesztést).
Adott egy diagnosztikai (object) adapter, amely a .NET Reflection felhasználásával képes bármely objektumot IListSource interfésszé átalakítani, így a DataGrid osztállyal kiírathatjuk bármilyen objektum jellemzőinek nevét és értékét.
Feladat, hogy refactoroljuk az Object Adaptert Class Adapterré!
10. A Singleton Pattern
Egyedi példány biztosítása. Alosztályok készítése az Egyke osztályhoz.
2009+: Object pool singletonnal, a garbage collector okozta időveszteség csökkentésére.
11. A Composite Pattern
Hogyan építsünk fel rekurzív kompozíciókat (hierarchikus adatszerkezeteket), amelyekben az egyedi és a csoportokat reprezentáló csomópontok is egyformán kezelhetők? Mire használható ezek az adatszerkezetek? Hogyan segíthetnek ezek pl. üzleti szabályok kezelésében?
Labor:
Egy fájlrendszert reprezentáló osztályhierarchia összeállítása, amely képes visszaadni tetszőleges csomópont (fájl vagy könyvtár) hosszát.
Gyorsítsuk fel a méret lekérdezését bizonyos információk előzetes letárolásával (cache-elés).
12. A Decorator Pattern
Hogyan bővítsük ki egy objektum működését futásidőben úgy, hogy se a hívó se a célobjektum ne vegye észre a bővítést?
Labor: egy vizuális dekorátor komponens refactoringja a könyvbeli kanonikus implementációra.
2009+: Decoratorok a WPF-ben.
13. Az Iterator Pattern
Hogyan járjunk be egységes módon kollekciókat? Hogyan tegyük saját kollekciónkat bejárhatóvá a C# foreach operátorával? Hogyan írjunk szupergyors iterátorokat?
2009+: A yield és a linq érdekes felhasználásai.
14. A Factory Method Pattern
Miként delegáljuk egy objektum létrehozásának felelősségét a leszármazott osztályoknak?
15. Az Observer Pattern
Hogyan biztosítsuk többrétegű alkalmazásokban a rétegek közötti kommunikációt úgy, hogy a minden réteg csak az alatta levő rétegtől függjön, a fölötte levőtől ne?
2009+: WPF observer példák.
16. Builder pattern
Vannak olyan objektumok és dokumentumok, amelyeket nem lehet egyetlen lépésben létrehozni, hanem csak sok apró részlépés segítségével lehet felépíteni. A pattern a részlépések összehangolásában és cserélhetővé tételében segít.
Demó: A .NET Framework CodeDOM segítségével tetszőleges programnyelvű forráskód generálható. A példában a korábban bevezetett adatelérő réteg kódját generáltatjuk le a CodeDOM segítségével az adatbázistáblák alapján, ami a Builder pattern egy szép példája.
17. Generation Gap pattern
Hogyan egészítsünk ki generált kódot (típusos DataSet, az Builder példánk DAL kódját, stb.) saját szolgáltatásokkal úgy, hogy a generált rész bármikor újraépíthető legyen?

Teljes tanfolyamkínálatunk (vissza a tanfolyamokhoz)
NetAcademia Oktatóközpont Kft., 1075 Budapest, Kazinczy u. 24-26.
Telefon: (06 1) 696-0787, (06 1) 321-6547
Mobil: (06 20) 915-4910, Fax: (06 1) 700-2335
Nyitvatartás, ügyfélszolgálat: 8:30-16:30
Regisztrációs szám: 689-2011 Írjon nekünk!
OC: 2012-02-04 07:34:33, CDC: 2012-02-03 02:07:23 (start) - 2012-03-01 12:00:00