Object Oriented Programming Key Features of OO Approach Data encapsulation –data and methods are...
-
Upload
camron-ellis -
Category
Documents
-
view
212 -
download
0
Transcript of Object Oriented Programming Key Features of OO Approach Data encapsulation –data and methods are...
Object Oriented Programming
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
#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
interface
constructors
destructor
modifier
selector
attributes
#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;}
implementation
initializing
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;
}
use
pointer
deallocation
Object Oriented Programming
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