Skip to content
A course on advanced object-oriented design and programming
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Lecture slides
CONTRIBUTING.md
LICENSE.txt
README.md

README.md

Advanced Design and Programming (ADAP)

This course teaches principles and practices of advanced object-oriented design and programming.

It consists of a weekly lecture with exercises, homework and self-study, totaling 4 SWS, 5 ECTS. This is a hands-on course and students should be familiar with their Java IDE.

Students learn the following concepts:

Class-level concepts

  • Method design
  • Class design
  • Classes and interfaces
  • Subtyping and inheritance
  • Implementing inheritance
  • Design by contract

Collaboration-level concepts

  • Values vs. objects
  • Role objects
  • Type objects
  • Object creation
  • Collaboration-based design
  • Design patterns

Component-level concepts

  • Error and exception handling
  • Meta-object protocols
  • Frameworks and components
  • Domain-driven design
  • API evolution

The running example is the photo sharing and rating software Wahlzeit, see https://github.com/dirkriehle/wahlzeit .

Class is held as a three hour session with a short break in between. The class iterates over short lectures, discussion, and exercise chunks of 10-30min each. Students should bring a laptop with a well-working Java programming setup.

You can’t perform that action at this time.