Object-Oriented Software Engineering
Introduction to course and project roles
Software quality and modularity
Data abstraction with C++ classes
Inheritance (class derivation) and dynamic binding in C++
C++ code fragments, illustrating data abstraction, inheritance and dynamic binding
Software Life Cycle
Boehm's Spiral software development process model
Line editor with "undo" specification.
Requirements and Use Cases
Requirements specification for Undo problem
Use Case Handout
Object-oriented analysis
Kent Beck's 1989 OOPSLA paper on CRC cards
Class diagram
Composition and aggregation arrows
Composition and aggregation in boxes
Sequence diagram
Sequence diagram for concurrency
Collaboration diagram
"Still Life with Fruit" assignment
An executable version of FruitBowl
Eiffel and design by contract, assertions
Object-oriented design
Lecture on Abstract Data Types
Notes on Java
Exceptions in Java
Assertions in Java
notes on Java AWT
Lecture on C++ templates and STL
Concordance program, STL example
Issues with inheritance
C++ idioms
Design Patterns (Word document)
(Powerpoint)
Exception handling and Run-Time Type Information (RTTI) in C++
Networking with URLs and sockets in Java
Client-server quiz example, illustrating sockets in Java
Distributed databases and CORBA using Java (Word document)
(Powerpoint)
Cost estimation