Design Patterns Explained: Before Taking the Course

Before Net Objectives offers a course, we like to ensure that all students are properly prepared. This page is intended to prepare students for the Design Patterns Explained and Design Patterns for Agile Developers course. Being properly prepared for courses of this type is essential - both for each participant's benefit, and for the benefit of the entire class. A common understanding of at least the mechanisms of object-orientation is a great benefit for the class.

If you are the sponsor for this course. Please instruct all of the people who will attend the course to read this page. All students should fill out the "OO Fundamentals Assessment Form" (below) to see where they stand. They don't need to send it in, but should match their answers with the key at the bottom. Any student not at a good level of object-oriented knowledge should also listen to "A Brief Review of Object-Oriented Mechanics" (below) as well as review the "Polymorphism Code Example" (below).

Details

We assume that students in this course:

  1. Understand the fundamentals of an Object-Oriented programming language (Java, C#, C++, or VB.Net being typical). By this we mean the student should:
    1. Know the difference between static and instance members
    2. Understand the difference between public, private, and protected access
    3. Understand the way inheritance works
    4. Understand what happens when we up-cast or down-cast an object reference
    5. Understand how one object can call methods on another via a reference
  2. Understand the basics of the Unified Modeling Language (UML). While the student does not have to have extensive knowledge of UML, there are a few basics that are needed:
    1. How Classes are depicted in UML
    2. How Inheritance is depicted in UML
    3. How aggregation/composition/delegation are depicted in UML
    4. How a dependency is depicted in UML
    5. How public, private, and protected members are depicted in UML

If you feel you do not have the prerequisite knowledge or if you are unsure whether you do or not, we provide the following assessments to help you decide. After each assessment is an online resource you can use if the assessment revealed that you need to prepare a bit for the course.

OO Fundamentals

UML Fundamentals

Polymorphism

If you are unfamiliar with the concept of using inheritance to achieve polymorphism, click below for an example in Code (C#, Java, and C++ examples are provided)

 

Upcoming Events