Principles of Object-Oriented Software Development
Principles of Object-Oriented Software Development
Oriented Software
Development
Introduction
Introduction
Introduction
Summary
Q/A
Literature
Themes and
Variations
Subsections:
Object Terminology
Object Computation
Design by Contract
Themes and Variations
computation is sending
messages between objects
Message
Object-Oriented Modeling
data oriented
Responsibilities what rather than how
to specify behavior
Server
Contracts
a set of services
Behavioral refinement
improving contracts
Conformance -- behavioral refinement
more information
Services
better services
Contracts
more and better services
A better service
fewer restrictions for the client
more obligations for the server
Object-Oriented Modeling
Subsections:
Procedural programming
Data abstraction
Object-oriented programming
Object-Oriented Programming
Styles of programming
compile/runtime checks
clean interpretation/
orthogonal / efficient / minimal
Paradigms of Programming
Procedural programming
procedures, use the optimal algorithms
Modules
hide the data, provide functional abstractions
Data abstraction
types, provide a sufficientlycomplete set of operations
incr( pleasure );
decr( bugs );
incr( portability );
incr( maintainability );
incr( quality );
incr( salary );
Encapsulation
initialization
protection
coercions
Object-oriented programming
Polymorphism -- inheritance
Inheritance
dynamic binding
protection
multiple inheritance
The object-oriented
software life-cycle
Subsections:
Analysis
Design
Implementation
The software life-cycle
• Analysis -- Conceptual Model, System Requirements
• Design -- System Design, Detailed Design
• Implementation -- Coding, Testing
Software quality
Design Projects
...
A Multi-user Agenda Support System extends a simple
Agenda Support System by providing facilities for scheduling
a meeting, taking into account various constraints imposed
by the agendas of the participants, as for example a special
event for which a participant already has an entry in his or her
agenda. A minimal Multi-user Agenda Support System must
provide facilities for registering important dates for an arbitrary
number of users. It must, moreover, be able to give an overview
of important dates for any individual user, and it must be
possible to schedule a meeting between an arbitrary subset of
users that satisfies the time-constraints for each individual in that
particular group. This minimal specification may be extended
with input facilities, gadgets for presenting overviews and
the possibility of adding additional constraints. Nevertheless, as
an advice, when developing a Multi-user Agenda Support
System, follow the KISS principle: Keep It Simple ...
Implementation
Errors, bugs TeX
• [A] -- algorithm awry
• [B] -- blunder
• [C] -- structure debacle
• [F] -- forgotten function
• [L] -- language liability
• [M] -- mismatch between modules
• [R] -- reinforcement of robustness
• [S] -- surprises
• [T] -- a trivial typo
Smalltalk -- a radical change in programming languages
rapid prototyping
Technologies -- components
Challenges
Beyond object-orientation?
Nowadays there are many books that may serve as a starting point
for reading about OO. Dependent on your interest, you may look
at [Surviving], which treats issues of OO project management,
[Meyer97], which gives an extensive introduction to design by
contract and programming in Eiffel, or [Fowler97], which gives a
succinct introduction to UML. Alternatively, you may take one of
the introductory programming books for Java, from which you
will almost certainly learn something about OO as well.