Objektumorientált szoftvertervezés

Tárgykód:
Tárgyfelelős:
Goldschmidt Balázs
Szak:
Mérnök informatikus
Képzési szint:
BSc
Képzés féléve:
5
Kategória:
Specializáció
Leírás:

Information about the English course can be found on the English page of the subject.

Oktató: Dr. Simon Balázs

Tantárgyi adatlap: BMEVIIIAC00

Időpont és helyszín:

  • Hétfő: 12:15-14:00 IB.025.
  • Páratlan csütörtök: 10:15-12:00 IB.025.

Vizsgák

SorszámVizsgaTeremMegtekintés
1 2018. december 19. 10:00-12:00
2 2019. január 9. 10:00-12:00
3 2019. január 16. 10:00-12:00

A vizsga hetének pénteki napján a jegyek bekerülnek a Neptunba, a pontszámok pedig a jportára. A megtekintéshez arcképes igazolvány bemutatása kötelező.

Minta vizsgasor itt érhető el: minta vizsgasor

Záróvizsga tételsor

  1. Tervezés a követelmények változására tekintettel, OO tervezési elvek. Az egyes elvekre: Milyen problémát old meg az adott elv? Mi a megoldás lényege? Miért baj, ha megsértjük? Mikor lehet megsérteni?
  2. OO tervezési heurisztikák. Az egyes heurisztikákra: Milyen problémát old meg az adott heurisztika? Mi a megoldás lényege? Miért baj, ha megsértjük? Mikor lehet megsérteni? Hogyan kapcsolódik a refaktorálási mintákhoz és code-smell-ekhez?
  3. Refaktorálás fogalma, szabályai, előnyei és problémái. Milyen refaktorálási minták és code-smell-ek vannak? Hogyan kapcsolódnak egymáshoz? Hogyan kapcsolódnak az OO tervezési heurisztikákhoz?
  4. Clean-code elvek. Az egyes elvekre: Milyen problémát old meg az adott elv? Mi a megoldás lényege? Miért baj, ha megsértjük? Mikor lehet megsérteni?
  5. API tervezési elvek. Az egyes elvekre: Milyen problémát old meg az adott elv? Mi a megoldás lényege? Miért baj, ha megsértjük? Mikor lehet megsérteni?
  6. Elosztott objektumorientáltság. Milyen problémákat vet fel? Milyen megoldási lehetőségek vannak?
  7. Konkurens és párhuzamos minták. Az egyes mintákra: Milyen problémát old meg az adott minta? Mi a megoldás lényege? Hogyan kapcsolódik más mintákhoz?
  8. Immutable objektumorientáltság. Mik a módosíthatóság problémái? Mik a csak olvasható objektumok előnyei és hátrányai? Hogyan kell implementálni egy csak olvasható objektumot leíró osztályt?
  9. Szoftverfejlesztést támogató build eszközök (Ant+Ivy, Maven, Gradle, Bazel, Buck). Mi a feladatuk? Hogyan működnek? Mik az előnyeik és hátrányaik egymáshoz képest?
  10. Git verziókezelő rendszer. A Git alapfogalmai. Hogyan működik a Git? Milyen parancsokkal vezérelhető? Mit csinálnak ezek a parancsok?

Kis ZH-k

A félév során 5 kis-zh-t íratunk. Az aláírás megszerzéséhez ebből a 3 legjobbnak egyenként elégségesnek kell lennie. A kis-zh-k nem pótolhatók.

A kis-zh-k csak az aláírás megszerzéséhez szükségesek, a végső jegybe nem számítanak bele.

A kis-zh-kat az aznapi gyakorlat elején tartjuk. Időtartamuk kb. 10 perc.

A kis-zh eredmények a JPortán tekinthetők meg.

SorszámIdőpontTémakör
1 2018. október 4. csütörtök 10:15 OO tervezési elvek és heurisztikák
2 2018. október 13. szombat 10:15 OO tervezési heurisztikák, refaktorálás
3 2018. október 18. csütörtök 10:15 OO tervezési heurisztikák, refaktorálás, csomagkezelő és fordító eszközök
4 2018. november 15. csütörtök 10:15 Clean code, API tervezési elvek, Git
5 2018. november 29. csütörtök 10:15 Elosztott objektumorientáltság, konkurens és párhuzamos minták

A félév időbeosztása

Az előadásdiákat csak bejelentkezés után lehet letölteni.

HétDátumTípusTémakörDiákSegédanyagok
1. hét Szeptember 3. Előadás OO tervezési elvek Intro
Diák
Cheat sheet
Design patterns
Szeptember 6. Gyakorlat OO tervezési elvek Diák
2. hét Szeptember 10. Előadás OO tervezési heurisztikák Diák Cheat sheet
3. hét Szeptember 17. Előadás OO tervezési heurisztikák Diák Cheat sheet
Szeptember 20. Szünet
4. hét Szeptember 24. Előadás OO tervezési heurisztikák Diák Cheat sheet
5. hét Október 1. Előadás Refaktorálás Diák Cheat sheet
Október 4. Gyakorlat OO tervezési heurisztikák, refaktorálás Diák
6. hét Október 8. Előadás Clean-code elvek Diák
Október 13.
(szombat)
Gyakorlat Csomagkezelő és fordító eszközök (ANT, Maven, Gradle, ...) Diák
7. hét Október 15. Előadás Clean-code elvek Diák
Október 18. Gyakorlat Verziókezelés (Git) Diák
8. hét Október 22. Szünet
9. hét Október 29. Elmarad
November 1. Szünet
10. hét November 5. Előadás API tervezési elvek Diák Cheat sheet
11. hét November 12. Előadás Elosztott objektumorientáltság, SOAP, REST Diák
November 15. Gyakorlat Példák hibásan megtervezett API-kra Diák
12. hét November 19. Előadás Konkurens és párhuzamos minták Diák
13. hét November 26. Előadás Konkurens és párhuzamos minták Diák
November 29. Gyakorlat Példák konkurencia problémákra Diák
14. hét December 3. Előadás Immutable objektumok Diák

Hivatkozások

  • Robert C. Martin: Principles of Object-Oriented Design, http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
  • Arthur J. Riel: Object-Oriented Design Heuristics, Addison Wesley, 1996, ISBN-10: 0321774965, ISBN-13: 978-0321774965
  • Robert C. Martin: Clean Code, A Handbook of Agile Software Craftsmanship, Prentice Hall, 2008, ISBN-10: 0132350882, ISBN-13: 978-0132350884
  • Jasmin Blanchette: The Little Manual of API Design, Trolltech, a Nokia company, 2008
  • Matt Gemmell: API Design, http://mattgemmell.com/api-design/
  • Martin Fowler: Refactoring: Improving the Design of Existing Code, 1999, Addison Wesley, ISBN-10: 0201485672, ISBN-13: 978-0201485677
  • Douglas Schmidt: Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects, 2000, Wiley, ISBN: 0-471-60695-2

Korábbi tananyag

Régi OO-terv anyagai (2016. őszi félévtől 2017. tavaszi félévig bezárólag)

Záróvizsga tételsor
Oktatási anyagok

Régi OO-terv anyagai (2016. tavaszi félévig bezárólag)

Záróvizsga tételsor
Oktatási anyagok