Professional Documents
Culture Documents
OOAD9 Implementation
OOAD9 Implementation
OOAD9 Implementation
OOAD
297
Object-oriented programming
□ Functional/imperative programming
■ C/Pascal
Data
Function 3
Function 1
Function 2
OOAD
298
Object-oriented programming
□ Object-oriented programming
■ C++, Java, C#, …
Data
Functions
message
message
Data Data
message
Functions
Functions
■ Encapsulation : class
□ Attributes
□ Methods
□ Constructors et destructors
■ Inheritance
■ Abstract classes et interfaces
■ Polymorphism
OOAD
299
Object-oriented programming
□ Class : C++
class User {
public:
User(string n, int a):name(n), age(a) {}
string getName() {return name;}
int getAge() const {return age;}
void setName(string n) {name = n;}
void setName(int a) {age = a;}
void print() const ;
…
[private:]
string name;
int age;
};
…
User u(" Nguyen Van A ", 35);
User* p = new User( " Nguyen Van A ", 35 );
…
delete p;
…
OOAD
300
Object-oriented programming
□ Class : Java
class User {
public User(String n, int a) {name = n; age = a;}
public String getName() {return name;}
public int getAge() {return age;}
public void setName(String n) {name = n;}
public void setName(int a) {age = a;}
public void print(){
System.out.println( "name: " + name + " age: " + age );
}
…
…
User u = new User (“Nguyen Van A", 35 );
…
OOAD
301
Object-oriented programming
Constructor
Destructor
OOAD
302
Object-oriented programming
OOAD
303
Object-oriented programming
□ Inheritance: C++
OOAD
304
Object-oriented programming
□ Inheritance: Java
OOAD
305
Object-oriented programming
Circle Rectangle
OOAD
306
Object-oriented programming
class Shape {
public:
virtual double area( ) = 0;
virtual double circumference() = 0;
....
}
OOAD
307
Object-oriented programming
□ Java interface
interface MyInterface {
public double area( );
public double circumference();
…
}
OOAD
308
Object-oriented programming
□ Polymorphism in C++
class User {
string name;
int age;
public:
User(string nm, int a) {name=nm; age=a;}
virtual void print() {
cout << "Name: " << name << " Age: " << age;
}
};
OOAD
309
Object-oriented programming
□ Polymorphism in C++
int main()
{
User* users[3];
delete [] users;
return 0;
}
OOAD
310
Object-oriented programming
□ Polymorphism in Java
class User {
public User( String str, int yy ) {
name = str;
age = yy;
}
public void print() {
System.out.print( "name: " + name + " age: " + age );
}
OOAD
311
Object-oriented programming
□ Polymorphism in Java
class Test
{
public static void main( String[] args )
{
User[] users = new User [3];
users[0] = new User( "Buster Dandy", 34 );
users[1] = new StudentUser( "Missy Showoff",25, "Math");
users[2] = new User( "Mister Meister", 28 );
for (int i=0; i<3; i++)
{
users [i].print();
System.out.println();
}
}
}
OOAD
312
Main Activities of Software Development
Requirements
Analysis Design
Gathering
Design the solution /
Define requirement Define the conceptual model
software plan
specification
Maintenance
Post-install review
Support docs
Active support
OOAD
313
From design to code
■ Definitions of methods
OOAD
314
From design to code
□ Class definition
■ Example of a part of class diagram
OOAD
315
From design to code
□ Class definition
■ Code of OneOrder class
+ subtotal() : double }
private int quantity;
}
OOAD
316
From design to code
□ Class definition
■ Code of OneOrder class
OOAD
317
From design to code
□ Definition of classes
■ Code of ListOfOrders class
orders OneOrder
1..* public class ListOfOrder
− quantity: Integer {
1
public double total()
ListOfOrders {
− datePlaced + subtotal() : double
− clientID }
private Date datePlaced;
+ total() : double private int clientID;
private List orders;
}
OOAD
318
From design to code
□ Method definition
■ Interaction diagram defines the getTotal() method
OOAD
319
From design to code
□ Implementation order
■ Class must be implemented from the least coupled/dependent to the
most coupled/dependent
7 4
1 1
3
Store ProductCatalog ProductDescription
1..*
1 1
1..*
6 2
CashRegister 1..* LineItem
1
*
5
Sale
* 1
1
1 Payment
OOAD
320
From design to code
OOAD
321