0% found this document useful (0 votes)
135 views46 pages

Principles of Object-Oriented Software Development

The document discusses principles of object-oriented software development including: 1. Key object-oriented concepts like abstraction, modeling, and software architecture. 2. Paradigms of programming like procedural, data abstraction, and object-oriented programming. 3. The object-oriented software life-cycle including analysis, design, and implementation.

Uploaded by

rajeshroy1
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
135 views46 pages

Principles of Object-Oriented Software Development

The document discusses principles of object-oriented software development including: 1. Key object-oriented concepts like abstraction, modeling, and software architecture. 2. Paradigms of programming like procedural, data abstraction, and object-oriented programming. 3. The object-oriented software life-cycle including analysis, design, and implementation.

Uploaded by

rajeshroy1
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 46

Principles of Object-

Oriented Software
Development
Introduction
Introduction

Introduction

Themes and variations


Paradigms of programming
The object-oriented software life-cycle
Trends and technologies

Summary
Q/A
Literature
Themes and
Variations

Subsections:
Object Terminology
Object Computation
Design by Contract
Themes and Variations

• abstraction -- the object metaphor


• modeling -- understanding structure and behavior
• software architecture -- mastering complexity
• frameworks -- patterns for problem solving
• components -- scalable software
Object Terminology
• objects -- packet containing data and procedures
• methods -- deliver service
• message -- request to execute a method
• class -- template for creating objects
• instance -- an object that belongs to a class
• encapsulation -- information hiding by objects
• inheritance -- allowing the reuse of class spec.s class
• hierarchy -- tree structure inheritance relations
• polymorphism -- to hide different implementations
Features of OOP
• information hiding: state, autonomous behavior
• data abstraction: emphasis on what rather than how
• dynamic binding: binding at runtime, polymorphism , virtual
functions
• inheritance: incremental changes (specialization), reusability
Benefits of OOP
• OO = encapsulation + inheritance
• modularity -- autonomous entities, cooperation through exchanges of
messages
• deferred commitment -- the internal workings of an object can be
redefined without changing other parts of the system
• reusability -- refining classes through inheritance
• naturalness -- object-oriented analysis/design, modeling
Object Computation
The object model

computation is sending
messages between objects

Message

object method arguments


Computing Devices

mathematical model -- Turing machine

universal machine -- machines as programs

computability & complexity -- time/space bounded

Object-oriented programming does not enlarge


the class of computable problems, nor does it reduce
the computational complexity of the problems we can handle.
Design by Contract

Abstract Data Types

ADT = state + behavior

Object-Oriented Modeling

data oriented
Responsibilities what rather than how

to specify behavior

Client client/server model

makes request to perform a service

Server

provides service upon request


object = information + responsibilities

Contracts

a set of services

Behavioral refinement

improving contracts
Conformance -- behavioral refinement

if B refines A then B may be


used wherever A is allowed
Attributes refine

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

prototyping, specification, refinement, interactions

OOP = Contracts + Refinements


Paradigms of programming

Subsections:

Procedural programming
Data abstraction
Object-oriented programming
Object-Oriented Programming

high tech synonym for good

Styles of programming

A language supports a style of programming if it provides


facilities that make it convenient (easy, safe and
efficient) to use that style

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

Object-oriented programming -- organize your types


make commonality explicit by using inheritance
Procedural programming

while ( programming == art ) {

incr( pleasure );
decr( bugs );
incr( portability );
incr( maintainability );
incr( quality );
incr( salary );

} // live happily ever after


Data abstraction

Support for data abstraction

Abstract Data Types -- encapsulation

Encapsulation

initialization
protection
coercions
Object-oriented programming

Support for OOP

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

With an increase in the number of software products not


satisfying user needs, prototyping has become quite popular!
Requirements -- user needs
are constantly evolving
• Reliability -- incremental development, reuse, synthesis
• Adaptability -- evolutionary prototyping
• Maintainability -- incremental development, synthesis
• Performance -- incremental development, reuse
Software Development
Models
• rapid throwaway prototyping -- quick and dirty
• incremental development -- slowly evolving
• evolutionary prototyping -- evolving requirements
• reusable software -- reduces cost and time
• automated software synthesis -- one level of abstraction higher
Analysis

Object Oriented Analysis

analysis = extracting the needs

The problem domain -- complex reality

Communication -- with domain experts

Continual change -- user requirements

Reuse -- of analysis results


Analysis Methods

• Functional Decomposition = Functions + Interfaces


• Data Flow Approach = Data Flow + Bubbles
• Information Modeling = Entities + Attributes + Relationships
• Object-Oriented = Objects + Inheritance + Message passing
Design
Object-Oriented Design

design for maintenance and reuse!

Software quality

correctness, robustness, extensibility, compatibility

Design Projects

IDA -- Interior Design Assistant


MASS -- Multi-user Agenda Support System
Design assignments
IDA

An Interior Design Assistant (IDA) is a tool to support an


interior design architect. When designing the interior of a house
or building, the architect proceeds from the spatial layout and a
list of furniture items. IDA must allow for placing placing
furniture in a room. It will check for constraints. For example
placing a chair upon a table will be prohibited. For each design,
IDA must be able to give information with respect to
pricing and the time it takes to have the furniture items
delivered. In addition to the design facilities, IDA must also
offer a showroom mode, in which the various designs can be
inspected and compared with respect to price and delivery time.
MASS

An Agenda Support System assists the user in maintaining a


record of important events, dates and appointments. It moreover
offers the user various ways of inspecting his or her agenda, by
giving an overview of important dates, an indication of
important dates on a calendar, and (more advanced) timely
notification.

...
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

Eiffel -- a language with assertions


correctness

C++ -- is much more than a better C


the benefits of efficiency

Java -- the dial-tone of the Internet


security

DLP -- introduces logic into object orientation


development of knowledge-based systems
Beyond Object-Orientation?
Trends -- modeling

patterns -- examples of design


UML -- Unified Modeling Language

Technologies -- components

Web -- global infrastructure


CORBA/DCOM - the software bus
Java -- the platform?

Challenges

Applications -> Frameworks <- Patterns


Challenges in O-O
• vertical framework development -- finance, medical care, insurance
• separation of 'logic' from 'control' -- business rules
• distributed object technology -- heterogeneous systems
• visualisation -- structure and processes
• knowledge intensive applications -- declarative
• heterogeneous systems - fragmented applications
Summary
1

Themes and Variations

• terminology -- all phrases


• object computation -- message passing
• contracts -- for constructing and validating software
2
Paradigms of
programming

• styles of programming -- as a family of conventions


• data abstraction -- and its possible realizations
• polymorphism -- and the features of inheritance
3
The object-oriented
software life-cycle

• software development models -- in particular the role of


prototyping
• software quality -- in relation to reuse and maintenance
• programming languages -- the choice of a vehicle
4

Beyond object-orientation?

• modeling -- patterns, UML


• components -- CORBA, (D)COM, Java
• heterogeneous systems -- separating logic and control
Questions
1.How would you characterize OOP and what, in your opinion, is the
motivation underlying the introduction of OOP?
2.Characterize the most important features of OOP.
3.Explain the meaning of the phrase "object orientation reduces the
complexity of programming."
4.How would you characterize contracts? Why are contracts important?
5.How is OOP related to programming languages?
6.What classes of languages support OOP features? Explain.
7.What influence is an object-oriented approach said to have on the
software life-cycle? What is your own opinion? Discuss the problem of
maintenance.
8.How would you characterize software quality?
9.Mention a number of object-oriented programming languages, and
give a brief characterization.
10.What do you see as the major challenges for research in 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.
Further reading

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.

You might also like