Subject » BMEVIIIAC00
Object-Oriented Software Design
Objektumorientált szoftvertervezés
A tantárgyleírás hatályossága
Hatályosság kezdete:
2026. March 21.
Hatályosság vége:
—
| Subject name (Hungarian, English) |
Objektumorientált szoftvertervezés
Object-Oriented Software Design
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Subject code | BMEVIIIAC00 | ||||||||||||
| Subject type | — | ||||||||||||
| Training Level | — | ||||||||||||
| Course types and hours (weekly/semester) |
|
||||||||||||
| Assessment type | vizsga | ||||||||||||
| Credits | 4 | ||||||||||||
| Subject coordinator |
DR. Simon Balázs
position: egyetemi docens
contact:
simon.balazs@vik.bme.hu
|
||||||||||||
| Responsible department |
Irányítástechnika és Informatika Tanszék
|
||||||||||||
| Faculty | Villamosmérnöki és Informatikai Kar | ||||||||||||
| Subject website | https://www.iit.bme.hu/~ooterv/en/ | ||||||||||||
| Primary curriculum type | — | ||||||||||||
| Direct prerequisites – Strong prerequisite | none | ||||||||||||
| Direct prerequisites – Weak prerequisite | none | ||||||||||||
| Direct prerequisites – Parallel prerequisite | none | ||||||||||||
| Direct prerequisites – Milestone prerequisite | none | ||||||||||||
| Direct prerequisites – Exclusion | none |
Objectives
Programme
- Overview of object-oriented design principles: encapsulation, polymorphism, inheritance, association, dependency, aggregation.
- Important principles: Liskov principle, dependency inversion, design by contract, Demeter principle, etc. Role of these principles in OO design.
- Requirement analysis: use-cases and distributing responsibilities. Applying OO design principles on practical problems.
- Recap of the most important design patterns through the Java SE API (decorator, factory, singleton, flyweight, etc.). Examples include: collections, graphics, bosing, etc. API design principles (characteristics of a good API, design process, best practices)
- Typical design problems, recognizing and correcting these problems ("code smells" within a class, between classes).
- Object-oriented metrics, cohesion and coupling, metrics for these (e.g. LOCM, etc.).
- Principles of refactoring, necessity of refactoring, problems of refactoring, connection with design and efficiency. Typical refactoring patterns (methods, local and temporary variables, dependencies between methods and classes, inner classes)
- Further refactoring patterns (data management, data hiding, avoiding type codes, conditional expressions, simplifying method calls, generalization issues).
- Persisting objects, Object-Relational Mapping, inheritance in ORM (table per class hierarchy, table per concrete class, table per subclass), hibernate and JPA.
- Distributed applications using socket and RMI. Problems of distributed object-orientation, RMI for distributed object-orientation, typical distributed design patterns (callback, factory, agent).
- Distributed and parallel design patterns, locking, event handling, interface design, remote updates, acknowledgements.
- Handling transient cases. Initialization of single-threaded and multi-threaded applications, at the level of objects and at the level of the whole application. Shutting down a multi-threaded object-oriented application.
- Logging (log4j), configuration management. Exception handling, designing exceptions, throwing exceptions, processing exceptions, re-throwing exceptions. Patterns for exception handling.
The goal of this course is to summarize and practice the
most widely accepted design principles of object-orientation. The subject
builds primarily on the Java language, but examples may come from other
object-oriented languages (C++, C#, python).
Learning outcomes
Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:
Knowledge
No learning outcomes recorded.
Skills
No learning outcomes recorded.
Attitudes
No learning outcomes recorded.
Autonomy and responsibility
No learning outcomes recorded.
Oktatási módszertan
Lecture and practice.
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,; 2008Matt; Gemmell: API Design, http://mattgemmell.com/api-design/
Recommended preliminary knowledge for completing the subject
Knowledge type competencies
(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)
·
Software technology
·
Software techniques
·
C++, Java and C# programming
·
Design patterns
Skill type competencies
(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
Recommended (non-compulsory) preliminary competencies
(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)
·
Software technology
·
Software techniques
·
C++, Java and C# programming
·
Design patterns
General rules
Requirements:
a. In lecture term:
During practices there are at least 5 in-class tests
written. The condition for acquiring a signature is to pass at least 3 of these
tests. The tests cannot be recapped, since only the 3/5 of the tests must be
passed.
b. In exam term:
Written exam for those who acquired a signature.
Additional possibilities:
-
Assessment methods
In-term assessments
No detailed assessments provided.
Weight of in-term assessments
No weights provided.
Exam-period assessments
No detailed assessments provided.
Weight of exam elements
No weights provided.
Grade calculation
No grade thresholds provided.
Attendance requirements
No attendance requirements provided.
Rules for retake and resubmission
Not provided.
Short description
Not provided.
Detailed description
Not provided.
Recommended courses
Software engineering (VIIIAB01), Basics of programming 3 (VIIIAB00)
Workload to complete the subject
No workload breakdown provided.
Validity of subject requirements
Requirements valid from:
—
Requirements valid until:
—
Curriculum placement
No curriculum placements recorded for this subject version.