Good Object-Oriented Design

 

Good design and programming is not learned by generalities, but by seeing how significant programs can be made clean, easy to read, easy to maintain and modify, human-engineered, efficient, and reliable, by the application of good design and programming practices. Careful study and imitation of good designs and programs significantly improves development skills.

Kernighan & Plauger.

 

 

News

 

Date

News

05.12

  • The site is finally online! The lecture notes for the Lecture 1-6 are currently online!
  • In a couple of days the first work assignment  will be also announced on the webpage

12.12

  • The first two assignments were posted!

02.01

  • The third (and last!) assignment was posted!

02.01

  • Lectures 7 and 8 are now online!

23.01

  • Lectures 9 is now online!

 

 

 

 

 

 

 

 

 

 General Course Information

 

Activity

Time

Room

Instructor

Lecture

Tuesday,   16:00 – 19:00

A214

Radu Marinescu

Project/Lab Session

 

ASPC-P11

 

 

 

Lecture Handouts

 

Lecture

Suggested Reading

 Lecture 1:

Principles of Good Design (ppt)

B. Meyer Object-Oriented Software Construction, Section 3.1–3.2 (pg. 39–53) .

E.V. Berard – Abstraction, Encapsulation, and Information Hiding

R.C. Martin – Patterns of Learning

Lecture 2:

Object-Oriented Design in a Nutshell (ppt)

A.J. RielObject-Oriented Design Heuristics (Addison-Wesley, 1996), Chapter 2 and 3 .

Lecture 3:

Principles of Object-Oriented  Design (ppt)

B. Meyer Object-Oriented Software Construction, Section 3.1–3.2 (pg. 39–53) .

R.C. MartinThe Open Closed Principle, The Dependency Inversion Principle,

R.C. Martin – Design Principles and Design Patterns

E. Gamma, R. Helm, R. Johnson and J. VlissidesDesign Patterns (Section 1.6, pg. 11-24) .

Lecture 4:

Principles of Object-Oriented  Design 2 (ppt)

R.C. MartinThe Liskov Substitution Principle, The Interface Segregation Principle

R.C. Martin – Design Principles and Design Patterns

K.J. Lieberherr, I.M.Holland – Assuring Good Style for Object-Oriented Programs
A.J. Riel Object-Oriented Design Heuristics (Addison-Wesley, 1996), Chapter 4 .

Lecture 5:

Principles of High-Level

 Design  (ppt)

R.C. MartinStability, Granularity

Lecture 6:

Introduction to Design Patterns.

(ppt)

E. Gamma, R. Helm, R. Johnson and J. VlissidesDesign Patterns (Chapter 1 – Introduction)

D. Thomas, A. Hunt – Pragmatic Programming Essays (Patterns and Piano Chords)

F. Buschmann, et.al – Pattern-Oriented Software Architecture. A System of Patterns (Chapter 1 – Patterns)

Lecture 7:

Creational Patterns.

(ppt)

E. Gamma, R. Helm, R. Johnson and J. VlissidesDesign Patterns (Creational Patterns: Factory Method, Prototype, Abstract Factory, Singleton)

B. Eckel Thinking in Patterns (Chapter 5 – Factories: Encapsulating Object Creation)

Lecture 8:

Good-Mannered Dealing

with Requests

(ppt)

E. Gamma, R. Helm, R. Johnson and J. VlissidesDesign Patterns

  • Command  (pg. 233-242)
  • Composite (pg. 163-174)
  • Chain of Responsibility (pg. 223-232)
  • Decorator (pg. 175-184)

B. Eckel Thinking in Patterns (Chapter 6 – Function Objects; Chapter X – Decorators: dynamic type selection)

 

Lecture 9:

Changing the Guts

(ppt)

E. Gamma, R. Helm, R. Johnson and J. VlissidesDesign Patterns

  • Strategy  (pg. 315 - 324 )
  • State (pg. 305 - 314)
  • Proxy (pg. 207 - 218)
  • Bridge (pg. 151 – 162)
  • Visitor

B. Eckel Thinking in Patterns

  • Strategy (Chapter 6 – Function Objects)
  • State, Proxy (Chapter 4 – Fronting for an Implementation)

R.Martin Visitor and Acyclic Visitor. from Agile Principles, Patterns and Practices in C# .

 

Lab Assignments

 

Assignment

Deadline

Assignment 1: Processing Credit Cards

Week 14

Assignment 2: Visiting an Object-Oriented Tree

Week 14

Assignment 3: Improving a Command Hierarchy

Week 14

 

 

 

 

 

Classified Resources

 

Category

Resource

Design Principles

A.J. RielObject-Oriented Design Heuristics (Addison-Wesley, 1996) .

R.C. MartinThe Open Closed Principle, The Liskov Substitution Principle, The Interface Segregation Principle,  The Dependency Inversion Principle, Stability, Granularity

R. Johnson Designing Reusable Classes (JOOP, 1988)

Design Patterns

E. Gamma, R. Helm, R. Johnson and J. VlissidesDesign Patterns (Addison-Wesley, 1995)    .

F. Buschmann, et.al – Pattern-Oriented Software Architecture. A System of Patterns (John Wiley & Son, 1996)

The Home Page of Patterns   

 

Object-Oriented Design

B. MeyerObject-Oriented Software Construction (Prentice Hall, 2000)

G. Booch – Object-Oriented Analysis and Design with Applications (2nd Edition) (Addison-Wesley, 1994)

P.Coad, E. YourdonObject-Oriented Design (Yourdon Press, 1990)

Software Architecture

D. Garlan, M. ShawAn Introduction to Software Architecture

D. Garlan, M. ShawSoftware Architecture: Perspectives on an Emerging Discipline (Prentice Hall, 1996)