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.
|
Date |
News |
|
05.12 |
|
|
12.12 |
|
|
02.01 |
|
|
02.01 |
|
|
23.01 |
|
|
|
|
|
|
|
|
|
|
|
Activity |
Time |
Room |
Instructor |
Lecture |
Tuesday, 16:00 – 19:00
|
A214
|
|
|
Project/Lab Session |
|
ASPC-P11 |
Lecture |
Suggested
|
|
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.
Riel – Object-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. Martin – The Open
Closed Principle, The
Dependency Inversion Principle, |
|
|
R.C.
Martin – Design
Principles and Design Patterns |
|
|
E.
Gamma, R. Helm, R. Johnson and J. Vlissides – Design
Patterns (Section 1.6, pg. 11-24) . |
|
|
Lecture 4: Principles of Object-Oriented Design 2 (ppt) |
R.C.
Martin – The 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.
Martin – Stability,
Granularity |
|
Lecture 6: Introduction to Design Patterns. (ppt) |
E.
Gamma, R. Helm, R. Johnson and J. Vlissides – Design
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. Vlissides – Design
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. Vlissides – Design
Patterns
|
|
B. Eckel
– Thinking in
Patterns (Chapter 6 – Function Objects; Chapter X – Decorators:
dynamic type selection) |
|
|
Changing the Guts (ppt) |
E. Gamma, R. Helm, R. Johnson
and J. Vlissides – Design Patterns
|
|
B. Eckel – Thinking in Patterns
|
|
|
R.Martin – Visitor
and Acyclic Visitor. from Agile Principles, Patterns and Practices in C# . |
|
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 |
|
Category |
Resource |
Design Principles |
A.J. Riel – Object-Oriented
Design Heuristics (Addison-Wesley, 1996) . |
|
R.C. Martin – The 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. Vlissides – Design Patterns
(Addison-Wesley, 1995) . |
|
F. Buschmann, et.al – Pattern-Oriented
Software Architecture. A System of Patterns (John Wiley & Son, 1996) |
|
|
|
|
|
Object-Oriented Design |
B. Meyer – Object-Oriented
Software Construction (Prentice Hall, 2000) |
|
G. Booch – Object-Oriented
Analysis and Design with Applications (2nd Edition) (Addison-Wesley,
1994) |
|
|
P.Coad, |
|
|
Software Architecture |
D. Garlan, M. Shaw – An
Introduction to Software Architecture |
|
D. Garlan, M. Shaw – Software
Architecture: Perspectives on an Emerging Discipline (Prentice Hall,
1996) |