Chapter 5 Implementing UML Specification (Part I)

31
1 Chapter 5 Implementing UML Specification (Part I) Object-Oriented Technology From Diagram to Code with Visual Paradigm for UML Curtis H.K. Tsang, Clarence S.W. Lau and Y.K. Leung McGraw-Hill Education (Asia), 2005

description

Chapter 5 Implementing UML Specification (Part I). Object-Oriented Technology From Diagram to Code with Visual Paradigm for UML Curtis H.K. Tsang, Clarence S.W. Lau and Y.K. Leung McGraw-Hill Education (Asia), 2005. Objectives. After you have read this chapter, you should be able to - PowerPoint PPT Presentation

Transcript of Chapter 5 Implementing UML Specification (Part I)

Page 1: Chapter 5 Implementing UML Specification  (Part I)

1

Chapter 5Implementing UML

Specification (Part I)

Object-Oriented TechnologyFrom Diagram to Code with Visual Paradigm for

UML

Curtis H.K. Tsang, Clarence S.W. Lau and Y.K. Leung

McGraw-Hill Education (Asia), 2005

Page 2: Chapter 5 Implementing UML Specification  (Part I)

2

Objectives After you have read this chapter,

you should be able to implement a class diagram; implement a state diagram; implement an activity diagram;

and implement sequence and

collaboration diagrams.

Page 3: Chapter 5 Implementing UML Specification  (Part I)

3

Classclass SampleClass {

private int privateAttribute;protected double protectedAttribute;long packageAttribute;public boolean publicAttribute;public boolean publicMethod(int parameter1) {

…}private float privateMethod(byte parameter1,float parameter2) {

…}protected double protectedMethod() {

… }

void packageMethod(short parameter1) {…

}}

A Single Class

Page 4: Chapter 5 Implementing UML Specification  (Part I)

4

Package

package com.abc.library;class ClassA …. {…}

Package

Page 5: Chapter 5 Implementing UML Specification  (Part I)

5

Inheritance

Single inheritance can be easily implemented by super class and subclass in most OO programming languages, e.g. use extends in Java.

Multiple inheritances may not be supported in some OO programming languages.

Replace some of the inheritances by interfaces.

Page 6: Chapter 5 Implementing UML Specification  (Part I)

6

Inheritance

class SubClass extends BaseClass {…}

Inheritance

Page 7: Chapter 5 Implementing UML Specification  (Part I)

7

Inheritance (cont’d)interface BaseInterface {

// declaration of methods….

}class ConcreteClass implements BaseInterface {

// implementation of // methods of the // interface BaseInterface…

}

Inheritance

Page 8: Chapter 5 Implementing UML Specification  (Part I)

8

Inheritance (cont’d)

Page 9: Chapter 5 Implementing UML Specification  (Part I)

9

class Class2 extends Class1 implements Interface3 {

define attributes from class3

define operations from interface3

}

Inheritance (cont’d)

Page 10: Chapter 5 Implementing UML Specification  (Part I)

10

One-to-one Association (cont’d)

class ClassA {ClassB _b;// declare attributes // for the // association class…

}class ClassB {

ClassA _a;…

}

One-to-one Association

Page 11: Chapter 5 Implementing UML Specification  (Part I)

11

One-to-many Association (cont’d)

class ClassA {Vector _b; // or hashtable…

}class ClassB {

ClassA _a;// declare attributes // for association // class

}

One-to-many Association

Page 12: Chapter 5 Implementing UML Specification  (Part I)

12

One-to-many Association (cont’d)

import java.util.Vector;

class ClassA {Vector _Bs;

public ClassA() {_Bs = new Vector();…

}public Enumeration getBs() {

return(_Bs.elements());}

Page 13: Chapter 5 Implementing UML Specification  (Part I)

13

One-to-many Association (cont’d)

// remove the link between ClassB object to this// objectpublic void removeB(ClassB b) {

_Bs.remove(b);}public void addB(ClassB b) {

_Bs.add(b);}// other functions for searching objects in the// vector…

}

Page 14: Chapter 5 Implementing UML Specification  (Part I)

14

Qualified Association (cont’d)class ClassA {

Hashtable _b;…

}class ClassB {

ClassA _a;// declare attributes // for association // class…

}

One-to-many Association

Page 15: Chapter 5 Implementing UML Specification  (Part I)

15

Qualified Association (cont’d)import java.util.Hashtable;class ClassA {

private Hashtable _Bs;public ClassA() {

_Bs = new Hashtable();}public Enumeration getBs() {

return(_Bs.elements());}public void addB(ClassB b, int key) {

_ClassBs.put(new Key(key), b);}

Page 16: Chapter 5 Implementing UML Specification  (Part I)

16

Qualified Association (cont’d)public void removeClassB(ClassB b) {

_ClassBs.remove(b);}public ClassB getClassB(int key) {

return((ClassB) _Bs.get(new Key(key)));}

} // ClassA

Page 17: Chapter 5 Implementing UML Specification  (Part I)

17

Qualified Association (cont’d)class Key {

int _key;public Key(int key) {

_key = key;}public boolean equals(Object obj) {

if (obj instanceof Key)return(((Key)

obj)._key == _key);else

return(false);}

public int hashCode() {return(_key);

}}// Key

Page 18: Chapter 5 Implementing UML Specification  (Part I)

18

Many-to-many Association (cont’d) Many-to-many Association

If the association does not have additional attributes, we can use a vector or a hashtable on each side.

If the association has attribute(s), a distinct association class is needed for holding the links between the objects and storing the additional attributes of the association.

Page 19: Chapter 5 Implementing UML Specification  (Part I)

19

Implementation of Association Class

One-to-one association. Assign the attributes of the association class to one of the classes of the association.

One-to-many association. Assign the attributes of the association class to the class on the many side.

Many-to-many association. Implement the association class as a distinct class.

Page 20: Chapter 5 Implementing UML Specification  (Part I)

20

Example – One-to-many Association

Page 21: Chapter 5 Implementing UML Specification  (Part I)

21

Example – One-to-many Association (cont’d)

class Car {private int EngineNo;

private int ChasisNo;

private int OwnershipYear;

private int OwnershipMonth;

private int OwnershipDay;

}

Page 22: Chapter 5 Implementing UML Specification  (Part I)

22

Example - Many-to-many Association

Registration

9080

9807

6782

9878

1111

1234

1242

9080

9807

6782

9878

1111

1234

1242Peter Chan

Alan Tong

John Lee

Venice Tsui

Mary Lui

TWGS

KCTS

LKP

CMT

KKY

Example of objects and links

Many-to-many Association

Page 23: Chapter 5 Implementing UML Specification  (Part I)

23

Example – Many-to-many Association (cont’d)class School { private String _name; private Vector _registrations;

public School(String name) { _name = name; _registrations = new Vector(); }

public void setName(String name) { _name = name; }

public String getName() { return(_name); }

Page 24: Chapter 5 Implementing UML Specification  (Part I)

24

Example – Many-to-many Association (cont’d)// school class continuespublic void addRegistration(Registration reg) { _registrations.add(reg); }

public void removeRegistration(Registration reg) { _registrations.remove(reg); }

public Enumeration getStudents() { int i; Vector students = new Vector();

for (i = 0; i < _registrations.size(); i++) students.add(((Registration) _registrations.elementAt(i)).getStudent()); return(students.elements()); }} // school

Page 25: Chapter 5 Implementing UML Specification  (Part I)

25

Example – Many-to-many Association (cont’d)class Person { private String _name; private Vector _registrations;

public Person(String name) { _name = name; _registrations = new Vector(); }

String getName() { return(_name); }

void setName(String name) { _name = name; }

Page 26: Chapter 5 Implementing UML Specification  (Part I)

26

Example – Many-to-many Association (cont’d)// Class Person continuespublic void addRegistration(Registration reg) { _registrations.add(reg); }

public void removeRegistration(Registration reg) { _registrations.remove(reg); } public Enumeration getSchools() { int i; Vector schools = new Vector(); for (i = 0; i < _registrations.size(); i++) schools.add(((Registration) _registrations.elementAt(i)).getSchool()); return(schools.elements()); }} // Person

Page 27: Chapter 5 Implementing UML Specification  (Part I)

27

Example – Many-to-many Association (cont’d)class Registration { private Person _student; private School _school; private int _studentNo;

private Registration(Person student, School school, int studentNo) { _school = school; _student = student; _studentNo = studentNo; }

static public void register(Person student, School school, int studentNo) { Registration reg = new Registration(student, school, studentNo); school.addRegistration(reg); student.addRegistration(reg); }

Page 28: Chapter 5 Implementing UML Specification  (Part I)

28

Example – Many-to-many Association (cont’d)// Class Registration continues public void deregister() { this._school.removeRegistration(this); this._student.removeRegistration(this); }

public School getSchool() { return(_school); }

public Person getStudent() { return(_student); }

} // class Registration

Page 29: Chapter 5 Implementing UML Specification  (Part I)

29

Example – Many-to-many Association (cont’d)

public class Main3 {

public static void main(String argv[]) {

int i;

String schoolNames[] = {"TWGS", "KCTS", "LKP", "CMT", "KKY"};

String studentNames[] = {"Peter Chan", "Alan Tong", "John Lee", "Venice Tsui", "Mary Lui"};

Person students[] = new Person[5];

School schools[] = new School[5];

for (i = 0; i < 5; i++) {

students[i] = new Person(studentNames[i]);

schools[i] = new School(schoolNames[i]);

}

Page 30: Chapter 5 Implementing UML Specification  (Part I)

30

Example – Many-to-many Association (cont’d)

Registration.register(students[0], schools[0], 1241); Registration.register(students[1], schools[1], 1234); Registration.register(students[2], schools[1], 1111); Registration.register(students[3], schools[2], 9878); Registration.register(students[4], schools[3], 6782); Registration.register(students[4], schools[4], 9807); Registration.register(students[4], schools[0], 9080);

Enumeration s = Registration.getSchools("Mary Lui"); System.out.println("Mary Lui studies in the following schools:"); for (;s.hasMoreElements();) { System.out.println (((School) s.nextElement()).getName()); }

}}

Page 31: Chapter 5 Implementing UML Specification  (Part I)

31

Composition & Aggregation

Aggregation can be implemented as a plain association.

Composition is a special case of aggregation. The parts of the whole object is deleted before the whole object is deleted.