Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    Objektumorientált szoftvertervezés

    A tantárgy angol neve: Object-Oriented Software Design

    Adatlap utolsó módosítása: 2023. január 13.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar

    Mérnök informatikus szak, BSc képzés

    Szoftverfejlesztés specializáció

    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIIIAC09 5 2/2/0/v 5  
    3. A tantárgyfelelős személy és tanszék Dr. Simon Balázs,
    A tantárgy tanszéki weboldala Kari Moodle
    4. A tantárgy előadója Dr. Simon Balázs, egyetemi docens, IIT
    5. A tantárgy az alábbi témakörök ismeretére épít UML, objektumorientált tervezési minták, Java vagy C# nyelv ismerete
    6. Előtanulmányi rend
    Ajánlott:
    -
    7. A tantárgy célkitűzése A tárgy célja, hogy a hallgatók elmélyítsék és kibővítsék az objektumorientált tervezéssel kapcsolatos ismereteiket.
    8. A tantárgy részletes tematikája Az előadások részletes tematikája:
    1. Az objektumorientált fogalmak áttekintése. Egységbezárás (encapsulation), többalakúság (polymorphism), öröklés (inheritance), asszociáció, függőség, aggregáció. Fontosabb objektumorientált tervezési elvek: SOLID, Tell Don't Ask, Design by Contract, Law of Demeter, stb. Ezek szerepe a tervezésben.
    2. Objektumorientált tervezési heurisztikák az osztályok közötti függőségek minimalizálására. Heurisztikák az osztályok tervezésére vonatkozóan. Az egyes heurisztikák előnyei és hátrányai.
    3. További objektumorientált tervezési heurisztikák: felelősségek szétosztása, asszociációk és kompozíciók tervezése. Az egyes heurisztikák előnyei és hátrányai.
    4. További objektumorientált tervezési heurisztikák: öröklődés és heterogén kollekciók tervezése. Az egyes heurisztikák előnyei és hátrányai.
    5. Refaktorálás alapelvei, szükségessége, problémái, tervezéssel és hatékonysággal való kapcsolata. Tipikus tervezési hibák (code smells), ezek felismerése és javítása. Tipikus refaktorálási minták és alkalmazásuk. Kapcsolat az objektumorientált tervezési elvekkel és heurisztikákkal.
    6. Nehezen karbantartható kód jellemzői és következményei. Tiszta kód (clean code) jellemzői és előnyei. Clean code elvek: beszédes nevek használata, nevek választása, osztályok és függvények mérete, függvények sorrendje egy osztályon belül.
    7. További clean-code elvek: öndokumentáló forráskód, kommentek helyes és hibás használata, objektumok és adatstruktúrák, hibakezelés és kivételkezelés, null érték használata.
    8. API tervezési elvek, az API tervezés folyamata. API dokumentálása, inicializálás, paraméterlisták hossza, testreszabás, kényelmi függvények, kivételek, tesztelés.
    9. Az elosztott objektumorientáltság problémái: memóriakezelési problémák, hálózati problémák, konkurencia problémák, késleltetés miatti problémák.
    10. Az egyes elosztott kommunikációs problémák lehetséges megoldási módjai. Példák elosztott kommunikációra: SOAP, REST.
    11. Konkurens és párhuzamos minták: szinkronizáció (kritikus szakasz, double-checked locking, várakozás, szálak közötti jelzés, publikus interfész).
    12. További konkurens és párhuzamos minták: kontextus kezelési minták (globális kontextus, szálon belül lokális kontextus), kérés-válasz illetve eseménykezelési minták (ACT, cancellation token, future/task/deferred).
    13. További konkurens és párhuzamos minták: reactor, proactor, active object, half-sync/half-async, leader-followers, scheduler.
    14. Immutable (nem módosítható) objektumorientáltság előnyei és hátrányai. Immutable adatszerkezetek. Immutable osztályok készítése, builder minta.

    A gyakorlatok részletes tematikája:
    1. Jelenléti gyakorlat. Objektumorientált tervezési elvekkel kapcsolatos feladatok. A tanult elmélet gyakorlása (igaz-hamis, többválasztásos kérdések). Hibás objektumorientált modellek elemzése a tanult elvek alapján.
    2. Otthoni gyakorlat. Objektumorientált modell tervezése egy szöveges leírás alapján a tanult elvek betartásával.
    3. Jelenléti gyakorlat. Objektumorientált tervezési heurisztikákkal kapcsolatos feladatok. A tanult elmélet gyakorlása (igaz-hamis, többválasztásos kérdések). Hibás objektumorientált modellek elemzése a tanult heurisztikák alapján.
    4. Otthoni gyakorlat. Objektumorientált modell tervezése egy szöveges leírás alapján a tanult elvek és heurisztikák betartásával.
    5. Jelenléti gyakorlat. Objektumorientált tervezési heurisztikákkal kapcsolatos feladatok. A tanult elmélet gyakorlása (igaz-hamis, többválasztásos kérdések). Hibás objektumorientált modellek elemzése a tanult heurisztikák alapján.
    6. Otthoni gyakorlat. Objektumorientált modell tervezése egy szöveges leírás alapján a tanult elvek és heurisztikák betartásával.
    7. Jelenléti gyakorlat. Refaktorálási mintákkal és code smell-ekkel kapcsolatos feladatok. A tanult elmélet gyakorlása (igaz-hamis, többválasztásos kérdések). Hibás programkódok elemzése és javítása a tanult elvek alapján.
    8. Otthoni gyakorlat. Objektumorientált modell tervezése egy szöveges leírás alapján a tanult elvek és heurisztikák betartásával.
    9. Jelenléti gyakorlat. Clean code-dal kapcsolatos feladatok. A tanult elmélet gyakorlása (igaz-hamis, többválasztásos kérdések). Hibás programkódok elemzése és javítása a tanult elvek alapján.
    10. Otthoni gyakorlat. Objektumorientált modell tervezése egy szöveges leírás alapján a tanult elvek és heurisztikák betartásával.
    11. Jelenléti gyakorlat. Konkurens és elosztott mintákkal kapcsolatos feladatok. A tanult elmélet gyakorlása (igaz-hamis, többválasztásos kérdések). Hibás programkódok elemzése és javítása a tanult elvek alapján.
    12. Otthoni gyakorlat. Objektumorientált modell tervezése egy szöveges leírás alapján a tanult elvek és heurisztikák betartásával.
    13. Jelenléti gyakorlat. Immutable objektumorientáltsággal kapcsolatos feladatok. A tanult elmélet gyakorlása (igaz-hamis, többválasztásos kérdések). Immutable adatszerkezet tervezése.
    14. Otthoni gyakorlat. Objektumorientált modell tervezése egy szöveges leírás alapján a tanult elvek és heurisztikák betartásával.

    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) Minden héten előadás. Gyakorlatok hetente váltakozva: jelenléti gyakorlat illetve otthoni tervezési gyakorlat (házi feladat).
    10. Követelmények Szorgalmi időszakban:
    Az otthoni gyakorlatokon a félév során 5 házi feladatot kell megoldani és határidőre beadni. Emellett a félév során 5 kiszárthelyi jellegű, otthon is megoldható Moodle kvízt kell határidőre kitölteni. Az aláírás feltétele: legalább három házi feladat megoldása és legalább három kvíz elégséges szintű teljesítése.

    Vizsgaidőszakban:
    A fenti módon aláírást szerző hallgatók írásbeli vizsgát tesznek.
    11. Pótlási lehetőségek A házi feladatok és a Moodle kvízek nem pótolhatók, mert csak a 3/5-üket kell teljesíteni.
    12. Konzultációs lehetőségek Igény szerint a tárgy hallgatóival egyeztetve.
    13. Jegyzet, tankönyv, felhasználható irodalom
    • Robert C. Martin: Principles of Object-Oriented Design
    • Robert C. Martin: Clean Code, A Handbook of Agile Software Craftsmanship, Prentice Hall, 2008, ISBN-10: 0132350882, ISBN-13: 978-0132350884
    • William J. Brown, Raphael C. Malveau, Thomas J. Mowbray: AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis, Wiley, 1998, ISBN-10 0471197130
    • Martin Fowler, Kent Beck, John Brant, and William Opdyke: Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999, ISBN-10 0201485672
    • Jasmin Blanchette: The Little Manual of API Design, Trolltech, a Nokia company, 2008
    • Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann: Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects, Wiley, 2000, ISBN-13: 978-0471606956

    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra42
    Félévközi készülés órákra10
    Felkészülés zárthelyire14
    Házi feladat elkészítése14
    Kijelölt írásos tananyag elsajátítása-
    Vizsgafelkészülés40
    Összesen120
    15. A tantárgy tematikáját kidolgozta Dr. Simon Balázs, egyetemi docens, IIT
    IMSc tematika és módszer Az IMSc programban részt vevő hallgatók számára az előadásokon további elmélyülést biztosító irodalmat ajánlunk. Az IMSc programban részt vevő hallgatóknak igény szerint tanórán kívüli konzultációs lehetőséget biztosítunk.
    IMSc pontozás

    Az írásbeli vizsgán extra, IMSc feladatot biztosítunk, amelyre az alapfeladatokra elérhető pontszám 30%-át lehet kapni. A plusz feladat csak akkor kerül értékelésre, ha a vizsga alapfeladatai megoldásával a hallgató jeles osztályzatot ért el.

    Az IMSc feladatra kapott pontszám egyenes arányosításával áll elő a tárgyban megszerezhető maximum 20 IMSc pontszám.

    Az IMSc pontok megszerzése a programban nem résztvevő hallgatók számára is biztosított.