1 chap. 2 abstract data types 서울대학교 컴퓨터공학부 internet data base lab 교수 김...

59
1 Chap. 2 Abstract Data Types 서서서서서 서서서서서서 Internet Data Base LAB 서서 서 서 서 OBJECT-ORIENTATION by Khoshafian and Abnous

Upload: lindsay-julia-lane

Post on 18-Jan-2018

227 views

Category:

Documents


0 download

DESCRIPTION

3 Object An encapsulated software structure which usually models an application domain entity Object Data + Operations = 2000 code deposit withdraw Bank Account object

TRANSCRIPT

Page 1: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

1

Chap. 2 Abstract Data Types

서울대학교 컴퓨터공학부 Internet Data Base LAB

교수 김 형 주

OBJECT-ORIENTATION by Khoshafian and Abnous

Page 2: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

2

Table of Contents

Object: Background Introduction Classes Overloading Dynamic binding Parametric polymorphism Constraints Summary

Page 3: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

3

Object

An encapsulated software structure which usuallymodels an application domain entity

Object Data + Operations=

2000

code

code

deposit

withdraw

Bank Account object

Page 4: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

4

Related Terms

Instance variables

Method

Message

The variables(data) contained in an object are calledinstance variables.

An operations of an object is called method.

A request to invoke an operation is called message.

Page 5: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

5

Example: File Object

openclosereadwrite

file_1Object-oriented view

File_1 open() : file_1, please open yourself.

File_1 read(ch) : file_1, please give me the next char.

File_1 close() : file1, close yourself.

Page 6: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

6

Class

An abstract data type which define the representation and behavior of objects.

class

instantiationsinstances

object object

Page 7: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

7

Example: Rectangle

Define a Rectangle Class.

(0,0) x

y

(x,y)wh Class Rectangle

dataint x, y, h, w;

methodcreate (int x1, y1, h1, w1) { x=x1; y=y1; h=h1; w=w1; }

moveTo (int x1, y1) { x=x1; y=y1; self.display(); }

display () { drawRectangle(x, y, h, w); }

End Class

Page 8: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

8

Interface of Rectangle

class Rectangle { operations

create(int x1, y1, h1, w1);

moveTo(int x1, y1);

display(); }

Page 9: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

9

Example: Using Rectangle5

5

x

y

(5,5)

(10,5)

(25,10)105

55 #Import Rectangle

Rectangle r1, r2;r1.create(5, 5, 10, 5);r1.display();r1.moveTo(25,10);

r2.create(10, 15, 5, 5);r2.display();

Page 10: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

10

Related Terms

Behavior

Data Abstraction

Encapsulation

The set of methods exported by an object is calledits behavior or interface.

Definition of an abstract type.Encapsulation is need.

The data of an object can only be accessed via themethods of the object.

Page 11: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

11

Table of Contents

Object: Background Introduction Classes Overloading Dynamic binding Parametric polymorphism Constraints Summary

Page 12: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

12

1. Introduction

ADT(Abstract Data Types) represented and implemented through

classes Class

basic implementation and representation unit a class is basically a type

ADT ClassImplemented-by

Page 13: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

13

1.1 Data Types

Informal Definition representation + operations

representation = attributes or the structure of the type operations = constructor operations + base operations

type construct operators: generic extraction operations e.g.) field selection, arrays, lists, sets and sequences

e.g.) ITM.Cost := ITM.Cost * 1.1;

constructor operation base operation

Page 14: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

14

1.2 From Data Types to ADTs

Clear distinction between implementation and interface interfaces are public representations and implementations of interfaces are

private “encapsulation”

interface implementation

visible

private

Page 15: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

15

Method 1 Method 2 Method 3 Method 4

InterfacePublic

Representation:Instancevariables

Methodimplementation:

code for Method 1code for Method 2code for Method 3code for Method 4

ImplementationPrivate

The overall structure of an abstract data type (Class)

Page 16: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

16

From Data Types to ADTs

Suppose we have ADT: a set of integers A linked list of records vs. An array of integers The interfaces of two implementations are same to

users’ view The implementation of associated operations like “Find

an element” would be different

Page 17: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

17

1.3 The Object / Message Paradigm (1)

The data is active computational entity Messages comprise the object’s interfaces Messages can change/retrieve the object’s

internal states

message

Object

Page 18: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

18

1.3 The Object / Message Paradigm (2)

Procedural Model function call to return data values function call to update input data parameter

Object / Message model send messages to perform computation and return a value send messages to ask an object to change the object’s

content

In terms of computational power The procedural model and the object/message model are

same

In terms of modeling, software development, software extensibility, reusability The object/message model is far superior

Page 19: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

19

1.4 Modularization

Naturally provide a divide-and-conquer strategy In procedural model through procedures In OO model through abstract data typing

advantages models the real world autonomous generates correct applications reusable

Page 20: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

20

1.4.1 Modeling of the Real World

Data-based vs. Procedure-based OO Data-based

more direct representation of the real world improved clarity, robustness, debugging and

maintenance of programs encapsulation

Page 21: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

21

1.4.2 Autonomy

Object is an autonomous agent messages are the only interacting method

Nodes: Mail service, Secretary, Salesperson, Salesmanager Procedural Abstraction: spanning many nodes and many things ADT Abstraction: autonomous

define messages code correpondant method locally

message

Object

Page 22: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

22

1.4.3 Generation of Correct Applications

Can develop more robust code bases Encapsulated ADT can easily be stubbed

actual code that implements an operation is commented out and replaced by a diagnostic message.

Exception-checking and error-handling mechanism can be incorporated easily

OO modularization helps isolate errors within ADT

Page 23: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

23

1.4.4 Reusability

Conventional library mechanism has several drawbacks no parametric polymorphism and overloading

replications of function and excessive use of case statement

ADT and OO provide overloading and polymorphism Naturally guarantee reusability

Page 24: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

24

1.5 Benefits of ADT (Summary)

Provides better conceptualization and modeling

Enhances robustness Enhances performance Better captures the semantics of the type Separates between implementation and

specification Allows extensibility of the system

Page 25: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

25

Table of Contents

Object: Background Introduction Classes Overloading Dynamic binding Parametric polymorphism Constraints Summary

Page 26: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

26

2.2 Classes

Language construct to define ADT in OO PLs Class definition includes

name of the class external operations (interfaces) internal representation internal implementation of the interface

Page 27: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

27

2.1 Instance Variables Internal representation of a class

hold the state of objects that are instances of a class take on different values for each instance may specify type constraints

(strongly) typed, or typeless Strongly typed OO languages: Eiffel

successful compilation guarantees no return errors Typeless OO languages: Smalltalk

flxibility, rapid prototyping

Name: “John Chan”Age: 32Salary: $35,000

Instance John

Instance variables

Page 28: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

28

2.2 Methods and Messages Methods define the behavior of instances of a class Sending messages (or invoking methods) involves

target object selector (name of the method) arguments of the operator

Example C initializeReal : 3 Imaginary : 2

C : target object initializeReal, Imaginary : selector 3, 2 : arguments

Protocol set of messages that the object can respond

Page 29: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

29

2.2.1 The Method Body

Code that implements the method Possibly several method bodies: Dynamic Binding

actual code of the method will be determined at run time

Smalltalk: A method (within the method body) can access the instance variables of the class and its superclasses

Page 30: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

30

2.2.2 Implicit Parameters and The Pseudovariable “Self”

How is the target object identified in the method body Implicitly by the pseudovariable “self” or “this”

Smalltalk “self” and C++ “this” Inside the method body: “self”

“O M “ ==> “O” is bound to “self” “self” is an implicit formal parameter

“Super” indicates its superclass

Object

self

Page 31: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

31

2.2.2 The implicit pseudovariable

Purpose of pseudovariable As a return variable of a method To invoke other methods on the target object To distinguish between the object as an instance of the class an

d the object as an instance of a superclass

Page 32: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

32

2.2.3 Accessor and Update Methods

Generic operations Accessor methods: Retrieve operations of instance variables (rather t

han perform complex computations) Update methods: Update operations of instance variables (rather than

perform complex computations)

Automatically generated in some OO languages because they are so common get_real, get_imaginary put_real, put_imaginary

Page 33: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

33

2.3.1 Creating Objects (1)

In conventional languages (Pascal, C)1. Explicit declaration and definition2. Allocate space from the memory heap and declare pointer to it

Type

ComplexPtr = ^Complex

Complex = RECORD

Real: real;

Imaginary: real;

END;

VAR

C1, C2: Complex;

C1.Real := 1.0;

C1.Imaginary := 2.0;

VAR

pC1, pC2; ComplexPtr;

new(pC1);

pC1^.Real := 1.0;

pC1^.Imaginary := 2.0;

Page 34: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

34

2.3.1 Creating Objects (2)

In OO languages: Ask the class to stamp out an instance Suppose we have “Complex” class Use special object-creation class method to initialize instance variab

les newComplexReal: Imaginary: newComplexReal: 3 Imaginary: 2

Use generic new method with uninitialized instance variables C := Complex new C initializeReal: 3 C initializeImaginary: 2 C initializeReal: 3 Imaginary: 2

Page 35: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

35

2.3.2 Destroying Objects and Garbage Collection

Two strategies Explicit “dispose” or “delete” operation (Pascal,C)

little overhead problem of “dangling” references

Implicit disposal or reclamation of the object when it is no longer reachable (Smalltalk, Lisp) garbage collection no dangling reference run-time overhead

Page 36: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

36

2.3.2.1 Garbage Collection (1)

Reference counting0

1

1

1

11

1

0

- no stop-and-reclaim phase- space utilization is enhanced- “circular reference” problem- overhead of incrementing and decrementing the reference

Page 37: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

37

2.3.2.1 Garbage Collection (2)

Mark-and-sweep

- mark phase

Page 38: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

38

2.3.2.1 Garbage Collection (3)

Mark-and-sweep (cont’d)

-sweep phase

The mark-and-sweep scheme-- use global information to reclaim storage stop-and-sweep overhead-- no “circular reference” problem-- memory compaction is possible

Page 39: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

39

2.3.2.1 Garbage Collection (4)

Reference counting: circular reference problem and counting overhead

Mark and sweep: stop-and-sweep overhead when memory runs out

Copy and Swap algorithm Half the space H1 and H2 Allocate objects from H1 If H1 is filled up, copy the live objects of H1 into H2 H1 and H2 are reverse

Page 40: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

40

2.3.2.1 Garbage Collection (5)

Copy and swap: space overhead Generation Scavenging (scavenge: 청소하다 , 배기하다 )

new space past survivor space future survivor space old space

survived many scavenges

Page 41: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

41

2.3.2.1 Garbage Collection (6)

Generation Scavenging new space: creating new objects past survivor space: survivors from the

previous round future survivor space: space for scavenging old space: “die-hard” area for old objects

- past s-space and future s-space are reversed after scavenging - reduces the overhead of the stop-and-copy - there can be copying and age-tracking and space overhead

Page 42: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

42

2.4 Class Extensions (1)

Meaning: actual, existing instances of a class How can we facilitate processing large numbers of objects of the same

type? Conventional PL (Pascal): A type represents the set of all possible obje

cts DBMS: A table type represents the set of all records In OOPLs, we already used the name of class when we want to create

an instance of a class, then How?

SalesPerson John Mary Suzan Jimextent

class instances

Page 43: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

43

In conventional PLs : Pascal

TYPE Complex =

RECORD Real : real; Imaginary : real;END;

Complex type like template

{ (Real, Imaginary) | Real is real;

Imaginary is real }

Set of all complex numbers

denotes

OO Concepts

Class Set of objects

extent

Page 44: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

44

Extent : It is useful in DBMSProcess large numbers of objects of the same type

CREATE TABLE SalesPerson (Name CHAR(20), Address CHAR(20), Tel_No INTEGER, Salary FLOAT, …)

John Mary Suzan Jim

extent

instances

Query : SELECT Name, Address FROM SalesPerson WHERE Salary > 50000

extent

** SQL has the language construct for EXTENT: relation name

Page 45: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

45

2.4 Class Extensions (2)

Two strategies to access existing instances Through the class extensions (if the language supports exten

sion). Keyword “extent” or “extension”

Through a collection object (almost all OOPLs support this) keyword: “collection”, “set”, “bag”, “array”

Page 46: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

46

2.4.1 Collections

Most OO PLs support “collection” class Similar effect to extensions Subclasses of collection class

Sets, Arrays, or Bags (Sets with duplicates)

Smalltalk SalesPeople := Set new SalesPeople add: John

Eiffel SalesPeople: SET[SalesPerson]

Page 47: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

47

Table of Contents

Object: Background Introduction Classes Overloading Dynamic binding Parametric polymorphism Constraints Summary

Page 48: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

48

3 Overloading

Operations of the same name but different semantics can be invoked for objects of different type

Conventional PLs support basic overloading on built-in basic types such as int, real and character

OOPLs take one step further for any operation of any object type If S1 and S2 are sets, S1 + S2 would be set union

Page 49: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

49

Table of Contents

Object: Background Introduction Classes Overloading Dynamic binding Parametric polymorphism Constraints Summary

Page 50: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

50

4 Dynamic Binding (1)

Supports operator overloading In typeless language, variable’s type will be known

at run time Provide extensibility, compact code, clarity!

Dynamically binding “Print”

for I = 1 to Top St(I) Printprint method in Class

Integer

Float

Array

100

13.7

Page 51: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

51

4 Dynamic Binding (2)

Manipulation collections of objects of different types implies “not strongly typed”

The power of overloading and dynamic binding is best utilized by typeless language

Advantages Extensibility Development of more compact code Clarity

Disadvantages: slow

Page 52: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

52

Table of Contents

Object: Background Introduction Classes Overloading Dynamic binding Parametric polymorphism Constraints Summary

Page 53: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

53

5 Parametric Polymorphism

“Anything goes” makes it a form of polymorphism Uses types as parameters in generic type declarations or cla

sses e.g.) template in C++, parameterized type in CLU

Genericity flexibility & advantage of code sharing with power of strong ty

ping

Page 54: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

54

List-sum = proc[t: type] (a: list[t]) returns(t) requires the type t has a binary operator

+ : proctype(t, t) returns(t) that “adds” two objects of type t. Effects it returns the sum of the elements

in the list using the binary ‘+’

List-sum[int](IL) List-sum[real](RL)

Parameterized polymorphic types in CLU

Integer list List of real numbers

Page 55: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

55

2.5.2 Macro expansion: Just, Syntactic Sugar?

Many PLs enforce the static specifications of the type parameters for parameterized types at compile time

We call it “parameterized macros” having preprocessing (macro expansion), not “parametric polymorphism”

The full power of type paramerization comes only when “within the semantics of the language” and “at run time”

Page 56: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

56

Table of Contents

Object: Background Introduction Classes Overloading Dynamic binding Parametric polymorphism Constraints Summary

Page 57: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

57

6 Constraints

ADT needs to be correct and complete Test the correctness or completeness

constraints on objects and instance variables pre- and postconditions of methods

Help the programmer express the semantics of ADT as directly as possible

Page 58: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

58

6.1 Constraints on Objects, Instance Variables, Methods

Access and update constraint routines incorporated into definition of the class similar to the integrity constraints in RDB Attached predicates

if-accessed if-updated

Allow one to use certain constrains that must be satisfied before/after a method is executed pre-condition post-condition

Page 59: 1 Chap. 2 Abstract Data Types 서울대학교 컴퓨터공학부 Internet Data Base LAB 교수 김 형 주 OBJECT-ORIENTATION by Khoshafian and Abnous

59

Summary

ADT object: background class

instance variable method message

overloading & dynamic binding parametric polymorphism constraints