Object Oriented Design and Programming

Download Report

Transcript Object Oriented Design and Programming

Object Oriented Design and
Programming
Alan Goude
Email: [email protected]
Room: Sheaf 4320
Unit delivery and assessment


Semester 1 – 6 x 2hr lectures, 12 x 2hr labs
and one assignment given.
Semester 2 – 6 x 2hr lectures, 12 x 2hr labs
and one assignment.
Topics - Semester 1




The object oriented approach OOA,OOD and OOP
C++ Stream Input/Output
Reference variables
Classes
–
–
–
–
–
–



Terminology
Class members – data and functions(methods)
Class access – public, private & protected
Separation of interface from implementation
Constructor and destructors
function overloading
Dynamic memory allocation
Object aggregation and composition
UML notation for classes and class aggregation.
Topics - Semester 2


Operator overloading
Additional class features
–
–





Friend functions
Static members
Inheritance
Polymorphism
Abstract classes, Virtual functions
More UML - Class diagrams
Templates (time permitting)
Books

Thinking in C++ by Bruce Eckel
–
–
–
Vol.1 (basics) and Vol.2 (advance features)
Assumes knowledge of ‘C’
Free Electronic versions available from

http://www.mindview.net/Books
C++ : How to program by Deitel & Deitel
–
–
–
See info at http://www.deitel.com/
Fourth Edition available Oct 2002
Includes a version of Microsoft Visual C++
Other books and information sources





Object-Oriented Analysis and Design with
Applications by Grady Booch
Unified Modelling Language User Guide by Grady
Booch, Ivar Jacobson, James Rumbaugh
UML Distilled: A Brief Guide to the Standard Object
Modeling Language (2nd Edition) by Martin Fowler,
Kendall Scott
My Web page http://www.shu.ac.uk/schools/eng/teaching/ag
Try a www.google.com search
Object Oriented Design and
Programming

OOD – Major proponents and developers
–
–

Grady Booch, Ivar Jacobson, and James
Rumbaugh
Unified Modelling Language (UML)
OOP – Several OOP languages
–
–
Smalltalk, Eiffel. Pure OOPL
C++, Java. Said to be object based OOPL
Software Tools

Object Oriented Programming (OOP)
–
–

C++
Using Microsoft Visual C++ compiler
Object Oriented Design (OOD)
–
–
UML (Unified Modelling Language)
Rational Rose UML visual modelling tool
Object Model

Key ideas





Abstraction
Encapsulation
Modularity
Hierarchy
Minor elements of the object model
–
–
–
Typing (language dependent – data typing)
Concurrency (OS dependent)
Persistence
Abstraction



Helps to deal with
complexity by focusing
on certain features and
suppressing others.
Focus on interface
(outside view)
Separate behaviour
from implementation
Hierarchy




A way of ordering
abstractions
Object hierarchical
abstractions (“HAS A” or
“PART OF” relationship)
Interfaces and
behaviours at each level
Higher levels are more
abstract
Encapsulation



Also known as
information hiding
Hides the details of the
implementation
Complementary to
abstraction
Abstraction, Encapsulation and
Software Design



Interface should be simple,
providing the required
behaviour.
User is presented with high
level abstract view. The
detail of the implementation
is hidden from the user.
The designer may change
the implementation keeping
the interface the same.
Modularity




A common “Divide and
conquer” approach
Partitions a problem into
sub-problems reducing
complexity
Modularity packages
abstractions into discrete
units
In C++ classes are the basic
modules providing
encapsulation and
abstraction
Re-usability - Inheritance




Class Hierarchies
Derived class inherits
properties and behaviour
of a base class
Allows code re-use.
Derived classes can
have
–
–
additional properties
and behaviour,
or over-ride inherited
behaviour.