Object-oriented Design

Course Description

The course addresses the principles of object-oriented design based on development of domain model. The role of design in broader context of information system developement is defined, together with the process of creating domain model from analysis specification. Basic building blocks of domain model are described, with the illustration of design principles applicable in the development of the model.

General Competencies

Students are introduced to principles and techniques of object-oriented design and familiarized with the role of the design in the software development process. They will be able to practically apply the skills learned on the demonstration of concepts on a case study, and through individual seminars.

Learning Outcomes

  1. define basic priciples of object design
  2. apply principles of object design in implementing IT systems of medium complexity
  3. describe basic building blocks of domain driven design
  4. use basic building blocks of domain driven design
  5. describe object-relational mapping problem
  6. develop object-relational mapper with the use of NHibernate framework
  7. apply techniques of test driven development
  8. define advantages of agile approach in building IT systems

Forms of Teaching

Lectures

Classes are organized in two cycles. First is 7 weeks in duration with exam at the end, while the second is 6 weeks of classes with final exam at the end.

Exams

During classes there will be short ("blitz") tests

Seminars

Student must independently devise and implement seminar that will present learned techniques of object design

Programming Exercises

Student must solve three home work exercises.

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Comment: Percent of Grade
Homeworks 0 % 15 % 0 % 10 %
Quizzes 0 % 10 % 0 % 0 %
Class participation 0 % 3 % 0 % 0 %
Seminar/Project 0 % 20 % 0 % 20 %
Attendance 0 % 2 % 0 % 0 %
Mid Term Exam: Written 0 % 20 % 0 %
Final Exam: Written 0 % 30 %
Exam: Written 0 % 50 %
Exam: Oral 20 %

Week by Week Schedule

  1. Intro lecture. Importance of OO paradigm, interaction of object design with agile development
  2. Basic of object-oriented programming I - classes, abstractions, encapsulation
  3. Basic of object-oriented programming II - class relationships: aggregation/composition and inheritance, interfaces
  4. Introduction to object design - coupling and cohesion, design by contract, role of interface classes
  5. Principles of object design -Single Responsibility Principle, Open Closed Principle, Liskov Substitution Principle, KISS, YAGNI
  6. Role of object design in agile development
  7. Exams
  8. Exams
  9. Roles, responsibilities and collaborations - basic principles of creating quality object models
  10. Introduction to domain driven design - basic principles and building blocks (associations, entities, value objects)
  11. Domain driven design - services, repositories, factories and aggregates
  12. Introduction to test driven development
  13. Applying Mocel-View_Controller and Model-View-Presenter patterns for developing GUI over object model
  14. Introduction to object-relational mapping
  15. Using NHibernate framework for implementation of object-relational mapping

Study Programmes

University graduate
Computer Engineering (profile)
Specialization Course (1. semester) (3. semester)
Computer Science (profile)
Specialization Course (1. semester) (3. semester)
Information Processing (profile)
Recommended elective courses (3. semester)
Software Engineering and Information Systems (profile)
Theoretical Course (1. semester)

Literature

Rebecca Wirfs-Brock, Alan McKean (2002.), Object Design: Roles, Responsibilities and Collaborations Rebecca Wirfs-Brock, Alan McKean Addison-Wesley 2003, Addison-Wesley Professional
Eric Evans (2003.), Domain Driven Design Eric Evans Addison-Wesley 2004, Addison-Wesley Professional
Craig Larman (2004.), Applying UML and Patterns, 3rd ed. Craig Larman Prentice Hall 2005, Addison-Wesley Professional
Erich Gamma, Richard Helm, John Vlissides, Ralph Johnson (1994.), Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Professional
Robert C. Martin (2002.), 978-0201633610, Prentice Hall

Lecturers in Charge

Lecturers

Grading System

ID 34454
  Winter semester
5 ECTS
L0 English Level
L1 e-Learning
45 Lecturers
0 Exercises
0 Laboratory exercises

General

85 Excellent
75 Very Good
65 Good
50 Acceptable