Object Technology Masterclass

Target audience

Aimed at developers who know the concepts of OO and at those who have been involved in one or more OO projects.

Objectives

  • To provide an understanding of advanced OO design techniques
  • To highlight some of the difficulties in implementing OO designs in a variety of programming languages.
  • To discuss the state of the art in Object Technology.

Data

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

Outline

  • Abstraction; its fundamental role in object oriented designs and how it is implemented.
  • Interface and implementation inheritance; the distinction between these fundamental concepts and how they are implemented in a variety of languages and architectures such as Microsoft’s .net and Java..
  • Microsoft .net, DCOM and ActiveX.
  • Design Idioms; in particular, how to use existing Frameworks and Design Patterns in projects and how to document patterns that could be used in other projects.
  • Component-based design; when to use classes and inheritance and when to use instances and exemplars.
  • Advanced object oriented topics:
    • Generic types; how they are made available, such as templates in C++, and how to use them in a design effectively.
    • Memory management; how to manage memory efficiently in a variety of programming languages. In particular, how to avoid losing memory in languages, such as C++, that do not support garbage collection.
    • Exception handling; in particular how to incorporate exception handling into a design sufficiently early and how to expose the necessary details to other programmers.
    • Meta-programming; how to write programs that manipulate classes as well as objects and why this is fundamentally important for many large systems.
  • Comparisons of a variety of object oriented programming languages, looking at their strengths and weaknesses.
  • Object oriented architectures, such as J2EE and .net, and how they impact object oriented programs.
  • The impact of object oriented development on development plans and teams.

Description

This course is designed for developers who already have some experience of building object oriented projects. The aim is to cover topics that are not covered in most books or courses but rather are the result of the practical lessons learnt by the instructors over many years building real object oriented systems.

The topics fall into two main categories, firstly those to do with using object oriented concepts to get real benefits, and secondly practical issues in using a variety of object oriented programming languages.

Rather than have exercises where groups attempt to find the answers individually, the day is organised into a series of seminars led by the instructor but providing a forum for developers to share their experiences as well as learning from the instructor. The seminars take a particular concept or problem and the group as a whole discusses the pros and cons of various ways of dealing with the issues. For example, the lack of garbage collection in C++ can be tackled in a number of ways, different approaches will be suitable in different situations.

As well as the technical aspects of object technology, the course will cover some aspects of large-scale development such as basing teams and tasks on scenarios rather than classes and managing and maintaining large class hierarchies.