CMU CS 15-675 Architectures for Software Systems Spring 1998

Information Hiding and Objects

with answers

Garlan & Kazman Questions on Readings for Lecture 9 Due: Mon Feb. 9, 1998

The papers:

SG96: Section 2.3

PCW85: The Modular Structure of Complex Systems

Pre95: Design Patterns for Object-Oriented Software Development

Hints:

Read for the ideas about system organization, not for programming details or prescriptions for the process of creating the systems.

In a paper that you are not reading, Liskov pointed out that there are two major differences between abstract data types and "object-oriented" objects. The substantive difference is that objects include inheritance. The other, non-substantive, difference is terminology: different names for essentially the same things, such as abstract data type/object, procedure/method, package/class, and procedure call/message. You'll have to put up with the terminology differences. Note also that object-oriented systems generally use run-time binding of procedure names to bodies to accommodate the more flexible type structure that results from inheritance.

Questions:

1) What information hiding principle , as realized by Parnas, Clements, and Weiss’ module decomposition, determines how much an interface should change?

The likelihood of changes. Likely changes should not involve any interface changes; less likely changes may involve changes for interface that are not widely used; widely used interfaces should not typically change.

2) According to Pree, what are the important differences between ADSs (Abstract Data Structures), ADTs (Abstract Data Types), and Objects?

ADSs provide abstractions of data and operations, but do not define a type. ADTs are ADSs with the addition that they define a type. Objects are ADTs with the addition of inheritance, polymorphism, and dynamic binding.


Back

Heather L. Marko

Modified: 5/20/98