The Introduction to Object-Oriented Programming

advertisement
COSC2767: Object-Oriented
Programming
Haibin Zhu, Ph. D.
Associate Professor of CS,
Nipissing University
1
Contact Me
Haibin Zhu, Ph. D.
 Associate Professor of CS, Nipissing
University
 Room: A124A Ext.: 4434
 Email: haibinz@nipissingu.ca
 URL: http://www.nipissingu.ca/faculty/haibinz
 Office Hour: Mon. & Tue.12:30pm-3:30pm;
or by appointment

2
Course Description

Covers the concepts of OOP languages and
systems
 fundamental
abstraction, modularity and
encapsulation mechanisms in OOP

Advanced OOP concepts
 polymorphism
and operator overloading;
message passing via generic functions; late
versus early binding times; and inheritance
mechanisms and their relationship to the type
systems of programming languages.
 Templates, Design Patterns
 Java and Eclipses
3
How to get the goals

Read and remember
 Read

Think
 Think

the books, remember the language
in objects, think in classes
Practice
 Do
as many coding as possible and make them
running

Ask
 Email
4
me questions
Prerequisite
 Basic
knowledge of
 Programming
 COSC1557,
5
COSC1567
The Textbooks Used
 Timothy
A. Budd, The Introduction to
Object-Oriented Programming (3rd
Edition), Addison-Wesley, 2001, ISBN
0201760312
 Avinash C. Kak, Programming with
Objects: A comparative presentation of
object-oriented programming with C++
and Java, John Wiley & Sons, 2003.
ISBN: 0-471-26852-6.
6
Lecture 1
 Thinking
7
in Objects
Contents
 Methodology(Philosophy)
 Programming
Techniques
 Object-Oriented Languages
 Object and Large Systems
8
Thinking Methodology
Induction
From
(Abstract)
specialization to generalization
From
different dogs to create the word
“dog”
Dog
9
Thinking Methodology
Deduction(infer)
From
generalization to specialization
the word “dog” you have learnt to
know an animal is or not a dog.
From
DOG
10
Design Methodologies
 Functional
 The
decomposition (Top-Down)
whole system is characterized by a
single function, and then the function is
decomposed into a set of functions in a
process of stepwise refinement.
11
Functional decomposition
The System
Function1
Desk
12
Function2
Table top
Studying
Function3
... ...
Filing cabinet Bookshelves
... ...
... ...
Function11
Function12
Left drawer
Middle drawer Right drawer
Design Methodologies
 Functional
 You
composition (bottom-up)
can have different components of
functions such as that from a function
library
 You can compose them into a module with
a more significant function.
13
Functional composition
The System
Function1
Desk
14
Function2
Table top
Studying
Function3
... ...
Filing cabinet Bookshelves
... ...
... ...
Function11
Function12
Left drawer
Middle drawer Right drawer
Functional (De)Composition
 Also
known as top-down development
 Widely deemed to be a “good thing”
 Regard thing to be developed as a hierarchy
 State top level, and decomposing into smaller
functions.
 Decomposition continues until code level.
 Modules with well-defined semantics that can be
directly implemented.
 Procedures owe the data
 Data plays a secondary role
 Does not necessarily reflect the states of
abstraction in the application.
15
Object-Orientation
 It
is a kind of thinking methodology
 Everything
in the world is an object;
 Any system is composed of objects (certainly
a system is also an object);
 The evolution and development of a system
is caused by the interactions among the
objects inside or outside the system
16
Everything in the world is an
object
A flower, a tree, an animal
 A student, a professor
 A desk, a chair, a classroom, a building
 A university, a city, a country
 The world, the universe
 A subject such as CS, IS, Math, History, …

17
Any system is composed of
objects
A
law system
 A cultural system
 An educational system
 An economic system
 An Information system
 A computer system
18
The development of a system is
caused by the interactions
 Nipissing
University is developed by the
interactions among:
 students
 professors
 staffs
of Ontario
 officers of Canada
 … ...
Inside
Nipissing
 officers
19
Outside
Nipissing
Design Methodologies
 Object-Orientation
is one of the
computational thinking methodologies.
 Object-Orientation is a kind of design
methodology(OOA/OOD)
 Objects
are the building blocks of the
program(interface object(editor, menu, file,
etc), data managing object(db), etc.).
 Objects represent real-world abstractions
within the application.
20
Design Methodologies
Object-orientation

induction: objects -> a class
This

supports both
needs the tools for OOA/OOD.
and deduction: a class ->objects
This
needs the programmers to learn
about the class library.
21
Design Methodologies
 Object-orientation
supports both
 Top-down:
 from
a superclass to subclasses;
 complex objects to simple objects.
 Bottom-up:
 from
subclasses to a superclass
 Simple objects to complex objects
22
Object-Orientation
 “The
World is Object-Oriented”
 ----Alan
 If
Kay said.
you know the world, you know objectorientation.
 So, object-orientation is easy.
23
Programming
 Programming
is like writing.
 If you can write a demonstration, you
can make a program.
 So, programming is also easy.
 Then, Object-oriented programming
equals easy + easy, that’s too(2) easy.
24
Programming
But, actually, programming is not so easy,
because a real good program is not easily
programmed. It needs the programmers’ lots
of wisdom, lots of knowledge about
programming and lots of experience.
 It is like writing, to be a good writer needs
lots of experience and lots of knowledge
about the world.
 Learning and practice are necessary.

25
Programming Techniques
The
evolution of programming
techniques is
to
make programming languages
more expressive
to develop complex systems more
easily
26
Programming Techniques
Unstructured
Programming
Procedural Programming
Modular & Structural Programming
Abstract Data Type
Object-Oriented Programming
27
Unstructured Programming
 Usually,
people start learning
programming by writing small
and simple programs
consisting only of one main
program. Here ``main
program'' stands for a
sequence of commands or
statements which modify data
which is global throughout the
whole program.
28
Main Program
Data
Drawbacks
This programming technique can only be used in
a very small program.
 For example, if the same statement sequence is
needed at different locations within the program,
the sequence must be copied. If an error needed
to be modified, every copy needs to be modified.
 This has lead to the idea to extract these
sequences(procedure), name them and offering
a technique to call and return from these
procedures.

29
Procedural Programming
 With
procedural programming,
you are able to combine
sequences of calling
statements into one single
place.
 A procedure call is used to
invoke the procedure. After the
sequence is processed, flow of
control proceeds right after the
position where the call was
made .
30
Main
Program
Procedure
Procedures
 With
parameters and sub-procedures
(procedures of procedures) , programs can
now be written more structured and error
free.
 For example, if a procedure is correct, every
time it is used it produces correct results.
 Consequently, in cases of errors you can
narrow your search to those places which
are not proven to be correct.
31
Procedure Program
view
 Now
a program can be viewed as a
sequence of procedure calls.
 The main program is responsible to
pass data to the individual calls, the data
is processed by the procedures and the
resulting data is presented.
 Thus, the flow of data can be illustrated
as a hierarchical graph, a tree.
32
Procedure Program view
Main Program
Data
Procedure1
33
Procedure2
Procedure3
Modular Programming
Modular programming is subdividing your
program into separate subprograms such as
functions and subroutines.
 With modular programming, procedures of a
common functionality are grouped together
into separate modules.
 A program therefore no longer consists of
only one single part. It is now divided into
several smaller parts which interact through
procedure calls and which form the whole
program.

34
Main Program(Also a module)
Data
Module1
+
Data
Data
Data11
Procedure1
Module2
+
Data
Data2
Procedure2
Procedure3
The main program coordinates calls to procedures in separate
modules and hands over appropriate data as parameters.
35
Modular Programming
 Each
module can have its own data.
This allows each module to manage an
internal state which is modified by calls
to procedures of this module.
 Each module has its own special
functionalities that supports the
implementation of the whole program.
36
Structural Programming
Also structured programming
 A subset of procedural programming that
enforces a logical structure on the program
being written to make it more efficient and
easier to understand and modify.
 Certain languages such as Ada, Pascal, and
dBASE are designed with features that
encourage or enforce a logical program

37
Structural Programming
How many basic structures for programming?

Three Types of Structures in a structured
program
Statement
sequence(s1,s2,…,sn)
Branch(if-then-else)
Loop(for,do,
Keep
38
and while loops)
no goto!!! Keep modules!!!
Abstract Data Types (ADTs)
A
set of data values and associated
operations that are precisely specified
independent of any particular
implementation.
 Come with Modular Programming
 Abstraction
 Model
 Properties
of Abstract Data Types
 Abstract Data Types and Object-Orientation
39
Abstraction: Handling Problems
A process of generalization by reducing the
information content of a concept or an
observable phenomenon, typically in order to
retain only information which is relevant for a
particular purpose.
 Try to understand the problem to separate
necessary from unnecessary details:

 You
try to obtain your own abstract view, or model,
of the problem.

40
This process of modeling is called
abstraction.
Abstraction
Problem
Model
 Two
of the most important types of
abstraction are the following:
 Division
into parts: Has-A abstraction
 Division into specialization: Is-A
abstraction
41
Has-A Abstraction
Division into parts takes a complex system,
and divides into component parts, which can
then be considered in isolation.
Characterized by sentences that have the
words ``has-a''
 A car has-a engine, and has-a transmission
 A bicycle has-a wheel
 A window has-a menu bar
 Allows us to drop down a level of complexity
when we consider the component in
isolation.

42
Is-a Abstraction
Is-a abstraction takes a complex system, and
views it as an instance of a more general
abstraction. Characterized by sentences that
have the words ``is-a''
 A car is a wheeled vehicle, which is-a means
of transportation
 A bicycle is-a wheeled vehicle
 A pack horse is-a means of transportation
 Allows us to categorize artifacts and
information and make it applicable to many
different situations.

43
Model
A
model is an abstraction or conceptual
object used in the creation of a predictive
formula or a solution.
 A model defines an abstract view to the
problem and focuses only on problem
related stuff and that you try to define
properties:
 the
data which are affected;
 the operations which are identified;
 ADT
44
is a kind of Model.
Abstract data types(ADT)
•Abstract data types are a partial
solution to models
•ADT defines the interface to a data
abstraction without specifying
implementation detail.
45
Properties of ADT
abstraction, you create (1) a welldefined entity which can be properly
handled.
 These entities define (2) the data
structure of a set of items.
 With
 For
example, each administered employee
has a name, date of birth and social
number....
46
Properties of ADT(Cont’d)
data structure can only be (3)
accessed with defined operations.
 The
 This
set of operations is called interface and
is exported by the entity.
 An
entity with the properties just
described is called an abstract data
type (ADT).
47
ADT
Abstract
Data Type
Abstract Data Structure
Interface
Operations
48
Definition (ADT)
 ADT
is characterized by the following
properties:
 1.
It exports a type.
 2. It exports a set of operations. This set is
called interface.
 3. Operations of the interface are the only
access mechanism to the type's data
structure.
 4. Axioms and preconditions define the
application domain of the type.
49
Example: ADT List
 Type
List.
 The interface to instances of type List is
defined by the interface definition file.
 Operations: insert, get, append,
delete,search,…
50
List
 The
application domain is defined by the
semantics meaning of the provided
operations. Axioms and preconditions
include statements such as
 ``An
empty list is a list.''
 ``Let l=(d1, d2, d3, ..., dN) be a list. Then
l.append(dM) results in l=(d1, d2, d3, ..., dN,
dM).''
 ``The first element of a list can only be deleted
if the list is not empty.''
51
Encapsulation(1)
 Combine
the data and the operations
 Enclosing of both variables and functions
 Keep details of the data and operations from
the users of the ADT
 Once you have created an ADT for complex
numbers, say Complex, you can use it in the
same way like well-known data types such as
integers.
52
Encapsulation(2)
 Allows
Modularity
 Controlled access to data
 Separates implementation from
interface
 It extends the built-in types
53
Object-Oriented Programming
Object is derived from abstract data type
 Object-oriented programming has a web of
interacting objects, each house-keeping its
own state.
 Objects of a program interact by sending
messages to each other.

54
Object1
Data1+Procedures1
Object2
Data
Data
Data12
2 + Procedures
Object3
Data3 + Procedures3
Object4
Data4 + Procedures4
55
Object-Oriented Programming
 In
object-oriented programming ,
instead of calling a procedure which we
must provide with the correct handle,
we would directly send a message to
the object in questions.
 Roughly speaking, each object
implements its own module.
56
Object-Oriented Programming
Each
object is responsible to
initialize and destroy itself correctly.
Consequently, there is no longer
the need to explicitly call a creation
or termination procedure.
57
Kay’s Description of OOP






58
Everything is an object
Objects perform computation by making requests of
each other through the passing of messages
Every object has it's own memory, which consists of
other objects.
Every object is an instance of a class. A class
groups similar objects.
The class is the repository for behavior associated
with an object
Classes are organized into singly-rooted tree
structure, called an inheritance hierarchy.
ADT and Object-Orientation
 ADTs
allows the creation of instances
with well-defined properties and behavior.
 In object-orientation, ADTs are referred
to as classes.
 Therefore, a class defines properties of
objects which are the instances in an
object-oriented environment.
59
ADT and Object-Orientation(2)
 ADTs
define functionality by putting main
emphasis on the involved data, their
structure, operations as well as axioms and
preconditions.
 Object-oriented programming is
``programming with ADTs'': combining
functionality of different ADTs to solve a
problem.
 Therefore instances (objects) of ADTs
(classes) are dynamically created, destroyed
and used.
60
ADT and Object-Orientation(3)
•ADTs still lack self-reference and
conceptual locality of objects.
•Data types and operations are almost
objects, but need to put them together
and give the result a name which can be
self-referenced.
61
A Formula
Object-Orientation
Object
=
(Abstraction) +
Class (ADT & Classification) +
Inheritance (Reusing) +
Dynamic Binding
(Polymorphism, Flexibility)
62
Inheritance(Hierarchy)
 Expresses
commonality among objects
 Allows code reusability
 Highlights Generalization/Specialization
relationships
 We will learn more in the following
lectures.
63
Polymorphism
The
ability of objects to
respond differently to the same
message or function call.
We will discuss more in the
following lectures.
64
Object-Orientation Evolution
 Modules
 Information
hiding
 Data encapsulation
 Abstract data types
 Classes and Objects
65
Simply Remember
 Encapsulation(Data
& Operations)--- A
technique for Information Hiding-----the
users of the objects could not see the
details of the data and operations of
the objects.
 Data Abstraction ---- the procedure to
find a class from objects.
 Abstract Data Type---- Class.
66
Object-Oriented Languages
 An
object-based programming language is one
which easily supports object-orientation.
 Smalltalk:1972-1980, Alan Kay
 C++:1986, Bjarne Stroustrup
 Java:1992 (Smalltalk + C++), James Gosling
 C#:

Developed at Microsoft by Anders Hejlsberg et al, 2000

Event driven, object oriented, visual programming
language (C++ and Java)
 Others:
 Effile,
67
Objective-C, Ada, ...
Programming in the Small and
Programming in the Large

Programming in the Small:
 One
programmer, understands everything from
top to bottom.
 Major problem is the development of algorithms.

Programming in the Large:
 System
is developed by large team of
programmers
 Major problems are management of details and
communication between programmers and
between their respective software subsystems.
68
Objects and Large Software
Systems(1)

Programming in the Small:
 One
programmer, understands everything from
top to bottom.
 Major problem is the development of algorithms.

Programming in the Large:
 System
is developed by large team of
programmers
 Major problems are management of details and
communication between programmers and
between their respective software subsystems.
69
Objects and Large Software
Systems(2)
 Object
view
 Makes
systems more intuitively understandable
 Unifies design and programming method
 Initial program thoughts are informal objects-andinteractions descriptions, even when using a nonOO language.
 Divides code into logical chunks individuals of a
team can be experts in, and outsiders can
understand via interfaces
 Allows "off the shelf" code libraries to be reused
 Supports code evolution: internals can always be rewritten as long as interface stays the same
70
Objects and Large Software
Systems(3)
 So, in large software system, we need
more CONCEPTS and STRUCTURES
of object-orientation than
PROGRAMMING SKILLS
 Those are OOA(Object-Oriented
Analysis) and OOD(Object-Oriented
Design), that will be discussed more
deeply in Software engineering or
Software designing methodology.
71
Summary
 Methodology
(Philosophy)
 Programming Techniques
 Object-Oriented Languages
 Object and Large Systems
72
The End
 The
73
End of Lecture 1
Download
Study collections