SECTION 1-Basic Concepts Chapter 1: Basic Concepts Encapsulation Classes Properties Methods How to draw classes Inheritance Overwriting code Programming by exception What about multiple inheritance? Base classes--a first look How to draw subclassing Polymorphism Messages Events Events vs. event methods Access and assign methods Composition Containers Composition by reference Abstraction Building class hierarchies Hiding information Interfaces Chapter 2: How Things Are Done in Visual FoxPro Instantiating classes Constructors and destructors CreateObject() NewObject() .AddObject() and .NewObject() Passing parameters to objects SCATTER... NAME... Object references Object lifetime THIS, THISFORM, THISFORMSET and Parent Variable references Property references Cleaning up after yourself Differences between classes and forms Instantiating forms DataEnvironment Inheritance Combining form classes and forms Templates Visual FoxPro base classes NODEFAULT Custom classes Control classes Adding properties on the fly Should you, or shouldn't you? Collections FoxPro's collections The collections you create yourself Collections provided by others Features you might miss in Visual FoxPro Multiple inheritance revisited Friendship relations Static properties Operator overloading Copying objects Chapter 3: What's Not So Obvious Instance programming and pseudo-subclassing Instance programming Pseudo-subclassing Visual vs. non-visual classes Advantages ofnon-visual classes Why not go the visual route? Visual classes: Nintendo for adults? Some classes are non-visual only Creating your own set of base classes Some suggestions Chapter 4: Using Shrink-Wrapped Classes Reuse what others create What is available? Black box objects White box objects COM components Class libraries Frameworks Complimentary tools The Fox Foundation Classes Class overview Application Automation Data editing Data navigation Data query Data utilities Date time File utilities Internet Menus Miscellaneous Buttons Miscellaneous Formsv Movers Multimedia Reporting System utilities Text formatting User interface Conclusion Chapter 5: OOP Standard Tools The Class Browser Basic functionality Opening libraries Renaming items Redefining classes The class icon Creating source code Different ways to start the Class Browser Customizing and extending the Class Browser What's the deal with VCX file? The VCX structure How Visual FoxPro stores visual classes Compiling a class library Cleaning up class libraries How to protect your source code in a VCX The component Gallery Basic functionality Working with existing catalogs Creating catalogs" Conclusion Chapter 6: Good Habits Coding Standards Object naming conventions Class naming conventions Variable naming conventions Field naming conventions Method naming conventions Other conventions Design standards Class hierarchies Documenting Comment lines in source code Description fields Formal documentation Chapter 7: Evaluating Risks and Benefits Benefits Faster development Higher quality Easier maintenance Reduced cost Increased scalability Better information structures and complexity management Increased adaptability Better mapping to the problem domain Concerns Need for standards Speed of execution Availability of qualified personnel Costs of conversion Support for large-scale modularity Learning curve SECTION 2-Advanced Object-Oriented Programming CHAPTER 8: The Bigger Picture This isn't all about subclassing buttons, is it? Creating behavioral objects How everything comes together Creating reusable objects Reuse--a fairytale? Application-internal reuse Cross-application reuse Reusing components that don't match your architecture Conclusion CHAPTER 9: Three-Tiered Development A brief introduction The model-view-controller approach Better than sliced bread: sliced applications Three tiered internally Handling the data Creating the interface Invoking the business logic Compiling one EXE Displaying and manipulating data Class and inheritance hierarchies Exposed tiers Conclusion CHAPTER 10: Patterns An overview What exactly is an "object-oriented design pattern"? Our first pattern One common terminology Some examples Adaptor pattern Observer pattern Strategy pattern Template method pattern Conclusion CHAPTER 11: Object Metrics The importance of metrics Automated measuring Metrics based on code complexity Number of lines of code Metrics based on class hierarchies Number of classes Number of custom properties Number of methods Number of "Is-A" relations Metrics based on objects Number of instances Number of times a class is reused Number of dependencies Conclusion SECTION 3-Object Modeling Chapter 12: The Unified Modeling Language Introducing the Unified Modeling Language Some modeling history The ideas behind UML UMLtools UML notation Packages and package diagrams Use Case diagrams Class diagrams Interaction diagrams Component diagrams Deployment diagrams Stereotypes Conclusion Chapter 13: Collecting Requirements What we try to achieve Collecting the requirements Research for shrink-wrapped applications Interviewing customers Lay a good foundation Hitting a moving target Managing requirements Requirement lists RationalRequisitePro Conclusion Chapter 14: Analyzing the Problem A Use Case-driven approach What exactly is a use case? Transition of a requirement to a use case Use case tools Microsoft Word Rational Rose Chapter 15: Object Modeling Object Modeling - an overview A picture is worth more than a thousand words Object modeling tools From use cases to objects Identifying interface objects Identifying the data services Identifying the middle tier Identifying methods and properties Identifying common scenarios Putting things together You don't want three-tiered models? Implementation details Keeping things language independent How Rose handles items Reusing design Chapter 16: Implementation Creating Visual FoxPro code The Code Generation Wizard Importing your first model Selecting model files more efficiently Step 2's secret options Resolving conflicts Setting Visual FoxPro options in the model Updating existing libraries Filling in the blanks Chapter 17: Documenting Existing Projects Going back to the modeling tool The Reverse Engineering Wizard Creating diagrams Updating existing models Creating new models Beyond basic modeling A glimpse of the modeling future...