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 BMEVIIIAC00
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 1 0
jelleg (kapcsolt/önálló) kapcsolt
Tanulmányi teljesítmény/értékelés típusa vizsga
Tantárgy kreditértéke 4
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 https://www.iit.bme.hu/targyak/BMEVIIIAC00
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

Előadások:

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ó.

2.       Fontosabb objektumorientált tervezési elvek: Liskov alapelv, dependency inversion, Design by Contract, Demeter elv, stb. Ezek szerepe a tervezésben.

3.       Követelménykezelés, use-case alapú megközelítés és felelősségszétosztás. Az objektumorientált tervezésben használt alapelvek alkalmazása gyakorlati példákon bemutatva.

4.       Objektumorientált tervezési heurisztikák az osztályok közötti függőség minimalizálására. Heurisztikák az osztályok tervezésére vonatkozóan.

5.       További objektumorientált tervezési heurisztikák: asszociációk, öröklődés, szekvencia diagramok. Az egyes heurisztikák előnyei és hátrányai.

6.       Tipikus tervezési hibák, ezek felismerése és javítása ("büdös kód" osztályon belül, osztályok között). Kapcsolat az objektumorientált tervezési elvekkel és heurisztikákkal.

7.       Refaktorálás alapelvei, szükségessége, problémái, tervezéssel és hatékonysággal való kapcsolata. Tipikus refaktorálási megoldások (metódusátalakítás, lokális és temporális változók kezelése, felelősségek átalakítása metódusok és osztályok között, belső osztályok használata).

8.       További refaktorálási megoldások (adatszervezés, adat objektumba rejtése, típuskód kezelése, feltételes kifejezések kezelése, metódushívás egyszerűsítése, generalizálás kérdései). Kapcsolat az objektumorientált tervezési elvekkel és heurisztikákkal.

9.       Tiszta kód (clean-code) elvek: beszédes nevek, osztályok és függvények mérete, helyes és hibás kommentezés, objektumok és adatstruktúrák, hibakezelés, konkurencia kezelés.

10.   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.

11.   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.

12.   Az egyes elosztott kommunikációs problémák lehetséges megoldási módjai. Példák elosztott kommunikációra: SOAP, REST

13.   Konkurens és párhuzamos minták: szinkronizáció (kritikus szakasz, várakozás, szálak közötti jelzés, publikus interfész), kontextus kezelési minták

14.   További konkurens és párhuzamos minták: kérés-válasz kezelésének mintái, eseménykezelési minták, future, reactor, proactor, active object, half-sync/half-async

 

Gyakorlatok:

1.       Tervezési példa: objektumorientált modell tervezése szöveges követelmények alapján az objektumorientált tervezési elvek és heurisztikák figyelembe vételével.

2.       Elemzés: hibásan megtervezett objektumorientált modellek vizsgálata, a hibák megkeresése, lehetséges javítási alternatívák vizsgálata

3.       Példák hibásan megtervezett API-kra, az API tervezés nehézségei, publikált API-k módosításának problémái

4.       Példák konkurencia problémákra: szinkronizálás, zárolás, double-checked locking, atomi műveletek kombinálása, szálak indítása

5.       Csomagkezelő és fordító eszközök (ANT, Maven, Gradle, Bazel), függőségek kezelése, verziózás

6.       Verziókezelési megoldások, elosztott verziókezelés, Git műveletek: commit, push, clone, pull, checkout, diff.

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. A tárgy alapvetően a Java nyelvre épít, de egyes esetekben más objektumorientált nyelvekből is hoz példákat (C++, C#, Python).

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

Előadás és gyakorlat.

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-0132350884; William 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, 2008Matt Gemmell: API Design, http://mattgemmell.com/api-design/

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)
SzoftvertechnológiaSzoftvertechniákC++, Java és C# programozás Tervezési minták
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)
SzoftvertechnológiaSzoftvertechniákC++, Java és C# programozás Tervezési minták
Általános szabályok
Követelmények: a. A szorgalmi időszakban:     A gyakorlatokon a félév során legalább 5 kiszhárthelyi dolgozatot íratunk. Az aláírás feltétele: ezek közül legalább háromnak legalább elégségesnek kell lennie. A kiszárthelyi dolgozatok nem pótolhatók, mert csak a zárthelyik 3/5-ét kell elégségesre teljesíteni.     A félév során a tananyag gyakorlati elmélyítését szorgalmi feladatok segítik. b. A vizsgaidőszakban: A fenti módon aláírást szerző hallgatók írásbeli vizsgát tesznek. Pótlási lehetőségek: -
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 pont. Az IMSc pontok megszerzése a programban nem résztvevő hallgatók számára is biztosított.
Ajánlott tantárgyak
Kötelező: Szoftvertechnológia (VIIIAB01), Szoftver laboratorium 3 (VIIIAB00)
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.