Abstraction and types

1



slide: Section 8.1: Abstraction and types


Algebraic specification

2



slide: Section 8.2: Algebraic specification


Decomposition -- modules versus objects

3



slide: Section 8.3: Decomposition -- modules versus objects


Types versus classes

4



slide: Section 8.4: Types versus classes


  1. Characterize the differences between control abstractions and data abstractions. Explain how these two kinds of abstractions may be embodied in programming language constructs.
  2. How can you model the meaning of abstract data types in a mathematical way? Do you know any alternative ways?
  3. Explain how types may affect object-oriented programming.
  4. Explain how you may characterize an abstract data type by means of a matrix with generator columns and observer rows. What benefits does such an organization have?
  5. How would you characterize the differences between the realization of abstract data types by modules and by objects? Discuss the trade-offs involved.
  6. How would you characterize the distinction between types and classes? Mention three ways of specifying types. How are these kinds related to each other?
  7. How would you characterize behavior compatible modifications? What alternatives can you think of?

slide: Questions

There is a vast amount of literature on the algebraic specification of abstract data types. You may consult, for example,  [Dahl92].