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 9323
Unit delivery and assessment
weeks 1 - 6
–
weeks 7 -12
–
2hr lectures, 1hr labs
1hr lectures, 2hr labs
100% coursework assessment
–
Two Assignments each contributing 50%
Topics
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
Operator overloading
Additional class features
–
–
Friend functions
Static members
Inheritance
Polymorphism
Abstract classes, Virtual functions
Templates, Standard Template Libray & More UML
(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/ag1
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 Studio C++ compiler
Object Oriented Design (OOD)
–
UML (Unified Modelling Language)
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.