Object-oriented design

Table of Contents

19.1. Introduction
19.2. Components
19.2.1. Software quality factors
19.2.2. Large scale programming
19.2.3. Modularity
19.2.4. Methodology
19.2.5. Reusability
19.3. Abstract Data Types
19.3.1. Definition
19.3.2. Information hiding
19.3.3. Using special methods within classes
19.4. Inheritance: sharing code among classes
19.4.1. Introduction
19.4.2. Discussion
19.5. Flexibility
19.5.1. Summary of mechanisms for flexibility in Python
19.5.2. Manual overloading
19.6. Object-oriented design patterns
19.7. Solutions

19.1. Introduction

We first describe general software engineering guidelines to design components (Section 19.2.5). We next move on to the general question about why and how to design classes, and more specifically, how to design new abstract data types (Section 19.3). We will then re-discuss the issue of flexibility (Section 19.5) and describe inheritance (Section 19.4). Last, we will introduce the design patterns catalog (Section 19.6), which are well-known design solutions to standard problems in object-oriented programming.