Abstraction and Information hiding - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

Abstraction and Information hiding

Description:

Think of an atlas, and the various different levels of maps ... A car is-a wheeled vehicle, which is-a means of transportation. A bicycle is-a wheeled vehicle ... – PowerPoint PPT presentation

Number of Views:64
Avg rating:3.0/5.0
Slides: 31
Provided by: stfrancisx
Category:

less

Transcript and Presenter's Notes

Title: Abstraction and Information hiding


1
Chapter 2
2
Abstraction and Information hiding
  • Abstraction
  • Abstraction is the purposeful suppression, or
    hiding, of some details of a process or artifact,
    in order to bring out more clearly other aspects,
    details, or structure.
  • Information Hiding
  • Information hiding is the purposeful omission of
    details in the development of an abstract
    representation. Information hiding is what allows
    abstraction to control complexity.

3
Abstraction in an atlas
  • Think of an atlas, and the various different
    levels of maps
  • A map of the world, contains mountain ranges,
    large political boundaries
  • A map of a continent, contains all political
    boundaries, large cities
  • A map of a country, contains more cities, major
    roads
  • A map of a large city, roads, major structures
  • A map of a portion of a city, buildings,
    occupants
  • Each level contains information appropriate to
    the level of abstraction.

4
Levels of Abstraction in OO Programs
  • At the highest level of abstraction we view a
    program as a community of interacting objects.
  • Important characteristics here are the lines of
    communication between the various agents.

5
Abstraction in OO Programs -- Packages and Name
spaces
  • The next level of abstraction is found in some
    (but not all) OO languages. A package, Unit or
    Name Space allows a programmer to surround a
    collection of objects (a small community in
    itself) with a layer, and control visibility from
    outside the module.

6
Abstraction in OO Languages -- Clients and
Servers
  • The next level of abstraction considers the
    relationship between two individual objects.
    Typically one is providing a service, and the
    other is using the service.

7
Abstraction in OO languages -- Description of
Services
  • We can next examine just the person providing a
    service, independent of the client. We define the
    nature of the services that are offered, but not
    how those services are realized.

8
Levels of Abstraction in OO -- Interfaces
  • Interfaces are one way to describe services at
    this level of abstraction.
  • interface Stack
  • public void push (Object val)
  • public Object top () throws EmptyStackException
  • public void pop () throws EmptyStackException

9
Levels of Abstraction -- An Implementation
  • Next we look at the services provided, but from
    the implementation side
  • public class LinkedList implements Stack ...
  • public void pop () throws EmptyStackException
    ...
  • ...
  • Concern here is with the high level approach to
    providing the designated service.

10
Levels of Abstraction -- A Method in Isolation
  • Finally, consider the implementation of each
    method in isolation.
  • public class LinkedList implements Stack ...
  • public void pop () throws EmptyStackException
  • if (isEmpty()) throw new EmptyStackException()
    removeFirst() // delete first element of list
  • ...
  • Every level is important, and often you move
    quickly back and forth between levels.

11
Right Level of Abstraction
  • A critical problem in early stages of development
    is to determine what details are appropriate at
    each level of abstraction, and (often more
    importantly) what details should be omitted.
  • One does not want to ignore or throw away
    important information
  • But one does not want to manage too much
    information, or have the amount of information
    hide critical details.

12
Forms of Abstraction
13
Is-a and Has-A abstraction
  • Division into parts --takes a complex system, and
    divides into components, which can then be
    considered in isolation.
  • A car has-a engine, and has-a transmission
  • A bicycle has-a wheel
  • A window has-a menu bar
  • Takes a complex system, and views it as an
    instance of a more general abstraction.
  • A car is-a wheeled vehicle, which is-a means of
    transportation
  • A bicycle is-a wheeled vehicle
  • A pack horse is-a means of transportation

14
Encapsulation and Interchangeability
  • An important aspect of division into parts is to
    clearly characterize the connection, or
    interface, between to components. Allows for
    considering multiple different implementations of
    the same interface.
  • For example, a car can have several different
    types of engine and one transmission.

15
Other
  • The Service ViewAnother way to think of an
    interface is as a way of describing the service
    that an object provides. The interface is a
    contract for the service--if the interface is
    upheld, then the service will be provided as
    described.
  • Composition - a form of has-a characterized by
    the following
  • Primitive forms
  • Rules for combining old values to create new
    values
  • The idea that new values can also be subject to
    further combination
  • Examples include regular expressions, type
    systems, windows, lots of other complex systems.

16
Patterns
  • Patterns are another attempt to document and
    reuse abstractions. Patterns are description of
    proven and useful relationships between objects
    which can help guide the solution of new
    problems.
  • Example pattern, Proxy
  • Will have many more patterns in a later chapter.

17
A Short History of Abstraction Mechanisms
  • Another way to better understand OOP --- put it
    in context with the history of abstraction in
    computer science.
  • Assembly languages
  • Procedures
  • Modules
  • ADT
  • The Service View
  • Objects
  • The future....

18
Assembly Languages
  • Assembly languages and linkers were perhaps the
    first tools used to abstract features of the bare
    machine.
  • Addresses could be represented symbolically, not
    as a number.
  • Symbolic names for operations.
  • Linking of names and locations performed
    automatically

19
Procedures and Functions
  • Libraries of procedures and functions (such as
    mathematical or input/output libraries) provided
    the first hints of information hiding.
  • They permit the programmer to think about
    operations in high level terms, concentrating on
    what is being done, not how it is being
    performed.
  • But they are not an entirely effective mechanism
    of information hiding.

20
Information Hiding -- The Problem of Stacks
  • int datastack100 int datatop 0
  • void init() // initialize the stack
  • datatop 0
  • void push(int val) // push a value on to the
    stack
  • if (datatop lt 100) datastack datatop val
  • int top() // get the top of the stack
  • if (datatop gt 0) return datastack datatop - 1
    return 0
  • int pop() // pop element from the stack
  • if (datatop gt 0) return datastack --datatop
    return 0
  • Where can you hide the implementation?

21
Modules
  • Modules basically provide collections of
    procedures and data with import and export
    statements
  • Solves the problem of encapsulation -- but what
    if your programming task requires two or more
    stacks?
  • Parnas's Principles Parnas described two
    principles for the proper use of modules
  • One must provide the intended user of a module
    with all the information needed to use the module
    correctly, and with nothing more.
  • One must provide the implementor of a module with
    all the information needed to complete the
    module, and nothing more.

22
Abstract Data Types
  • An Abstract Data Type is a programmer-defined
    data type that can be manipulated in a manner
    similar to system-provided data types
  • Must have the ability to instantiate many
    different copies of the data type.
  • Data type can be manipulated using provided
    operations, without knowledge of internal
    representation.
  • But ADTs were important not because they were
    data structures, but because they provided an
    easily characterized service to the rest of an
    application.

23
History
  • The Function Centered View -- Assembly language
    Functions and Procedures -- Major concern
    characterizing the functionality of an
    application
  • The Data Centered View -- ModulesAbstract Data
    Types -- Major concern characterizing the
    data types used in an application
  • The Service Centered View -- Object-OrientedProgr
    amming -- Major concern characterizing the
    services provided by objects in the application

24
Objects - ADT's with Message Passing
  • Characteristics of Objects
  • Encapsulation -- similar to modules
  • Instantiation -- similar to ADT's
  • Messages -- dynamic binding of procedure names to
    behavior
  • Classes -- a way of organization that permits
    sharing and reuse
  • Polymorphism -- A new form of software reuse
    using dynamic binding

25
What Does the Future Hold?
  • What will be the next evolutionary step in
    software? Prediction is hard, particularly about
    the future.
  • However, one you have accepted the idea of an
    application formed from interacting agents, there
    is no reason why those components must exist on
    the same computer (distributed computing) or be
    written in the same language (components).
  • Model Driven Development (UML and extensions)
    (reuse)
  • Verification and Verified code from the UML
    (reuse certification)
  • Agent Oriented Systems
  • So some of the trends we see today in software
    are natural results of the OOP mind set.

26
Some C stuff
  • A class enables the programmer to model objects
    that have attributes (data members) and
    behaviours or operations (member functions or
    methods). Members are data or behaviours.
  • Member functions are invoked in response to
    messages sent to an object
  • A message corresponds to a member-function call
    sent from one object to another or from a a
    function to an object.
  • Once a class is defined, the class name is now a
    type name which can be use dot declare objects of
    that class. (Class is an abstract data type)
  • Member access specifiers public private or
    protected.
  • Public accessible whenever an object of that
    class of is in scope
  • Private accessible (usable) only to member
    functions of the class
  • Protected -- later

27
Simple Time Class definition
  • // Time abstract data type definition
  • class Time
  • public // list these first to draw
    attention to public interface
  • void setTime( int ) // set function
  • int getTime( ) //get function
  • private // members visible to all but
    access restricted to class
  • int hour
  • // end class Time
  • // This goes in a file called time.h -- a header
    file for the class definition or class
    declaration. This is the class s public
    interface it provides the client code with the
    function prototypes it needs to call the class
    member functions
  • // Dont forget to document the file with your
    name, purpose etc.

28
Simple Time Implementation
  • void TimesetTime ( int h )
  • hour (h gt 0 h lt 24) ? h 0
  • // sets the time - public so clients of class
    can use it
  • int TimegetTime ( )
  • return hour // returns the time
  • // this goes in a file called time.cpp a
    source-code file for the class definition
  • // dont forget to include ltiostreamgt --contains
    function prototypes for // C standard input and
    output functions
  • // must also have prototypes for functions
    defined in the class so
  • // include Time.h

29
Simple Time Implementation
  • // testTime.cpp -- the driver file
  • include ltiostreamgt
  • using std cout
  • using std endl
  • include Time.h
  • int main()
  • Time t // instantiate object t of class Time
  • t.setTime( 6 ) // set the Time
  • cout ltlt The time is ltlt t.getTime ( ) ltlt
    endl
  • t.hour 6 // error Timehour is not
    accessible (hour is private)
  • return 0
  • // end main

30
C books
  • Recommended that you have access to a C text.
    Lots of copies of Deitel and Deitel C How to
    Program or others are around borrow or buy
    second hand copy (any edition!)
  • Assumed you have basic C knowledge, including
    control structures, function prototypes, arrays
    and pointers. If you are sketchy on these,
    review your C text right away!
  • Good link for reference
  • http//media.pearsoncmg.com/ph/esm/esm_deitel_cplu
    splus_4/bb/ppts/index.htm
  • Periodically, I will be referring to material on
    those slides in class and in lab.
Write a Comment
User Comments (0)
About PowerShow.com