Professional Documents
Culture Documents
SAD - Ch9 Implementation
SAD - Ch9 Implementation
SAD - Ch9 Implementation
• Functional/imperative programming
• C/Pascal
Data
Function 3
Function 1
Function 2
3
• 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
4
Object-oriented programming
class User {
• Class : C++ 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 setAge(int a) {age = a;}
void print() const ;
…
[private:]
string name;
int age;
};
… 5
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 setAge(int a) {age = a;}
public void print(){
System.out.println( "name: " + name + " age: " + age
);
}
…
…
User u = new User (“Nguyen Van A", 35 ); 6
Object-oriented programming
7
Object-oriented programming
8
Object-oriented programming
9
Object-oriented programming
class StudentUser extends User {
• Inheritance: Java
public StudentUser( String n, int a, String school ) {
super(n, a);
schoolEnrolled = school;
}
10
Object-oriented programming
Circle Rectangle
11
Object-oriented programming
12
Object-oriented programming
13
Object-oriented programming
• Polymorphismclass User {
instring
C++ name;
int age;
public:
User(string nm, int a) {name=nm; age=a;}
virtual void print() {
cout << "Name: " << name << " Age: " << age;
}
};
• Polymorphism in C++
int main()
{
User* users[3];
delete [] users;
return 0;
}
15
Object-oriented programming
class User {
• Polymorphism in Java
public User( String str, int yy ) {
name = str;
age = yy;
}
public void print() {
System.out.print( "name: " + name + " age: " + age
);
}
• 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();
}
}
}
17
Main Activities of Software Development
Requirements Gathering Analysis Design
Maintenance
Post-install review
Support docs
Active support
18
From design to code
19
From design to code
• Class definition
• Example of a part of class diagram
orders OneOrder contains >
1..* *
1 − quantity: Integer 1
ListOfOrders AirPlane
− datePlaced + subtotal() : double − price : float
− clientID
+ total() : double + getPrice() : float
20
From design to code
• Class definition
• Code of OneOrder class
21
From design to code
• Class definition
• Code of OneOrder class
OneOrder contains >
* public class OneOrder
− quantity: Integer 1 {
AirPlane public double subTotal()
+ subtotal() : double {
− price : float
}
+ getPrice() : float private int quantity;
private AirPlane airPlane;
}
22
From design to code
• Definition of classes
• Code of ListOfOrders class
orders OneOrder
1..* public class ListOfOrder
1 − quantity: Integer {
ListOfOrders public double total()
− datePlaced + subtotal() : double {
− clientID
}
+ total() : double private Date datePlaced;
private int clientID;
private List orders;
}
23
From design to code
• Method definition
• Interaction diagram defines the getTotal() method
24
From design to code
• Implementation order
• Class must be implemented
7 4
from the least coupled/dependent to the most 3
coupled/dependent 1 1
Store ProductCatalog ProductDescription
1..*
1 1
1..*
6 2
CashRegister 1..* LineItem
1
* 5
Sale
* 1
1
1 Payment
25
From design to code
26