Object-oriented software design
A magyar kurzus információi a tárgy magyar weboldalán találhatók.
Lecturer: Dr. Simon Balázs
Subject info: BMEVIIIAC00
Location and time:
- Thursdays: 14:15-16:00 IL.408.
- Even Thursdays: 16:15-18:00 IL.408.
|Number||Exam||Review of the exam|
|1||January 6, 2020, 10:00-12:00, IB.028.||January 10, 2020, 8:00, IB.139.|
|2||January 13, 2020, 10:00-12:00, IB.028.||January 17, 2020, 14:00, IB.139.|
|3||January 20, 2020, 10:00-12:00, IB.028.||January 21, 2020, 13:00, IL.414.|
On the Thursday of the week of the exam marks will be uploaded to the Neptun system, and the points will be uploaded to the jporta system. You have to present a valid ID card with photo at the review of the exam.
A sample exam can be downloaded here: sample exam
Thesis exam questions
Materials can be downloaded from here: materials
- OO design principles. For each principle: what problems does it solve, how does it solve the problems, what happens if we violate it, when can we violate it?
- OO design heuristics. For each heuristic: what problems does it solve, how does it solve the problems, what happens if we violate it, when can we violate it? How do these heuristics connect to refactoring patterns and code-smells?
- What is refactoring? Rules, steps, advantages and problems of refactoring. Refactoring patterns and code-smells. How do they connect to the OO design heuristics?
- Clean-code principles. For each principle: what problems does it solve, how does it solve the problems, what happens if we violate it, when can we violate it?
- API design principles. For each principle: what problems does it solve, how does it solve the problems, what happens if we violate it, when can we violate it?
- Distributed OO. What kind of problems can arise? What are the possible solutions to these problems?
- Concurrent and distributed patterns. What are the problems? What are the possible solutions? How the patterns are connected to each other?
- Immutable OO. What are the disadvantages of mutability? What are the advantages and disadvantages of immutability? How can an immutable class be implemented?
- Package management and build tools (Ant+Ivy, Maven, Gradle, Bazel, Buck). What do they do? How they work? What are their advantages and disadvantages?
- Git version control system. Git concepts. How does Git work? What are the Git commands? What do these commands do?
There will be 5 small tests during the semester. In order to get a signature from the subject, the best three of the small tests must be successfully passed, i.e. they should achieve at least 2.0 points. The small tests cannot be repeated.
The small tests are required only for the signature, the final mark is independent of them.
The small tests are written at the beginning of the lectures on even Thursdays. They take about 10 minutes.
The results of the small tests can be seen in the JPorta system.
|1||October 3||OO design principles|
|2||October 17||OO design principles, OO design heuristics, Package management and build tools|
|3||October 31||OO design heuristics, Refactoring|
|5||November 28||API design principles, Distributed OO, Concurrent and distributed patterns|
Slides can only be downloaded after login.
|Week 1||September 12||Holiday||Sports day|
|Week 2||September 19||Lecture||OO design principles||Intro
|Practice||OO design principles||Slides|
|Week 3||September 26||Lecture||OO design heuristics (classes, responsibilities)||Slides||Cheat sheet|
|Week 4||October 3||Lecture||OO design heuristics (associations, inheritance)||Slides||Cheat sheet|
|Practice||Package management and build tools (ANT, Maven, Gradle, ...)||Slides|
|Week 5||October 10||Lecture||OO design heuristics (inheritance, sequence diagrams)||Slides||Cheat sheet|
|Week 6||October 17||Lecture||Refactoring||Slides||Cheat sheet|
|Week 7||October 24||Lecture||Clean-code||Slides|
|Week 8||October 31||Lecture||Clean-code||Slides|
|Week 9||November 7||Lecture||Distributed OO, SOAP, REST||Slides|
|Week 10||November 14||Lecture||API design principles||Slides||Cheat sheet|
|Practice||Analysis task: API Flaws||Slides|
|Week 11||November 21||Lecture||Concurrent and Distributed Patterns||Slides|
|Week 12||November 28||Lecture||Concurrent and Distributed Patterns||Slides|
|Practice||Analysis task: Common concurrency issues||Slides|
|Week 13||December 5||Lecture||Concurrent and Distributed Patterns||Slides|
|Week 14||December 12||Lecture||Immutable objects||Slides|
|Practice||Practice for the exam|
- 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