| |
| |
| |
Thinking Object-Orineted | |
| |
| |
Why is OOP Popular? Language and Thought | |
| |
| |
A New Paradigm | |
| |
| |
A Way of Viewing the World | |
| |
| |
Computation as Simulation | |
| |
| |
A Brief History | |
| |
| |
| |
Layers of Abstraction | |
| |
| |
Layers of Abstraction | |
| |
| |
Other Forms of Abstraction | |
| |
| |
A Short History of Abstraction Mechanisms | |
| |
| |
| |
Object-Oriented Design | |
| |
| |
Responsibility Implies Noninterference | |
| |
| |
Programming in the Small and in the Large | |
| |
| |
Why Begin with Behavior | |
| |
| |
A Case Study in RDD | |
| |
| |
CRC Cards-Recording Responsibility | |
| |
| |
Components and Behavior | |
| |
| |
Software Components | |
| |
| |
Formalize the Interface | |
| |
| |
Designing the Representation | |
| |
| |
Implementing Components | |
| |
| |
Integration of Components | |
| |
| |
Maintenance and Evolution | |
| |
| |
| |
Classes and Methods | |
| |
| |
Encapsulation | |
| |
| |
Class Definitions | |
| |
| |
Methods | |
| |
| |
Variations on Class Themes | |
| |
| |
| |
Messages, Instances, and Initialization | |
| |
| |
Message-Passing Syntax | |
| |
| |
Accessing the Receiver from Within a Method | |
| |
| |
Object Creation | |
| |
| |
Pointers | |
| |
| |
Memory Recovery | |
| |
| |
Constructors | |
| |
| |
Constant Values | |
| |
| |
Destructors and Finalizers | |
| |
| |
Metaclasses in Smalltalk | |
| |
| |
| |
A Case Study: The Eight Queens Puzzle | |
| |
| |
The Eight-Queens Puzzle | |
| |
| |
Using Generators | |
| |
| |
The Eight-Queens Puzzle in Each Language | |
| |
| |
| |
A Case Study: A Billiards Game | |
| |
| |
The Elements of Billiards | |
| |
| |
Graphical Objects | |
| |
| |
The Main Program | |
| |
| |
Using Inheritance | |
| |
| |
| |
Inheritance and Substitution | |
| |
| |
An Intuitive Description of Inheritance | |
| |
| |
Subclass, Subtype, and Substitution | |
| |
| |
Interfaces | |
| |
| |
Forms of Inheritance | |
| |
| |
Inheritance in Various Languages | |
| |
| |
Inheritance and Constructors | |
| |
| |
The Benefits of Inheritance | |
| |
| |
The Costs of Inheritance | |
| |
| |
| |
Case Study - A Card Game | |
| |
| |
The Class Playing Card | |
| |
| |
Data and View Classes | |
| |
| |
The Game | |
| |
| |
Card Piles-Inheritance in Action | |
| |
| |
Playing the Polymorphic Game | |
| |
| |
The Graphical User Interface | |
| |
| |
| |
Subclasses and Subtypes | |
| |
| |
Substitutability | |
| |
| |
Subtypes | |
| |
| |
The Substitutability Paradox | |
| |
| |
Is This a Problem? Dynamically Typed Languages | |
| |
| |
Pre and Post-conditions | |
| |
| |
Scandinavian Semantics | |
| |
| |
| |
Static and Dynamic Behavior | |
| |
| |
Static versus Dynamic Typing | |
| |
| |
Static and Dynamic Classes | |
| |
| |
Static versus Dynamic Method Binding | |
| |
| |
| |
Implications of Substitution | |
| |
| |
Memory Layout | |
| |
| |
Assignment | |
| |
| |
Copies and Clones | |
| |
| |
Equality | |
| |
| |
| |
Multiple Inheritance | |
| |
| |
Inheritance as Categorization | |
| |
| |
Problems Arising from Multiple Inheritance | |
| |
| |
Multiple Inheritance of Interfaces | |
| |
| |
Inheritance from Common Ancestors | |
| |
| |
Inner Classes | |
| |
| |
| |
Polymorphism and Software Reuse | |
| |
| |
Polymorphism in Programming Languages | |
| |
| |
Mechanisms for Software Reuse | |
| |
| |
Efficiency and Polymorphism | |
| |
| |
Will Widespread Software Reuse Become Reality | |
| |
| |
| |
Overloading | |
| |
| |
Type Signature and Scopes | |
| |
| |
Overloading Based on Scopes | |
| |
| |
Overloading Based on Type Signatures | |
| |
| |
Redefinition | |
| |
| |
Polyadicity | |
| |
| |
Multi-Methods | |
| |
| |
| |
Overr | |