object oriented programming

17
Object Oriented Programming Lect. Dr. Daniel POP Universitatea de Vest din Timişoara Facultatea de Matematică şi Informatică

Upload: goldy

Post on 05-Jan-2016

15 views

Category:

Documents


0 download

DESCRIPTION

Universitatea de Vest din Timişoara Facultatea de Matematică şi Informatică. Object Oriented Programming. Lect. Dr. Daniel POP. Course #2 Agenda. Abstraction Abstraction definition. An example E ncapsulation: data and function members - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Object Oriented Programming

Object Oriented Programming

Lect. Dr. Daniel POP

Universitatea de Vest din Timişoara Facultatea de Matematică şi Informatică

Page 2: Object Oriented Programming

2Programming II Object Oriented Programming

Course #2 Agenda

Abstraction Abstraction definition. An example Encapsulation: data and function members

• Basic object-oriented concepts: • Class• Object• Message

Page 3: Object Oriented Programming

3Programming II Object Oriented Programming

AbstractionAbstraction: (real-life/human) Problem (computer/machine) Model Model– Data– Operations

DEFINITION [Abstraction] Abstraction means structuring a real-life problem into well-defined entities by defining their data and operations.

Remark: It’s a general process with no direct link with a programming language.

How to represent an abstraction: – using mechanism provided by a programming language (e.g. class in C++/Java)– using graphical representations offered by a modeling language (e.g. rectangle in UML)– using textual/non-standard description

Page 4: Object Oriented Programming

4Programming II Object Oriented Programming

Example

Modeling employees of an institutionCandidate properties of an employee: name, address, date of birth, hair color, CNP etc.Employee (Textual representation)– Data

• Name• Address• Date of Birth• CNP

– Operations• CRUD: Create/Read/Update/Delete• Assign to a particular department• Access to data (name, address etc.)

Page 5: Object Oriented Programming

5Programming II Object Oriented Programming

Example: Employee (UML representation)

Employee- name: String- address: String- CNP: String- DoB: Date

+ create(): Employee+ update(): Employee+ delete(Employee)+ assign(Department)

Page 6: Object Oriented Programming

6Programming II Object Oriented Programming

Example: Employee (C++ representation)

Employee.h

class Employee { String name; String address; String CNP; Date DoB; Department department;

public: Employee create(); Employee update(); void delete(); void assign(Department& d);};

Employee.cpp

Employee Employee::create() { name = “”; address = “”; CNP=“0000000000000”; DoB.init(“1/1/1900”);}

Employee Employee::update() { // statements}

void Employee::delete() { department.remove(this);}

void Employee::assign( Department& d) { d.add(this); department = d;}

Page 7: Object Oriented Programming

7Programming II Object Oriented Programming

Data type

DEFINITION [Data type] Data type = – possible values of the type– The way values are stored (internal representation in

memory)– operations applicable

Examples: predefined (built-in): int, float, double, char, void etc, or user-defined: Employee, complex etc.

Page 8: Object Oriented Programming

8Programming II Object Oriented Programming

Encapsulation

DEFINITION [Encapsulation] The principle of hiding the data structures and to provide a well-defined, public interface to access them.

Example: representation of complex numbers

user.c

void f(complex c) { double d1 = c.re, d2 = c.im;}

complex.h

struct complex { double re, im;};

complex.h

struct complex { double v[2]; // v[0] – real part,

// v[1] – imaginary part};

user.c

void f(complex c) { // Error double d1 = c.re, d2 = c.im;}

Page 9: Object Oriented Programming

9Programming II Object Oriented Programming

Basic object-oriented concepts: Class

DEFINITION [Class] A class is the implementation of a data type (concrete, abstract or generic). It defines attributes and functions(*) which implement the data structure and operations of the data type, respectively.Example:

complex.cpp

class complex { double v[2]; // v[0] – real part,

// v[1] – imaginary partpublic: double real() { return v[0]; } double imag() { return v[1]; }};

(*) Remark: Functions are also called methods. In [Stroustrup, 1997] a clear distinction is made between functions and methods. A method is a virtual function. This terminology will be followed throughout this course as well.

Remark: Classes define properties and behaviour of sets of objects.

Page 10: Object Oriented Programming

10Programming II Object Oriented Programming

Basic object-oriented concepts: ObjectDEFINITION [Object] An object is an instance of a class. It can be uniquely identified by its name, it defines a state which is represented by the values of its attributes at a particular time and it exposes a behaviour defined by the set of functions (methods) that can be applied to it.

An OO Program = collection of objects that interact one with another.

Example:void f() { complex a = 2.3; complex b = 1/a; complex c = a+b*complex(1,2.3); c = -(a/b)+2; c.print();}

How are objects internally represented in C++?

Object3 Object1

Object4

Object2

Page 11: Object Oriented Programming

11Programming II Object Oriented Programming

Basic object-oriented concepts: MessageQ: How does objects interact? This is the question ;)

A: By sending messages from one object to another asking the recipient to apply a method on itself.

DEFINITION [Message] A message is a request to an object to invoke one of its functions. A message contains:

– the name of the function;– the arguments of the function.

Sending a message is achieved in C++ by: ‘.’ or ‘->’ or any other overloadable operator

void f() { complex c = a+b*complex(1,2.3); // or, equivalent to c.set(a.add(b.multiply(complex(1,2.3))));}

How objects interact in C++?

void container::draw(RenderingDevice rd) { for(int i=0; i < count; i++) shapes[i].draw(rd);}

Page 12: Object Oriented Programming

12Programming II Object Oriented Programming

Exercise

Choose one of your daily tasks (not too complex) and describe it in procedural and object-oriented forms. Try to design it as a world of interacting objects.

Page 13: Object Oriented Programming

13Programming II Object Oriented Programming

Further Reading

[Bruce, 2002] Kim B. Bruce – Foundations of Object-Oriented Languages, MIT Press, 2002 [Section 1.1, Page 4-7]

[Mueller, 1996] Peter Müller – Introduction to Object-Oriented Programming Using C++, Globewide Network Academy (GNA) www.gnacademy.org, 1996 [Chapter 3-4]

[Stroustrup, 1999] Bjarne Stroustrup - An Overview of the C++ Programming Language in “The Handbook of Object Technology” (Editor: Saba Zamir). CRC Press LLC, Boca Raton. 1999. ISBN 0-8493-3135-8 [Section 4.2, Page 10-11]

[Goguen, 1978] J.A. Goguen, J.W. Thatcher, and E.G. Wagner - An initial algebra approach to the specification, correctness, and implementation of abstract data types. In R.T. Yeh, editor, Current Trends in Programming Methodology, volume 4. Prentice-Hall, 1978

[Guttag, 1977] J.V. Guttag - Abstract data types and the development of data structures. Communications of ACM, 20(6):396–404, 1977

[Pop, 2003] Daniel Pop – C++ Programming Language Lecture Notes

[Stroustrup, 1997] Bjarne Stroustrup – The C++ Programming Language 3rd Edition, Addison Wesley, 1997 [Section 4.9.4]

Page 14: Object Oriented Programming

14Programming II Object Oriented Programming

Backup Slides

Page 15: Object Oriented Programming

15Programming II Object Oriented Programming

Abstract Data Types

Introduced by Goguen 1978 and Guttag 1977 [Goguen 1978, Guttag 1977] DEFINITION [Abstract Data Type] An ADT is characterized by the following properties:– It exports a type;– It exports a set of operations (the interface) that are the one and only

access mechanism to the type’s data structure;– Axioms and preconditions define the application domain of the type.

Multiple instances of an ADTHow to represent an ADT:

– using mechanism provided by a programming language (e.g. class in C++/Java)– using graphical representations offered by a modeling language (e.g. rectangle in UML)– using textual/non-standard description (e.g. see Employee on previous slide)

Page 16: Object Oriented Programming

16Programming II Object Oriented Programming

Generic Abstract Data Types

List of cars, facts, events, students etc.Additional parameter that specifies the type of objects stored in a list => generic parameter specified when a new variable is created. Ex: List<Student> anYear;List is a generic abstract data type

template <class T> class List {T *v ;int max_size, top;

public:List (int s) { top = 0 ; v = new T[max_size = s]; } // constructor˜List() { delete [] v ; } // destructorvoid insert (T c ) { v[top++] = c ; }T get(int index) { return v[index]; }

};

Page 17: Object Oriented Programming

17Programming II Object Oriented Programming

Abstract data types and object-oriented programming

Data abstraction Object-oriented programming

Abstract data type (abstract) classGeneric abstract data type Template classInstance of an (G)ADT ObjectOperations Member function (of a class)Attributes Data members

Object oriented programming is one possible “implementation” of ADT