Title: CS 3050
1CS 3050
- Development using the Object Oriented Approach
2Objectives
- The Benefits of OO Development
- Productivity
- Maintainability
- Extendibility
- Problems with OO Approach
- Changing to the OO Approach
- Preparing for Your Own Change to OO Development
3Introduction
- The OO approach is a different way of developing
systems. - Some analysts claim that the OO approach implies
a paradigm shift, a different way of viewing the
world. - Some problems from the shift result from the
transition from traditional system development. - This transition can be a major undertaking, one
that requires a great commitment of resources.
4The Benefits of OO Development
- The increase in productivity has not kept pace
with the increase in demand for speedy delivery
of new software. - Existing software needs massive maintenance
effort to keep them operational. - Some companies spend up to 80 resource for
maintenance.
5Maintenance Requirement
- There are 4 reasons for the maintenance
requirement - Specifying and programming software systems a
complicated undertaking -logical and syntactical
code errors usually occur. - Requirements specification - a major challenge in
systems development. Do not always reflect users
real needs which is often not even clear to users
until after the first version of the software is
running. - Additional features that could not be
accommodated in the original development might be
needed. - The business environment that the software is
supporting might be changing.
6Productivity
- From a programming perspective, there are many
problems that a traditional functional language
does not lend itself to solving easily. - In most cases the use of OO language tends to
result in shorter and more compact program code. - OO allows a building block approach to system
development. Assembling application using
existing classes and libraries resulting in
significant increase in productivity.
7Reuse
- Can modules generated from structured programming
be reused? - Why is reuse in the design of Object-Oriented
systems highlighted? - goto ReuseResponse.rtf
8Maintainability and Quality
- Improved maintenance is main advantage of a OO
system. - OO software is constructed using self-contained
object classes. Object tend to be small in terms
of number of programming statements that are
needed to implement them creating manageable
units within the system. - Less complexity, fewer errors and reduced code.
9Missing or Incorrect Specifications
- Specifications define what to build. Problems
often because wrong specifications and poor
understanding of the user needs. - Traditional information systems were developed
using structured development approach and common
modeling techniques like data flow diagramming
and data modeling. - Unlike the traditional approach, OO approach
promises to narrow down the communication gap by
using modeling concepts and techniques that are
more closely related to the users way of
thinking. - Object models allow us to remain in the same
modeling context for the duration of the project,
thereby also increasing the quality of the
development effort.
10Extendibility
- A system will eventually need to be changed
either because all required functionality was not
included or business needs changed. - Adding features With OO approach, method and
attributes can be added to existing object
classes without disrupting the rest of the
system. Using the inheritance feature new classes
can be easily added. - New features can be added using an incremental
approach. The main functionality can be made
available quickly for users and additional
features can be added when time allows.
11Problems with the OO Approach
- The potential benefits are not easily attainable.
Using OO technology it is still possible to
design a truly awful system in terms of quality
and maintainability. - OO technologies and development methods are still
not mature or stable. Any large-scale change to
new technology and methods is likely to be time
consuming. Also there is a substantial learning
curve. Productivity and quality decreases as
staff is learning new methodology. - Some benefits will show up only after a
considerable amount of time. Benefits from reuse
are only achievable after a certain portfolio of
system has been developed.
12Changing to OO Approach
- There are three different areas that need to be
considered when changing to the OO approach.
These are - Tools The right programming environment,
database and CASE tool need to be selected and
implemented. - Methodology The right methodology has to be
selected and implemented. - Organization The necessary training must be
provided. Organizational impact must be assessed.
A suitable pilot project must be selected. The
change effort must be planned and managed and the
right personnel must be available.
13Preparing for your own change to OO Development
- The availability of well-qualified people would
be a main bottleneck for an organization. - Fundamental change in their way of thinking is
required by people accustomed to structured
system development. - IT personnel with the right educational
background might be able to compete successfully
with more experience information system
developers.
14Is Everything an Object?
- Why Focus on Objects?
- What is an Object?
- What is an Object in a Computer System?
- Types of Objects in Computer Systems
- User interface Objects
- Operating Environment Objects
- Task-Related Objects
15Why Focus on Objects?
- In some way everything can be an object.
- The classification process is based on the
features and behaviors that make up a class of
objects. - A more specialized class inherits the features
and behaviors of all classes above in a
hierarchy. - People naturally organize information into
classes and hierarchies of general classes and
more specialized subclasses --called
Generalization/ Specialization hierarchies. - People also naturally recognize that things can
be divided into parts called whole-part
hierarchies.
16Why Focus on Objects?
- Generalization/Specialization hierarchies and
whole-part hierarchies allow us to understand
things and define things and communicate about
things in terms of other things we know. - Generalization/Specialization hierarchy is often
described as a series of is a relationships. - We also understand things, define things, and
communicate about things by using the concept of
an object and its parts.
17Inheritance and Generalization/ Specialization
Hierarchies
- Generalization/ Specialization Hierarchies allow
inheritance. - We organize and define things and communicate
about things in terms of Generalization/
Specialization Hierarchies. - Inherit means get something from, in OO approach
one class of objects can inherit attributes and
methods from another. - OO approach encourages and allows reuse. Reuse
means to use something over again, rather than
having to reinvent the wheel. - This method allows a more compact and less
redundant model
18Classification and Generalization
- Gen/Spec is a relationship between classes only
- There is no object relationship
- Bob calls his car Max.
- Max is a Ford Mustang.
- A Ford Mustang is a Car.
- Cars are Vehicles.
- Ford is a Make.
19Why Focus on Objects
- The OO approach to computer system is therefore a
more natural approach for people, since we
naturally think in terms of objects, and we
classify them into hierarchies and divide them
into parts. Fig 2.3
20What is an Object?
- A person or thing through which action, thought,
or feeling is directed. Anything visible or
tangible a material product or substance (Coad
Yourdon, 1991, p. 52) - James Martin defines an object in relation to
concepts From a very early age, we form
concepts. Each concept is a particular idea or
understanding we have about our world. These
concepts allow us to make sense of and reason
about the things in our world. These things to
which our concepts apply are called objects. - ( Martin, 1993, p. 17).
21What is an Object?
- Grady Booch uses a variety of approaches A
tangible and/or visible thing something that may
be apprehended intellectually something toward
which thought or actions is directed. An
individual , identifiable item, unit, or entity,
either real or abstract, with a well-defined role
in the problem domain. Anything with a crisply
defined boundary. (Booch, 1994, p. 82)
22What is an Object?
- Others conclude that anything can be considered
an object An object is a thing that can be
distinctly identified. At the appropriate level
of abstraction almost anything can be considered
to be an object. Thus a specific person,
organization, machine, or event can be regarded
as an object. (Coleman et el. 1994, p. 13) - All of these definitions acknowledge that an
object is something that people think about,
identify, act upon or apply concepts to. - And because different people have perceptions of
the same object, what an object is depends upon
the point of view of the observer. We describe
an object on the basis of the features and
behaviors that are relevant to us.
23What is an Object in a Computer System
- Just about anything can be considered to be an
object can be identified as an object in a
computer system. In computer system it could be a
menu or button. - Peter Coad uses a concept he call object think,
he simply proposes that an object simply knows
things and knows how to do things.
24A generalization/Specialization hierarchy of
types of objects in a computer system Fig 2.4
25Types of objects in Computer System
- If anything can be considered to be an object at
some level of abstraction then anything applying
to computer systems can be considered to be an
object. - The types of objects in computer systems might be
classified as user interface objects, operating
system objects and task-related objects.
26User Interface Object
- User interface objects are objects that
physically appear on the screen and end-users
directly interact with them. - They have attributes, they exhibit behaviors,
they interact with each other and most important
we interact with them. - When developers says they are using OO technology
to develop a systems they really mean they are
using interface objects to develop a graphical
user interface for their system.
27 Common User Interface ObjectsFig 2.5
28Operating Environment Objects
- Operating environment object is another type of
object. - Client and a Server in the client/server
architecture is OO. - A server object provides services for others and
client object requests services form others. - To those developer who works on Operating systems
OO mean operating system objects.
29Task-Related Objects
- Task-related objects are used to actually
complete work. These things that a computer
application deals with or creates. - Document Objects documents are objects that know
things and know how to do things. (i.e. word
processing applications) - Multimedia Objects Multimedia systems are
another important type of application which
contain sound, video, images. - Problem Domain Objects They are things typically
involved in information processing systems, such
as customers, products, order or employees. They
often correspond to the types of things
identified when modeling data.
30A multimedia object Fig 2.7