150 likes | 280 Views
Key Features of OO Approach. Data encapsulation data and methods are contained in a single unit, object promotes internal integrity simplifies coding, debugging and maintenance Data hiding no need to know all the details of implementation. Key Features of OO Approach. Inheritance
E N D
Key Features of OO Approach • Data encapsulation • data and methods are contained in a single unit, object • promotes internal integrity • simplifies coding, debugging and maintenance • Data hiding • no need to know all the details of implementation Object Oriented Programming
Key Features of OO Approach • Inheritance • augment, restrict, specialize behavior • provides mechanism for reuse • Polymorphism • different behavior of the same method or operator depending on the class and/or parameters Object Oriented Programming
What Is Design? • Reiss: “design in the most general sense is an abstract description of how something is built” • Design involves finding the set of alternatives most relevant to the problem, analyzing that set, and then choosing a subset of the alternatives that cooperatively solves the problem at hand in the “best” manner (making tradeoffs) Object Oriented Programming
Quality of Design • Level of detail of components should be the same • Number of components should be reasonable • The hierarchy of components should be terminated at an appropriate level Object Oriented Programming
Object Oriented Decomposition • Well-defined interfaces • Cluster related objects Object Oriented Programming
Object • a tangible self-contained entity that exhibits some well-defined behavior • has state, behavior, and identity; the structure and behavior of similar objects are defined in their common class • exists at run-time Object Oriented Programming
Class • description of a number of similar objects – custom data type • objects are instances of the class • consists of interface and implementation • provides three levels of access control • public, protected, private • classes are related in various ways Object Oriented Programming
#ifndef BANKACCOUNT_H #define BANKACCOUNT_H #include <string> class BankAccount { private: string acctOwner; int acctNum; double curBalance; public: BankAccount(string, int); BankAccount(string, int, double); ~BankAccount() {}; void setBalance(double); double getBalance() const; }; #endif attributes constructors destructor modifier selector interface
#include “bankacct.h” BankAccount::BankAccount(string name, int number) :acctOwner(name), acctNum(number),curBalance(0) { } BankAccount::BankAccount(string name, int number, double balance) : acctOwner(name), acctNum(number), curBalance(balance) { } void BankAccount::setBalance(double newBalance) {curBalance = newBalance); } double BankAccount::getBalance() const {return curBalance;} initializing implementation
using namespace std; #include “bankacct.h” void main() { BankAccount* ba = new BankAccount(“Jones”, 1234); ba->setBalance(200.00); cout<<“The balance is “<<ba->getBalance()<<endl; delete ba; } pointer deallocation use
Evaluation criteria for a design • Correctness, completeness • Simplicity • Risk management • Cohesion and coupling • Information hiding • Error handling Object Oriented Programming
Simplification • Can operations be removed? • Can data elements be removed? • Can parameters be removed from operations? • Can parameter and return types for operations be simplified? • Are the operations and their parameters logically consistent? Object Oriented Programming
Simplify by making methods short • Pseudocoding/coding guideline: a method should fit onto one page (one screen). • If the method is too long, split it into separate methods. • If there are too many methods in a class, rewrite a method so that it invokes lower-level classes. Object Oriented Programming
Cohesion and Coupling • A class is cohesive if everything is directed toward a central purpose. • A class has good coupling if it has minimal dependency on other classes. • A class should not need to know the implementation of another class. Object Oriented Programming
Implementing OO design • Two steps: • Convert class design into class declarations • Construct real code from pseudocode Object Oriented Programming