CS3340:  Intro OOP and Design

Abstraction

"Extracting the essential details about an item or group of items, while ignoring the unessential details." Edward Berard

 

"The process of identifying common patterns that have systematic variations; an abstraction represents the common pattern and provides a means for specifying which variation to use." Richard Gabriel

 

model defines an abstract view to the problem.

This implies that the model focusses only on problem related stuff and that you try to define properties of the problem.

These properties include the data which are affected and the operations which are identified by the problem.

Example: dministration of employees in an institution.

Description: The head of the administration comes to you and ask you to create a program which allows to administer the employees. Well, this is not very specific. For example, what employee information is needed by the administration? What tasks should be allowed?

 

Solution:

Employees are real persons who can be characterized with many properties; very few are: name, size, date of birth, shape, social number, room number, hair colour, hobbies.

Not all of these properties are necessary to solve the administration problem. Only some of them are problem specific. Consequently you create a model of an employee for the problem. This model only implies properties which are needed to fulfill the requirements of the administration, for instance name, date of birth and social number.

These properties are called the data of the (employee) model. Now you have described real persons with help of an abstract employee.

 

 

Abstraction and abstracting a design is used to help understand a complex system......to break it down into understandable/manageable layers.

 

Pattern: Priority queue

Essential Details: length items in queue operations to add/remove/find item

Variation: link list vs. array implementation stack, queue

 

Techniques/Concepts of Abstraction

Layers of Abstraction

Upstream and Downstream Abstraction

Abstraction applied as "Division into Parts"

Abstraction applied as "Division into Specialization"

Abstraction applied as "Multiple Views"

 

© Lynne Grewe