Surveys: 78 years of C++ experience, 26 years of Java experience
Elevator Speeches (scattered)
Language Features that support OOP
The problem is that there is no distinction between the general properties of any shape and the properties of a specific shape. Expressing this distinction and taking advantage of it defines object-oriented programming.
Can we do this in CLU?
Shape = cluster [spfc_shape: type] is create, draw
where spfc_shape has
draw = proctype (s: spfc_shape, x: int, y: int)
rep = record [shape: spfc_shape, locx: int, locy: int]
“Object-oriented programming is programming with inheritance. Data abstraction is programming using user-defined types. With few exceptions, object-oriented programming can and ought to be a superset of data abstraction. These techniques need proper support to be effective. Data abstraction primarily needs support in the form of language features and object-oriented programming needs further support from a programming environment. To be general purpose, a language supporting data abstraction or object-oriented programming must enable effective use of traditional hardware.”
Object-Oriented Programming is a state of mind.
It is difficult to reach that state of mind if your language doesn’t have a way to declare S T and the type judgment:
Other language features can help, but we aren’t yet sure what the right ones are: dynamic dispatch, implementation inheritance, mixins, automated delegation, etc.
Structured Programming is a state of mind.
It is difficult to reach that state of mind if your language doesn’t have structured control statements (e.g., while, for, if, blocks, procedures)
Data Abstraction is a state of mind.
It is difficult to reach that state of mind if your language doesn’t have type checking and mechanisms for restricting access
Read Wing & Liskov paper: what must be true about S and T to make S T is safe?
Continue working on projects – make sure you understand all comments
Position Paper 2 due Monday
Talk: today at 3:30, in the Rotunda:
Evelyn Fox Keller, “Linking Organisms and Computers: Theory and Practice in Contemporary Molecular Biology"