What is Object Oriented
Programming?
An object is like a
black box.
The internal details
are hidden.
•
Identifying objects and
assigning responsibilities to
these objects.
•
Objects communicate to other
objects by sending messages.
•
Messages are received by the
methods of an object
1
What is an object?
•
Tangible Things as a car, printer,
•
Roles as employee, boss,
•
Incidents as flight, overflow,
•
Interactions as contract, sale,
•
Specifications as colour, shape, …
2
So, what are objects?
•
an object represents an individual,
identifiable item, unit, or entity, either real or
abstract, with a well-defined role in the
problem domain.
Or
•
An "object" is anything to which a concept
applies.
Etc.
3
Why do we care about objects?
•
Modularity - large software projects can
be split up in smaller pieces.
•
Reuseability - Programs can be assembled
from pre-written software components.
•
Extensibility - New software components
can be written or developed from existing
ones.
4
Example: The Person class
#include<string>
#include<iostream>
class Person{
char name[20];
int yearOfBirth;
public:
void displayDetails() {
cout << name << " born in "
<< yearOfBirth << endl;
}
//
};
private
data
public
processes
The two parts of an object
Object = Data + Methods
or to say the same differently:
An object has the responsibility to know and the
responsibility to do.
6
=
+
Basic Terminology
•
Abstraction is the representation of the
essential features of an object. These are
‘encapsulated’ into an abstract data type.
•
Encapsulation is the practice of including in an
object everything it needs hidden from other
objects. The internal state is usually not
accessible by other objects.
7
Basic Terminology:
Inheritance
•
Inheritance means that one class inherits the
characteristics of another class.
This is also called a “is a” relationship:
8
A car
is a
vehicle
A teacher
is a
person
A dog
is an
animal
Basic Terminology:
Polymorphism
•
Polymorphism means “having many forms”. It
allows different objects to respond to the
same message in different ways, the response
specific to the type of the object.
9
E.g. the message
displayDetails()
of the
Person class should give different results
when send to a Student object (e.g. the
enrolment number).
Basic Terminology:
Aggregation
•
Aggregation describes a “has a” relationship.
One object is a part of another object.
•
We distinguish between composite
aggregation (the composite “owns” the part)
and shared aggregation (the part is shared by
more then one composite).
10
A car has wheels.
Basic Terminology:
Behaviour and Messages
•
The most important aspect of an object is its
behaviour (the things it can do). A behaviour is
initiated by sending a message to the object
(usually by calling a method).
11
Abstract classes
•
ListClass is an abstract class, i.e., a class in which some
methods are left undefined (such as init and append)
•
Abstract classes are not intended to be instantiated, but
inherited from
•
Inheritance “fills in the blanks” by adding the missing
methods
•
The result is a concrete class, i.e., a class that can be
instantiated since all its methods are defined
•
NilClass and ConsClass are concrete classes
•
This technique is an example of higher-order programming
(namely genericity: passing a procedure value, i.e., a method)
12
The two steps of Object Oriented
Programming
•
Making Classes: Creating, extending or
reusing abstract data types.
•
Making Objects interact: Creating objects
from abstract data types and defining their
relationships.
13
Classes (syntax simplified)
A class is also a value that can be in an expression position
class $
attr
〈AttrName1〉
:
〈AttrNamen〉
meth 〈Pattern〉 〈Statement〉 end
:
meth 〈Pattern〉 〈Statement〉 end
end
14
Controlling visibility
•
Visibility is the control given to the user to limit
access to members of a class (attributes and
methods)
•
Each member (attribute or method) is defined with a
scope (part of program text that the member can be
accessed by name)
•
Programming languages use words like public,
private, and protected to define visibility
•
Unfortunately, different languages use these
keywords to define different scopes
–
Source of enormous confusion! Be careful!
15
Public and private scopes
•
In Smalltalk and Oz, a private member is one which is
only visible in the object instance
–
The object instance can see all the private members in its
class and its super classes
•
In C++ and Java, a private member is visible among
all instances of a given class, but not to subclasses
•
A public member is visible anywhere in the program
•
By default, attributes are private and methods are
public
16
Function and data member
17
continue
18
Default Arguments
•
A default argument is a value given in the
function declaration that the compiler
automatically inserts if the caller does not
provide a value for that argument in the
function call.
•
Syntax:
return_type
f(…,
type
x =
default_value
,…);
Default Arguments
(Examples)
•
The default value of the 2
nd
argument is 2.
•
This means that if the programmer calls
pow(x), the compiler will replace that call
with pow(x,2), returning x
2
double pow(double x, int n=2)
// computes and returns x
n
Default Arguments
(Rules)
•
Once an argument has a default value, all
the arguments after it must have default
values.
•
Once an argument is defaulted in a function
call, all the remaining arguments must be
defaulted.
int f(int x, int y=0, int n)
// illegal
int f(int x, int y=0, int n=1)
// legal
Static Members
22
Continue
23
Function overloading
•
Function redefined with different set of arguments.
EX:
•
add(float, float)
•
Add(int, int)
•
Add (int, int, int)
•
Function overloading is useful when similar function is
required to be called with either variable number of
arguments or arguments of different type or both.
Function Overloading
•
Two or more functions can have the same
name but different parameters
•
Example:
int max(int a, int b)
{
if (a>= b)
return a;
else
return b;
}
float max(float a, float b)
{
if (a>= b)
return a;
else
return b;
}