Modeling Real-World SystemsIdentifying the Public InterfacesDesigning Robust Constructors (and Perhaps Destructors)Designing Error Handling into a ClassDesigning with Reuse in MindDesigning with Extensibility in MindDesigning with Maintainability in MindUsing Object PersistenceConclusionReferences