Design & Programming
Encapsulation, Polymorphism, Inheritance
OOP is a construction technique; it is not part of the end product
Better abstraction: program models real-world
Easier maintenance because objects are self-contained, modular
Potential for high-degree of re-use
Potential for big mess
OOP languages provide three-things:
Meaningful explanation is probably too technical for non-programmers
OOP is a construction technique
OOP is developer, not user, oriented.
Users and managers benefit because programmers work more efficiently and because objects shift the programming details closer to the “real-world” - reducing miscommunication.
It’s About Object Hierarchies
Object Hierarchies are the basic focus of OOP projects.
Hierarchies specify how objects relate to one another and which object does what.
Hierarchies move from abstract/generic objects to concrete/specific objects.
Also known as class-libraries (C++ calls objects ‘classes’)
Object Hierarchy: Example
Potential for Big Mess
Industry record with objects is not pretty
Class libraries are complex and have a tendency to bloat in the middle.
Object design requires talented and experienced individuals
OOP development is not linear
Object hierarchies take time to stabilize; they are constantly being re-organized during development.
Tradtional “waterfall” project schedules are inadequate.
Allow for evolutionary, long-term approach. Try to match re-structurings with major new business features
Use an iterative design-and-code cycle
Think globally/Act locally. Start small and grow larger based on experience: plan on evolution
Re-use is hard