UT Dallas CS 4337 - #Sebesta ch11 abstraction & encapsulation - shorter to use (27 pages)

Previewing pages 1, 2, 3, 25, 26, 27 of 27 page document View the full content.
View Full Document

#Sebesta ch11 abstraction & encapsulation - shorter to use



Previewing pages 1, 2, 3, 25, 26, 27 of actual document.

View the full content.
View Full Document
View Full Document

#Sebesta ch11 abstraction & encapsulation - shorter to use

40 views


Pages:
27
School:
University of Texas at Dallas
Course:
Cs 4337 - Organization of Programming Languages
Unformatted text preview:

Chapter 11 Abstract Data Types and Encapsulation Concepts Chapter 11 Topics The Concept of Abstraction Introduction to Data Abstraction Design Issues for Abstract Data Types Language Examples Parameterized Abstract Data Types Encapsulation Constructs Naming Encapsulations Copyright 2012 Addison Wesley All rights reserved 1 2 The Concept of Abstraction An abstraction is a view or representation of an entity that includes only the most significant attributes The concept of abstraction is fundamental in programming and computer science Nearly all programming languages support process abstraction with subprograms Nearly all programming languages designed since 1980 support data abstraction smalltalk common lisp C etc Copyright 2012 Addison Wesley All rights reserved 1 3 Introduction to Data Abstraction An abstract data type is a user defined data type that satisfies the following two conditions 1 The representation of objects of the type is hidden from the program units that use these objects so the only operations possible are those provided in the type s definition 2 The declarations of the type and the protocols of the operations on objects of the type are contained in a single syntactic unit Other program units are allowed to create variables of the defined type e g an object contains data and its method Copyright 2012 Addison Wesley All rights reserved 1 4 Advantages of Data Abstraction Advantages the first condition hidden Reliability security by hiding the data representations user code cannot directly access objects of the type or depend on the representation allowing the representation to be changed without affecting user code Reduces the range of code and variables of which the programmer must be aware Name conflicts are less likely Advantages of the second condition Unit Provides a method of program organization Aids modifiability everything associated with a data structure is together Separate compilation Copyright 2012 Addison Wesley All rights reserved 1 5 Language Requirements for ADTs A syntactic unit in which to encapsulate the type definition A method of making 1 type names and 2 subprogram headers visible to clients while hiding actual definitions Some primitive operations must be built into the language processor Copyright 2012 Addison Wesley All rights reserved 1 6 Design Issues What is the form of the container for the interface to the type Can abstract types be parameterized What access controls are provided Is the specification of the type physically separate from its implementation Copyright 2012 Addison Wesley All rights reserved 1 7 Language Examples C Based on C struct type and Simula 67 classes The class is the encapsulation device A class is a type All of the class instances of a class share a single copy of the member functions Each instance of a class has its own copy of the class data members Instances can be static stack dynamic or heap dynamic Copyright 2012 Addison Wesley All rights reserved 1 8 Language Examples C continued Information Hiding Private clause e g for hidden entities Public clause e g for interface entities Protected clause e g for inheritance Copyright 2012 Addison Wesley All rights reserved 1 9 Language Examples C continued Constructors Functions to initialize the data members of instances they do not create the objects May also allocate storage if part of the object is heap dynamic Can include parameters to provide parameterization of the objects Implicitly called when an instance is created Can be explicitly called Name is the same as the class name Copyright 2012 Addison Wesley All rights reserved 1 10 Language Examples C continued Destructors Functions to cleanup after an instance is destroyed usually just to reclaim heap storage Implicitly called when the object s lifetime ends Can be explicitly called Name is the class name preceded by a tilde Copyright 2012 Addison Wesley All rights reserved 1 11 An Example in C class Stack private int stackPtr maxLen topPtr public Stack a constructor stackPtr new int 100 maxLen 99 topPtr 1 Stack delete stackPtr void push int number if topSub maxLen cerr Error in push stack is full n else stackPtr topSub number void pop int top int empty Copyright 2012 Addison Wesley All rights reserved 1 12 A Stack class header file Stack h the header file for the Stack class include iostream h class Stack private These members are visible only to other members and friends see Section 11 6 4 int stackPtr int maxLen int topPtr public These members are visible to clients Stack A constructor Stack A destructor void push int void pop int top int empty Copyright 2012 Addison Wesley All rights reserved 1 13 Language Examples C continued Friend functions or classes to provide access to private members to some unrelated units or functions Necessary in C class Foo Forward declaration of class Foo in order for example to compile class Bar private int a friend void show Bar x Foo y declaration of global friend class Foo private int b void Bar show Bar x Foo y declaration of friend from other class Copyright 2012 Addison Wesley All rights reserved 1 14 Language Examples Java Java similar to C except All user defined types are classes All objects are allocated from the heap and accessed through reference variables Individual entities in classes have access control modifiers private or public rather than clauses Java has a second scoping mechanism package scope which can be used in place of friends All entities in all classes in a package that do not have access control modifiers are visible throughout the package package stkpkg import stkpkg myStack Copyright 2012 Addison Wesley All rights reserved 1 15 An Example in C need updated class StackClass private private int stackRef private int maxLen topIndex public StackClass a constructor stackRef new int 100 maxLen 99 topPtr 1 public void push int num public void pop public int top public boolean empty Copyright 2012 Addison Wesley All rights reserved 1 16 Parameterized Abstract Data Types Parameterized ADTs allow designing an ADT that can store any type elements only an issue for static typed languages Also known as generic classes C Ada Java 5 0 and C 2005 provide support for parameterized ADTs Copyright 2012 Addison Wesley All rights reserved 1 17 Parameterized ADTs in C Classes can be somewhat generic by writing parameterized constructor functions Stack int size stk ptr new int size max len size 1 top 1 A declaration of a stack object Stack stk 150 Copyright 2012


View Full Document

Access the best Study Guides, Lecture Notes and Practice Exams

Loading Unlocking...
Login

Join to view #Sebesta ch11 abstraction & encapsulation - shorter to use and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view #Sebesta ch11 abstraction & encapsulation - shorter to use and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?