This paper, authored by Ralph E. Johnson and Brian Foote, discusses the design of reusable classes in object-oriented programming, particularly in the context of Smalltalk. The authors emphasize that object-oriented programming is not just a new way of designing programming languages but also a new way of designing programs, with a focus on software reuse. They highlight the attributes of object-oriented languages that promote reusable software, such as data abstraction, inheritance, and polymorphism. The paper is divided into several sections:
1. **Introduction**: Explains the importance of designing for reusability in object-oriented programming and how it differs from conventional systems.
2. **Object-Oriented Programming**: Describes the core concepts of object-oriented programming, including polymorphism, protocols, and inheritance.
3. **Toolkits and Frameworks**: Discusses frameworks and toolkits as a way to reuse designs and components, emphasizing the benefits of black-box frameworks over white-box ones.
4. **Lifecycle**: Analyzes the lifecycle of classes in Smalltalk, noting that classes can be reused across multiple applications.
5. **Design Methodology**: Provides a set of design rules for creating more reusable and maintainable classes, including rules for finding standard protocols, abstract classes, and frameworks.
6. **Conclusion**: Summarizes the key factors that contribute to the high reusability of object-oriented components and the benefits of using object-oriented techniques.
The paper aims to guide designers in creating more reusable and maintainable object-oriented programs by providing practical design techniques and guidelines.This paper, authored by Ralph E. Johnson and Brian Foote, discusses the design of reusable classes in object-oriented programming, particularly in the context of Smalltalk. The authors emphasize that object-oriented programming is not just a new way of designing programming languages but also a new way of designing programs, with a focus on software reuse. They highlight the attributes of object-oriented languages that promote reusable software, such as data abstraction, inheritance, and polymorphism. The paper is divided into several sections:
1. **Introduction**: Explains the importance of designing for reusability in object-oriented programming and how it differs from conventional systems.
2. **Object-Oriented Programming**: Describes the core concepts of object-oriented programming, including polymorphism, protocols, and inheritance.
3. **Toolkits and Frameworks**: Discusses frameworks and toolkits as a way to reuse designs and components, emphasizing the benefits of black-box frameworks over white-box ones.
4. **Lifecycle**: Analyzes the lifecycle of classes in Smalltalk, noting that classes can be reused across multiple applications.
5. **Design Methodology**: Provides a set of design rules for creating more reusable and maintainable classes, including rules for finding standard protocols, abstract classes, and frameworks.
6. **Conclusion**: Summarizes the key factors that contribute to the high reusability of object-oriented components and the benefits of using object-oriented techniques.
The paper aims to guide designers in creating more reusable and maintainable object-oriented programs by providing practical design techniques and guidelines.