Subject » BMEVIIIAC09
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 | BMEVIIIAC09 | ||||||||||||
| Subject type | — | ||||||||||||
| Training Level | — | ||||||||||||
| Course types and hours (weekly/semester) |
|
||||||||||||
| Assessment type | vizsga | ||||||||||||
| Credits | 5 | ||||||||||||
| 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 | Kair Moodle | ||||||||||||
| 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
The detailed topics of the lectures:
The detailed topics of the practices:
- Overview of object-oriented concepts. Encapsulation, polymorphism, inheritance, association, dependence, aggregation. Important object-oriented design principles: SOLID, Tell Don't Ask, Design by Contract, Law of Demeter, etc. Their role in design.
- Object-oriented design heuristics to minimize dependencies between classes. Heuristics for class design. The advantages and disadvantages of each heuristic.
- Additional object-oriented design heuristics: distribution of responsibilities, design of associations and compositions. The advantages and disadvantages of each heuristic.
- Additional object-oriented design heuristics: inheritance and the design of heterogeneous collections. The advantages and disadvantages of each heuristic.
- Refactoring: principles, necessity, problems, and relationship with design and efficiency. Typical design flaws (code smells), their recognition and correction. Typical refactoring patterns and their application. Relationship with object-oriented design principles and heuristics.
- Features and implications of code that is difficult to maintain. Features and advantages of clean code. Clean code principles: use of descriptive names, choice of names, size of classes and functions, order of functions within a class.
- Additional clean-code principles: self-documenting source code, correct and incorrect use of comments, objects and data structures, error handling and exception handling, null value use.
- API design principles, the process of API design. API documentation, initialization, length of parameter lists, customization, convenience functions, exceptions, testing.
- Problems with distributed object-orientation: memory management problems, network problems, competitor problems, latency issues.
- Possible ways to solve each distributed communication problem. Examples of distributed communication: SOAP, REST.
- Competing and parallel patterns: synchronization (critical section, double-checked locking, waiting, signaling between threads, public interface).
- Additional concurrent and parallel patterns: context handling patterns (global context, local context within a thread), request-response and event handling patterns (ACT, cancellation token, future/task/deferred).
- Additional concurrent and parallel patterns: reactor, proactor, active object, half-sync/half-async, leader-followers, scheduler.
- Advantages and disadvantages of immutable object-orientation. Immutable data structures. Writing immutable classes, builder pattern.
The detailed topics of the practices:
- Practice with attendance. Tasks related to object-oriented design principles. Practicing learned theory (true-false, multi-choice questions). Analysis of defective object-oriented models based on learned principles.
- Home exercise. Design an object-oriented model based on a text description using learned principles.
- Practice with attendance. Tasks related to object-oriented design heuristics. Practicing learned theory (true-false, multi-choice questions). Analysis of defective object-oriented models based on learned heuristics.
- Home exercise. Design an object-oriented model based on a text description using learned principles and heuristics.
- Practice with attendance. Tasks related to object-oriented design heuristics. Practicing learned theory (true-false, multi-choice questions). Analysis of defective object-oriented models based on learned heuristics.
- Home exercise. Design an object-oriented model based on a text description using learned principles and heuristics.
- Practice with attendance. Tasks related to refactoring and code smells. Practicing learned theory (true-false, multi-choice questions). Analysis of defective program code based on learned principles.
- Home exercise. Design an object-oriented model based on a text description using learned principles and heuristics.
- Practice with attendance. Tasks related to clean code. Practicing learned theory (true-false, multi-choice questions). Analysis of defective program code based on learned principles.
- Home exercise. Design an object-oriented model based on a text description using learned principles and heuristics.
- Practice with attendance. Tasks related to concurrent and distributed patterns. Practicing learned theory (true-false, multi-choice questions). Analysis of defective program code based on learned principles.
- Home exercise. Design an object-oriented model based on a text description using learned principles and heuristics.
- Practice with attendance. Tasks related to immutable object-orientation. Practicing learned theory (true-false, multi-choice questions). Design of an immutable data structure.
- Home exercise. Design an object-oriented model based on a text description using learned principles and heuristics.
The goal of this course is to summarize and practice the
most widely accepted design principles of object-orientation.
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 every week. Practices alternating weekly: practice with attendance and design exercise at home (homework).
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
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)
UML, object-oriented design patterns, Java or C#
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)
UML, object-oriented design patterns, Java or C#
General rules
Requirements:
In lecture term:
5 homework assignments must be solved and submitted by the deadline during the semester. In addition, 5 Moodle quizzes serving as small tests must be completed by the deadline (can be completed at home). Condition of the signature: completion of at least three homework assignments and sufficient completion of at least three quizzes.
In exam term:
Written exam for those who acquired a signature.
Additional possibilities:
Homework and Moodle quizzes can't be replaced because only 3/5 of them need to be completed.
Foreign language requirements:
-
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
IMSc program:
-
IMSc points:
-
Recommended courses
-
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.