Abstraction file

Post on 15-Apr-2017

25 views 0 download

transcript

Recap: Object Oriented Approach

Four major elements: Abstraction Encapsulation Modularity Hierarchy

Three minor elements: Typing Concurrency Persistence

Abstraction

Car

Jeep

Motor Bike

LemonTruck

Apple

Banana

Mango

Chiku

Maruti

Wagon-R

Bajaj

Scooter

Abstraction

Dahl, Dijkstra, and Hoare suggest that “abstraction arises from a recognition of similarities between certain objects, situations, or processes in the real world, and the decision to concentrate upon these similarities and to ignore for the time being the differences” [42].

Abstraction

An abstraction denotes the essential characteristics of an object that distinguish it from all other kinds of objects and thus provide crisply defined conceptual boundaries, relative to the perspective of the viewer.

Abstraction: Perspective of User

ParentChild Name

ClassRoll No

Mobile No

EmployeeNameId No

Mobile NoTax Payer

NamePan No

Annual Return

Bank Customer

NamePan NoAcct No

Acct Type

Loyalty Program Member

NameCard NoPoints

Abstraction

An abstraction focuses on the outside view of an object and so serves to separate an object’s essential behavior from its implementation.

Deciding on the right set of abstractions for a given domain is the central problem in object-oriented design.

Abstraction

Abstraction or separation of behavior / implementation can be achieved by applying:

Principle of least commitment: the interface of an object provides its essential behavior, and nothing more

Principle of least astonishment: an abstraction captures the entire behavior of some object, no more and no less, and offers no surprises or side effects that go beyond the scope of the abstraction

Abstract Data Type (ADT)

An ADT is a mathematical model of a data structure that specifies the type of data stored, the operations supported on them and the type of parameters of the operations.

Specifies what each operation does, but not how it does it

Encapsulation

Encapsulation hides the details of the implementation of an object Typically, the structure of an object is hidden, as

well as the implementation of its methods.

Encapsulation is the process of compartmentalizing the elements of an abstraction that constitute its structure and behavior;

Encapsulation serves to separate the contractual interface of an abstraction and its implementation.

Encapsulation

Encapsulation

Encapsulation is most often achieved through information hiding (not just data hiding), which is the process of hiding all the secrets of an object that do not contribute to its essential characteristics

Data/Information Hiding

Access House

X ModifyX () Modify X

Private data – hidden from others

Function to safeguard the private data

Data Hiding

"... the purpose of hiding is to make inaccessible certain details that should not affect other parts of a system.“ [Ross et al, 1975]

Data Hiding

Data must be hidden/ privateRead access through read() functions Write access through write() functions For each data,

Allow both read and write Allow read only Allow write only No access

Encapsulation / Data Hiding

void modifyX (int newVal) {

if (newVal > 100) or (newVal < 0) { return error;}else X = newVal

}

void readX() { return X;

}

Abstraction & Encapsulation

Complementary concepts: The abstraction of an object should precede the decisions about its

implementation.

Once an implementation is selected, it should be treated as a secret of the abstraction and hidden from most clients i.e. encapsulated

“For abstraction to work, implementations must be encapsulated

Abstraction: focuses on the observable behavior of an object

Encapsulation: focuses on the implementation that gives rise to this behavior

Anatomy of a Class

PRIVATE PUBLIC

Data

Private Functions

Read/ Write Functions

Constructors/ Destructors

ADT Functions Pop(), Insert ()

Public Interface

Class • Realization of an ADT

• State /fields /data members

• Behavior /methods /member functions

• Public Interface: signatures (names, return types, argument types) of a class’s public member functions, only part of the class that can be accessed by a user of the class

Class

• It defines the data being stored and the operations supported by the objects that are instances of the class

• Every class must have two parts: • an interface – what? – Abstraction • an implementation – how? – Encapsulation

Abstraction Encapsulation

External Interface The interface of a

class captures only its outside view, encompassing abstraction of the behavior common to all instances of the class.

Internal Implementation The implementation of

a class comprises the representation of the abstraction as well as the mechanisms that achieve the desired behavior.

Class, Abstraction & Encapsulation

Abstraction Encapsulation

Exposes Generic / Generalized Features The interface of a

class is the one place where we assert all of the assumptions that a client may make about any instances of the class

Hides implementation details The implementation

encapsulates details about which no client may make assumptions.

Class, Abstraction & Encapsulation

In C++ a Class embodies both abstraction and encapsulation

Please read: http://www.tonymarston.co.uk/php-mysql/abstraction.txt

Point Product

class Point{

public:

Point (double xval, double yval);void move(double dx, double dy);double get_x() const;double get_y() const;

private:double x;double y;

};

class Product{

public:

Product();void read();bool is_better_than(Product b) const;void print() const;

private:string name;double price;int score;

};

Examples

Objects

Object Instantiation of a class

Initialization of Objects Constructors Called automatically every time an object is created, ensures proper

initialization Overcome the problem of improper initialization in procedural languages

Resource De-allocation Destructors Ensures de-allocation of resources before the object dies, or goes out of

scope Overcome memory leaks etc. in procedural languages

Objects

Life-cycle of an Object Born Healthy

Properly initialized by use of constructors

Lives Safely Using read/write functions, ensure data integrity

Dies Cleanly Using destructors

References

[Lafore] Chapter 1[Booch et al] Chapters 1 & 2[Deital & Deital] Chapter 3[Horstmann & Budd] Chapter 5http://www.tonymarston.co.uk/php-mysql/

abstraction.txt