Object Oriented Design Course

Target audience

This course is principally aimed at developers, however it may benefit other involved in object-oriented projects. Ideally, participants should be familiar with a block structured programming language, such as C, C++, Java or Pascal.

Objectives

  • To show good design, and why it is worth striving for.
  • To introduce the key object-oriented concepts and relate them to the facilities available in C++ or Java, and other common object-oriented programming languages.
  • To introduce the use of the UML notations to describe designs.
  • To give the participants some experience of the design activity.
  • To explore the impact of object-oriented technologies on design.
  • To explain the key steps in the software development process as exemplified by the RUP, emphasising how good design helps.

Data

  • Duration: 3 days
  • Class size: 6-12 (2 presenters)

Note
We have both Java and C++ versions of this course available.

Outline

Day 1

  • Object-oriented concepts and their implementation, illustrated in C++ or Java.
  • Walks through the construction of a simple example system.
  • Uses the UML notations at various levels of abstraction during the design activity.

Small exercises are used throughout, performed in groups of two or three.

Day 2

  • A medium-sized exercise, in groups of two or three, to get students thinking about design issues.
  • A larger exercise, in bigger groups, creating a design for the core of a system, providing first-hand experience of design and communicating design ideas through the UML.

Day 3

  • Advanced features of object-oriented languages, such as exceptions, and memory management, with concrete examples of their uses and dangers.
  • Common design patterns in user interface construction, and some user interface design guidelines.
  • Component orientation, as exemplified by .NET and J2EE system architectures, including the approach to building distributed systems.
  • An introduction to the Rational Unified Process, a sound process to follow in object-oriented designs.
  • Storing objects in files and databases.

Description

This course takes a concrete view of object-oriented design. The emphasis throughout is on the practical usefulness of object-oriented techniques and how they can be used to create good designs that are easier to build, easier to maintain and more extensible than bad designs. There are small exercises throughout, to reinforce various points made during the lectures. During the second day there is a longer exercise, in which students have an opportunity to try the ideas discussed during the course out for themselves in groups supervised by the presenters.

In order to design a system that will work efficiently, the designer must understand how the design will be implemented. Thus the course considers the mechanisms available in C++ or Java and how they relate to the central concepts of object orientation.

The third day goes into more detail about the advanced features of object-oriented languages and specific areas of technology such as persistence and distribution. Concrete examples are used to illustrate the usefulness of the technologies described.