Tantárgy » BMEVIIIAC09
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) |
|
||||||||||||
| 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
elérhetőség:
simon.balazs@vik.bme.hu
|
||||||||||||
| 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:
A gyakorlatok részletes tematikája:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Az egyes elosztott kommunikációs problémák lehetséges megoldási módjai. Példák elosztott kommunikációra: SOAP, REST.
- 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).
- 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).
- További konkurens és párhuzamos minták: reactor, proactor, active object, half-sync/half-async, leader-followers, scheduler.
- 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:
- 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.
- Otthoni gyakorlat. Objektumorientált modell tervezése egy szöveges leírás alapján a tanult elvek betartásával.
- 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.
- Otthoni gyakorlat. Objektumorientált modell tervezése egy szöveges leírás alapján a tanult elvek és heurisztikák betartásával.
- 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.
- Otthoni gyakorlat. Objektumorientált modell tervezése egy szöveges leírás alapján a tanult elvek és heurisztikák betartásával.
- 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.
- Otthoni gyakorlat. Objektumorientált modell tervezése egy szöveges leírás alapján a tanult elvek és heurisztikák betartásával.
- 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.
- Otthoni gyakorlat. Objektumorientált modell tervezése egy szöveges leírás alapján a tanult elvek és heurisztikák betartásával.
- 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.
- Otthoni gyakorlat. Objektumorientált modell tervezése egy szöveges leírás alapján a tanult elvek és heurisztikák betartásával.
- 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.
- 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.