Object-Oriented Programming and Design Workshops

Vietnam National University & Nong Lam University

Ho Chi Minh City, Vietnam, July 19 & 20, 2004

Conducted by Dung X. Nguyen & Stephen B. Wong, Rice University, Houston, TX, USA

Home Union Pattern

Overview:

Design Patterns are commonly viewed as design solutions to recurring problems. Fundamental to problem solving is the principle of "divide-and-conquer": decompose the problem into smaller "chunks", solve each of the chunks and reassemble the solutions of the chunks to solve the original problem.  How to decompose a problem and how to reassemble the parts are at the heart of the design process and are intimately intertwined. 

In object-oriented programming, a problem is decomposed into separate entities that are related to one another via two fundamental relationships: "is-a" for inheritance and "has-a" for composition.  An object-oriented design pattern not only describes the specific "is-a" and "has-a" relationships of the various pieces in a problem, but also prescribes how the pieces interact with one another to solve the problem.  As such, design patterns are expressions of fundamental principles in computing.

Schedule:

  1. Inheritance and polymorphism:
    1. Union design pattern
    2. Factory design pattern
    3. The Shape Calculator
  2. Component Frameworks for Data Structures
    1. Immutable Lists
      1. What is a List?
        1. Abstract Structure
        2. Composite Design Pattern
      2. What is an algorithm on a list?
        1. Interpreter pattern
        2. Recursion
        3. Play-acting & Examples
      3. Decoupling algorithms from data structures
        1. Abstract Behavior
        2. Separation of Variant and Invariant
        3. Intrinsic vs. Extrinsic Behaviors
        4. Visitor Design Pattern
        5. Examples
      4. Does it all depend on the list implementation?
        1. Abstract Construction
        2. Factory design pattern
        3. Examples
    2. Mutable Lists
      1. Introduction to the State design pattern
      2. The State Design Pattern and Mutable Lists
      3. LRStruct implementation
      4. Visitors to LRStruct : OOT vs. NOOT
      5. Lazy Evaluation
        1. Decorator design pattern
        2. Strategy design pattern
        3. Factory design pattern (again)
      6. Self-balancing trees
        1. Published paper (911 KB file)
        2. PowerPoint presentation (478 KB file)
        3. Image of the poster presented (728 KB file)
  3. Lunch break (perhaps earlier)
  4. Design Festival
    1. Problem statement
    2. Group design
    3. Break
    4. Analysis of designs 

 

 

 

Resources: