313x Filetype PDF File size 0.06 MB Source: personal.ee.surrey.ac.uk
Objectives
Objectives
Object Oriented Design and C++ – Understand object-oriented program design
techniques
– Implementation of OOD in C++
Richard Bowden Prerequisites
CVSSP
http://www.ee.surrey.ac.uk/Personal/R.Bowden – C Programming
r.bowden@surrey.ac.uk – Experience of UNIX environment
Course Structure Lectures
– Introduction to Object-Oriented Programming – Tues 11-1 22AA04
– Revision of C Lab Sessions
– OOD in C++
Assessment – Friday 2-4 Starting week 2
– C++ Assignment (30%) 32BB03
Design, Implementation and Documentation 34BB04
Set in week 5 34aBB04
Design due week 8 - 4pm Mon 24/11/2014 34BB03
Final submission week 11 - 4pm Mon 15/12/2014 Webpage
Tutorials 5-6pm weeks 7-10
– Examination (70%) http://www.ee.surrey.ac.uk/Personal/R.Bowden/cpp
Section A - 20 Compulsory Multiple Choice Questions All notes, supplementary material and details of laboratory
Section B - Choose 2 out of 3 questions exercises are on the web page
Books
Introduction to OOD
Object Oriented Design (OOD)
– Does not rely on any particular programming
language
!"
Object Orientated Programming
#$
%& #
$
#
# – Uses OOD to develop a program
'
())***++#+ + )
$),+*
)
$
(
())***+$$+) OOD OOP
$
1
OOD -Object Oriented Design Example of OOD: Shapes
(
Aims to produce a direct representation of programmers ideas Base Object
$
-
!
*
.
$
$
Why OOD ?
– Better management of large software projects
– Development of software by multiple people $ (
– Reuse of code (efficient development and fewer bugs) Derived Objects
$ ( 0 (
Feature of OOD
/
1
*
– Objects containing both data and operations
– Object is accessed via a ‘simple’ interface * *
– Hierarchical structure which inherit common properties
Thinking about programming Thinking about programming
3 stages Key to writing good programs:
1. Analysis: Clear understanding of the problem – Design objects (classes) that clearly represent a single
2. Design: Identify key concepts involved in solution concept
3. Programming: Express the solution in a program Focus on questions:
– How are objects created?
Problem and concepts are often not clearly – Can objects be copied/destroyed? 2
$
understood before programming – What operations are applied to an object? !
– Results in badly structured code which is difficult to – How does the object interface to other objects?
modify, maintain and use.
– Critical for large programs with multiple users
Simple Example of OOD Simple Example of OOD
Design:
Problem: – Storage of exam marks for each student
Option 1: Allocate a ‘big’ array that is always bigger than the number
– Generation of exam marks for each student on of students
the OOD course (exam mark + project mark) – make sure I don’t access outside the array
Analysis: Option 2: Dynamically allocate an array to size
– remember to delete
– How many students ? Unknown – make sure I don’t access outside the array
Option 3: Design an ‘object’ which is a dynamic array & manages
– Input ? User supplies marks + n’ of students creation/deletion/access
– Output? Table of final marks – Simple user interface for array
– safe memory management
Program:
– Use simple dynamic array object + input and output
2
Programming Paradigms Procedural Programming
Procedural original programming paradigm
– separate data and operations focus on the ‘best algorithm’ to perform an
Modular operation
– Organise data into modules
Data Abstraction program based on performing a set of operations
– Modules with associated operations (functions) on the data
Object Oriented pass data to function and return result
– encapsulation of data and operations typical of programs written in C/Fortran/Pascal
– hierarchical
Generic
– Common operations between different data
Procedural Programming Modular Programming
Example: data hiding
double square(double x) focus on organising data
{
return x*x; group procedures with related data ‘module’
} user code is insulated from data
void some_function() representation
{
… necessary for large programs
double sqr=square(2.0); typical of programs in Modula2
…
}
Modular Programming Data Abstraction
Example: modules not sufficient to express complex
stack { systems
data: set of data items on stack
} focus on user-defined types
operations: stack_push(stack,double x)
double stack_pop(stack) use modules to define types with associated
void some_function() operations
{
stack_push(10); provide a user interface for data
…
double x=stack_pop(); user interface should be independent of
… internal data representation
}
3
Data Abstraction Object Oriented Programming
Example: data abstraction + object hierarchy
stack {
data: set of data items on stack
operations: construct(int size) focus on common relationships between sets of
destruct() objects
push(double x)
double pop()
} structured programs which reuse code for common
stack globalstack.construct(10); operations between a set of objects
void some_function() object oriented languages support object hierarchies
{
stack localstack.construct(5); supported by C++/Java => classes/inheritance
…
localstack.push(3);
…
double x=localstack.pop();
globalstack.push(x);
localstack.destruct();
}
Example Object Oriented Programming
class baseShapeC{
Object Oriented Programming private:
point centre;
colour col;
public:
baseShapeC(point p, colour c);// Constructor centre & colour
Design ~baseShapeC();
point getlocation();
1 Identify objects with data and operations colour getColour();
void translate(vector t);
2 Identify commonality between data/operations };
for sets of objects class triangleC : public baseShapeC{
private:
point vertex1,vertex2,vertex3;
3 Define base objects with common public:
triangleC(point v1, point v2, point v3, point p, colour c);
data/operations void rotate(double angle); // Rotate by angle
void draw();
4 Define derived objects for specific };
class circleC: public baseShapeC{
data/operations private:
double radius;
public:
circleC(double r, point p, colour c);
void draw();
};
Example of OOD: Shapes Generic Programming
(
Base Object
Objects which work for multiple types of data
$
focus on expressing algorithm independent of data
$
$
type
used for containers, i.e. stack of
$ ( char/int/double require common access
Derived Objects functions.
$ ( 0 (
/
1
* Supported by C++ as ‘templates’
* *
4
no reviews yet
Please Login to review.