K-INFO
HU
EN
Belépés

Objektumorientált szoftvertervezés

Object-Oriented Software Design
A tantárgyleírás hatályossága
Hatályosság kezdete:
2026. March 21.
Hatályosság vége:
Tantárgy neve (magyarul, angolul)
Objektumorientált szoftvertervezés
Object-Oriented Software Design
Tantárgykód BMEVIIIAC09
Tantárgyjelleg
Képzési szint
Kurzustípusok és óraszámok (heti/féléves)
Kurzustípus elmélet gyakorlat laboratóriumi gyakorlat
óraszám (heti) 2 2 0
jelleg (kapcsolt/önálló) kapcsolt
Tanulmányi teljesítmény/értékelés típusa vizsga
Tantárgy kreditértéke 5
Tantárgyfelelős
DR. Simon Balázs
beosztás: egyetemi docens
Tantárgyat gondozó oktatási szervezeti egység
Irányítástechnika és Informatika Tanszék
Kar Villamosmérnöki és Informatikai Kar
Tantárgy weboldala Kari Moodle
Tantárgy elsődleges mintatantervi jellege
Közvetlen előkövetelmények – Erős előkövetelmény nincs
Közvetlen előkövetelmények – Gyenge előkövetelmény nincs
Közvetlen előkövetelmények – Párhuzamos előkövetelmény nincs
Közvetlen előkövetelmények – Mérföldkő előkövetelmény nincs
Közvetlen előkövetelmények – Kizáró feltétel nincs

Célkitűzés

Tantárgyprogram
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.

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.

Tanulmányi eredmények

Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:

Tudás

Nincsenek rögzített tanulási eredmények.

Képességek

Nincsenek rögzített tanulási eredmények.

Attitűd

Nincsenek rögzített tanulási eredmények.

Autonómia és felelősség

Nincsenek rögzített tanulási eredmények.

Oktatási módszertan

Minden héten előadás. Gyakorlatok hetente váltakozva: jelenléti gyakorlat illetve otthoni tervezési gyakorlat (házi feladat).

Tanulástámogató anyagok

Online források
Robert C. Martin: Principles of Object-Oriented DesignRobert C. Martin: Clean Code, A Handbook of Agile Software Craftsmanship, Prentice Hall, 2008, ISBN-10: 0132350882, ISBN-13: 978-0132350884William J. Brown, Raphael C. Malveau, Thomas J. Mowbray: AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis, Wiley, 1998, ISBN-10 0471197130Martin Fowler, Kent Beck, John Brant, and William Opdyke: Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999, ISBN-10 0201485672Jasmin Blanchette: The Little Manual of API Design, Trolltech, a Nokia company, 2008Douglas 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

A tantárgy teljesítéséhez ajánlott előzetes ismeretek

Tudás típusú kompetenciák
(azon előzetes ismeretek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
UML, objektumorientált tervezési minták, Java vagy C# nyelv ismerete
Képesség típusú kompetenciák
(azon előzetes képességek és készségek összessége, amelyek megléte nem kötelező, de a tantárgy eredményes teljesítését nagyban elősegíti)
nincs
Ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák
(azon ajánlott (nem kötelező) előzetesen megszerzendő kompetenciák összessége, amelyek jelentősen hozzájárulnak a tantárgy eredményes teljesítéséhez)
UML, objektumorientált tervezési minták, Java vagy C# nyelv ismerete
Általános szabályok
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. 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. Idegen nyelvi részteljesítés követelményei: Az idegen nyelvi részteljesítés nyelve angol. A 2 nyelvi kredit megszerzéséhez az írásbeli kisZH-kat és az írásbeli vizsgát is angolul kell teljesíteni.
Teljesítményértékelési módszerek
Szorgalmi időszakban végzett teljesítményértékelések részletes leírása

Nincs megadva részletes értékelés.

Szorgalmi időszakban végzett teljesítményértékelések részaránya

Nincs megadva részarány.

Vizsgaidőszakban végzett teljesítményértékelések részletes leírása

Nincs megadva részletes értékelés.

Vizsgarészek részaránya

Nincs megadva részarány.

Érdemjegy megállapítása

Nincs megadva érdemjegy határ.

Jelenléti és részvételi követelmények

Nincs megadva jelenléti követelmény.

Javítás, ismétlés és pótlás különös szabályai

Nincs megadva.

Rövid leírás

Nincs megadva.

Részletes leírás
IMSc program: 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 pontok: 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.
Ajánlott tantárgyak
-
A tantárgy elvégzéséhez szükséges tanulmányi munka

Nincs megadva munkaidő bontás.

Tantárgykövetelmények hatályossága
Tantárgykövetelmények hatályosságának kezdete:
Tantárgykövetelmények hatályosságának vége:
Tantervi elhelyezés

Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.