K-INFO
HU
EN
Login

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)
Course type lecture tutorial laboratory
hours (weekly) 2 1 0
type (linked/independent) derived course
Assessment type vizsga
Credits 4
Subject coordinator
DR. Simon Balázs
position: egyetemi docens
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
  1. Overview of object-oriented design principles: encapsulation, polymorphism, inheritance, association, dependency, aggregation.
  2. Important principles: Liskov principle, dependency inversion, design by contract, Demeter principle, etc. Role of these principles in OO design.
  3. Requirement analysis: use-cases and distributing responsibilities. Applying OO design principles on practical problems.
  4. 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)
  5. Typical design problems, recognizing and correcting these problems ("code smells" within a class, between classes).
  6. Object-oriented metrics, cohesion and coupling, metrics for these (e.g. LOCM, etc.).
  7. 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)
  8. Further refactoring patterns (data management, data hiding, avoiding type codes, conditional expressions, simplifying method calls, generalization issues).
  9. Persisting objects, Object-Relational Mapping, inheritance in ORM (table per class hierarchy, table per concrete class, table per subclass), hibernate and JPA.
  10. Distributed applications using socket and RMI. Problems of distributed object-orientation, RMI for distributed object-orientation, typical distributed design patterns (callback, factory, agent).
  11. Distributed and parallel design patterns, locking, event handling, interface design, remote updates, acknowledgements.
  12. 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.
  13. 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.