Transcript Lecture_4
Object-Oriented Programming (Java)
Topics Covered Today • Unit 1.2 Designing Classes – 1.2.1 UML Class Diagrams – 1.2.2 Relationships Between Classes – 1.2.3 Common Class Structures – 1.2.4 UML with Eclipse 2
UML Introduction • Programming is like building a house. An architect creates a design, and a builder uses appropriate tools to carry out the design. The builder does not proceed without a blueprint from the architect.
• Software developers also need a blueprint to create complex systems.
• The UML is a toolbox of graphical notations used to produce the blueprint -- a graphical depiction of the software design • UML,
Unified Modeling Language
3
Unified Modelling Language (UML) • A graphical language for – Visualising – Specifying – Constructing – Documenting • Object-oriented software systems • OMG (Object Management Group 国际对象管理 组织 ) is responsible for UML standard.
4
UML • UML is not a method. It does not outline a procedure for designing software; it is a modeling language that captures the design graphically.
• Whatever process you use, you can use UML to record the results of your analysis and design decisions.
5
UML • The main reason to use UML notation is communication.
– To discuss design with someone, both need to understand the modeling language, not the process used to come up with the design.
– Human language is imprecise – Code is too detailed 6
UML Diagrams • Use case diagram ( 用例图 ) • Class diagram ( 类图 ) • Behavior diagrams ( 行为图 ) – Statechart diagram ( 状态图 ) – Activity diagram ( 活动图 ) – Interaction diagrams ( 交互图 ) • Sequence diagram ( 顺序图 ) • Collaboration diagram ( 协作图 ) • Implementation diagrams ( 实现图 ) – Component diagram ( 组件图 ) – Deployment diagram ( 部署图 ) 7
Class Notation • A class is represented by a rectangle with three compartments. – The first compartment contains the name of the class; – the second compartment describes the attributes of the class; – and the third compartment describes the methods of the class. 8
UML Class Diagram NameClass
name
-attribute1 : Type -attribute2 : Type
attribute method
+method1(param1 : Type, param2 : Type) : Type +method2(param1 : Type, param2 : Type) : Type • - private • + public • # protected 9
Employee Class • This class contains three private attributes: – name – hourlyWage – hourWorked • It also contains the following public methods: – Methods to access the values of the attributes: • getName, getHourlyWage, and getHoursWorked – Methods to modify the values of the attributes: • setName, setHourlyWage, and setHoursWorked – A method to obtain the employee's earnings: • getEarnings 10
Representation of Employee Employee -name : String -hourlyWage : Double -hoursWorked : Double +getName() : String +getHourlyWage() : Double +getHoursWorked() : Double +setName(newName : String) +setHourlyWage(newHourlyWage : Double) +setHoursWorked(newHoursWorked : Double) +getEarnings() : Double 11
Abbreviated Representation (1) Employee -name : String -hourlyWage : Double -hoursWorked : Double +getName() +getHourlyWage() +getHoursWorked() +setName(newName : String) +setHourlyWage(newHourlyWage : Double) +setHoursWorked(newHoursWorked : Double) +getEarnings() 12
Abbreviated Representation (2) Employee Employee -name : String -hourlyWage : Double -hoursWorked : Double +getEarnings() 13
Associations ( 关联 ) • An association represents the relationship between two or more classes.
– 关联就是类和类之间的关系。 • Association is represented by a solid line that connects the two classes.
• For instance: – a professor instructs students
Student Professor
– clients hold bank accounts
Client BankAccount
14
One-way Associations ( 单向关联 ) • In a one-way association, the first class has a reference to an object of the second class, but the second class does not have a reference to an object of the first class. – 单向关联中,第一个类中有一个第二个类的对象的 引用,但第二个类中没有第一个类的对象的引用 • UML indicates a one-way association with an arrow at the end of the association line.
Car
-engine
Engine
15
One-way Associations ( 单向关联 ) • A class has associations with more than one class.
-goverment
Goverment Country
capital
capital
16
One-way Associations ( 单向关联 ) • A class can contain more than one association with another class ( 一个类和另一个类可以有多个关 联 )
Flight
-pilot -coPilot
Pilot
17
Two-way Associations( 双向关联 ) • A two-way association indicates bi-directional navigation between objects of two classes.
– 双向关联中每个类都有另外一个类的对象的引用。
Course
-courses -students
Student
18
Multiplicity( 多重性 ) • Multiplicity indicates the number of instances of a class that may be associated with a single instance of another class.
– 多重性就是一个类有多少个实例与另外一个类的实例相关 联 – Car has four tires and one engine – One client holds one or more bank accounts – A professor can instruct more than one student • The multiplicity can be specified with a single integer or as a range – n , n=1,2,3,… – n…m , n 代表最小值, m 代表最大值 19
Common multiplicities 0…1 0…* or * 1 1…* Zero or one instance Zero or more instances Exactly one instance One or more instances 20
Multiplicity • States the number of objects that are connected across the association.
– Unspecified – Exactly one – Zero or more (many, unlimited) 1 0..* * 1..* – One or more – Zero or one – Specified range – Multiple, disjoint ranges 0..1
2..4
2, 4..6
21
One-to-one Association( 一对一关联 )
Car
1 -engine 1
Engine
1 -goverment 1
Goverment Country
1 1 -capital capital 22
One-to-many Association( 一对多关联 )
Client
1 -account 1 … *
BankAccount Year
1 12
Month
-months 1 4 … 5 -weeks
Week
1 7
Day
-days 23
Many-to-many Association( 多对多关联 ) • In a many-to-many association between classes A and B, one instance of class A may be related with many instances of class B, and one instance of class B may be related with many instances of class A. -student -course
Student Course
0 … * 0 … * 24
Many-to-many Association • Find the association between Person and Company
Person
-employee 1 … * -employer 0 … 1
Company
25
Many-to-many Association
Person
-employee 1 1 … * -employer 0 … 1
Company
“One person can work for at most one employer.”
26
Many-to-many Association
Person
-employee 1 … * -employer 0 … 1 1
Company
“One company has at least one employee.”
27
Many-to-many Association • Find associations between Employee, Department and Project.
Employee
1 … * -employees -participants 1 … * 1 … * -departments
Department
-projects 1 … *
Project
28
Aggregation( 聚集 ) • Aggregation is a special form of association.
• Models a whole/part relationship.
• Represents a “has-a” relationship 29
Aggregation Example • A book is composed of one table of contents, zero or one prefaces, one or more chapters, and one index. In a book, each chapter is composed of one or more sections, and each section is composed of one or more paragraphs and zero or more figures. 30
Aggregation hierarchy of a book 31
Composition( 合成 ) • Models a whole/part relationship with a strong ownership; when the whole dies, the part does so as well.
• The whole part is responsible for creation and destruction of its parts.
RootSystem Plant Stem 32
Specialization/Generalization • 具体化 / 概括化 • It is a “is a ” relationship • For example: – Client is a person.
33
Specialization/Generalization notation • Specialization/generalization is represented in UML by adding a triangle next to the generalization class: 34
Specialization/Generalization (cont.) • How do we structure these classes?
35
Specialization/Generalization (cont.) • Employee and Manager are Person • Manager is an Employee 36
Specialization/Generalization (cont.) • The associate is a inheritance relationship.
37
Specialization/Generalization (end) • A subclass inherits from its superclass: – Attributes – Operations – Relationships.
• A subclass may add to its definition: – Attributes – Operations – Relationships – Redefine inherited operations 38
Common Class Structure • Although the definition of classes and their relationships depends on the particular application, some class structures are common to many designs. • These class structures are thought of as basic building blocks and can be composed to design complex systems. • Some of common class structure: – Collection( 集合 ) – Self-containing( 自容类 ) – Relationship loops( 关系环 ) 39
Collection • A collection models a one-to-many relationship.
• Collections store many instances of one class.
• For example: 40
Collections • • • 在该类中有一个属性是 BankAccout 类的实例集合; 每个 BankAccout 类的实例都有一个索引值; 该类中提供了增加和获取 BankAccout 类的实例的方法; 集合 41
Self-containing • • A class can have an association with itself.
一个类有一个与其自身的关联,即该类包含一 个同类对象的引用作为其属性; 42
Self-Containing Classes • The following diagram shows the relationship "each employee has one boss." • The diagram indicates that the boss of an employee is another employee.
43
Relationship Loops • Self-containment can be found in relationships that include two or more classes – 在多个类之间存在自容关系,就会形成关系环。 • An example of a self-containment loop is a file system. – A file system has folders, and folders contain files or more folders, or both 44
Class Diagram of a Files System 45
Roundup: Class Diagrams • Class Diagrams … – show a set of classes and their relationships to each other.
– illustrate the static view of a system.
– are different from “object diagrams”.
46
UML Class Diagram Tools • Eclipse • PPT • Microsoft Visio • Violet • IBM Rational Rose 47
UML with eclipse • Introduction • Create Project • Create Folder • Create New Class Diagram • Create Class BankAccount • Create Class Person • Create Class Client • Create Specialization/Generalization Relationship • Create Association Relationship • Export Image 48