2. What are we doing today?
Introduction of:
the lecturer
Objects
Basic Terminology
C++
the module
2
3. What is Object Oriented
Programming?
Identifying objects and
assigning responsibilities to
these objects.
Objects communicate to
An object is like a
other objects by sending
black box.
messages.
The internal
Messages are received by
details are
the methods of an object
hidden.
3
4. 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, …
4
5. 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.
5
6. 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.
6
7. Example: The Person class
#include<string>
#include<iostream>
class Person{
char name[20];
private
int yearOfBirth; data
public:
void displayDetails() {
cout << name << " born in "
<< yearOfBirth << endl; public
} processes
//...
};
8. 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.
= +
8
9. 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.
9
10. Basic Terminology:
Inheritance
Inheritance means that one class inherits
the characteristics of another class.
This is also called a “is a” relationship:
A car is a vehicle
A dog is an animal
A teacher is a person
10
11. 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.
E.g. the message displayDetails() of the
Person class should give different
results when send to a Student object
(e.g. the enrolment number).
11
12. Basic Terminology:
Aggregation
Aggregation describes a “has a”
relationship. One object is a part of
another object. A car has wheels.
We distinguish between composite
aggregation (the composite “owns” the
part) and shared aggregation (the part is
shared by more then one composite).
12
13. 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).
13
14. 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.
14
15. Historical Notes
C++ owes most to C.
Other ancestors are Simula67
and Algol68. C++ 1987
First versions of C++ in 1980 under the
name “C with classes”. Since 1983 the
name C++ is used.
1990: ANSI/ISO 9899 defines a standard
for C
1998: ISO/IEC 14882 specifies the
15
standard for C++
16. C++ and C
C is a subset of C++.
Advantages: Existing C libraries can be
used, efficient code can be generated.
But: C++ has the same caveats and
problems as C (e.g. pointer arithmetic,…).
C++ can be used both as a low level and
as a high level language.
n th e
e fo cus o ects.
W l asp
leve 16
hi gh
17. C++ and Java
Java is a full object oriented language, all
code has to go into classes.
C++ - in contrast - is a hybrid language,
capable both of functional and object
oriented programming.
So, C++ is more powerful but also
more difficult to handle than Java.
17
18. Module Outline
Introduction Inheritance
The non object Aggregation
oriented basics Polymorphism
Classes Multifile Development
Design Approaches
Testing
18
19. Assessment Details
50% in course and 50% exam.
For more details for the in course
assignment see separate handout.
19
20. Books
Teach Yourself C++ in 10 minutes,
J. Liberty, SAMS 1999.
C++ - How to program, Deitel & Deitel,
Prentice Hall, 2001.
Object Oriented Programming with C++,
David Parson, Letts Educational, London
1997.
20
21. Websites
A C++ online tutorial:
http://www.cplusplus.com/doc/tutorial/
The C++ FAQ:
http://www.parashift.com/c++-faq-lite
The homepage of Bjarne Stroustrup, the
inventor of C++:
http://www.research.att.com/~bs
ny m ore!
ma n y, ma
A nd
21