This part of the documentation will explain general solution strategies for common engineering problems. We explain mainly patterns that are also used in the examples.
"Design Patterns are general, repeatable solutions to common recurring problems in software development." [From Wikipedia, the free encyclopedia, "Design pattern (computer science)"].
A "pattern" has been defined as "an idea that has been useful in one practical context and will probably be useful in others." [M.Fowler, "Analysis Patterns - Reusable Object Models", Addison Wesley, ISBN 0-201-89542-0].
Some simple patterns can be directly transformed into code. However, do not expect all patterns to be complete solutions! They are helpful descriptions or templates on how to solve a particular problem, you as the programmer must know how and when to use them. In order to do this you must first understand the fundamental concepts of Object Oriented programming: Class, Object, Method, Message passing, Inheritance, Encapsulation, Abstraction and Polymorphism. If any of these concepts are unfamiliar to you please read up on them before continuing with this chapter, you will find references on OO programming at the end of this page.
Well-designed object-oriented systems have multiple patterns embedded in them. These patterns are divided into five categories - Fundamental, Architectural, Creational, Structural, and Behavioral - all of them reinforce as well as complement each other. Usually, patterns inside one category complement eachother because they have the same underlying principles for structuring code.
In this section a set of important patterns are outlined and explained. Additionally, in the download section a small example outlining a series of patterns can be downloaded. This set of examples is used in our "Best Practice" book.