694 lines
8.1 KiB
Plaintext
694 lines
8.1 KiB
Plaintext
|
Application
|
|||
|
Programming
|
|||
|
Hend Alkittawi
|
|||
|
|
|||
|
UML Diagrams
|
|||
|
UML Diagrams and Class Relationships
|
|||
|
|
|||
|
WHAT IS APPLICATION PROGRAMMING?
|
|||
|
|
|||
|
Documentation
|
|||
|
Testing
|
|||
|
Coding
|
|||
|
|
|||
|
Engineering
|
|||
|
|
|||
|
Collaboration
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
UML: Unified Modeling Language
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Graphical models of object-oriented software
|
|||
|
|
|||
|
What do you think such graphical models should include?
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
UML: Unified Modeling Language
|
|||
|
-
|
|||
|
|
|||
|
Graphical models of object-oriented software
|
|||
|
|
|||
|
Class Name
|
|||
|
|
|||
|
Variables
|
|||
|
|
|||
|
Methods
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
Create the UML diagram for the Account.java class
|
|||
|
public class Account {
|
|||
|
private String name;
|
|||
|
private double balance;
|
|||
|
public Account(String name) {// method body here}
|
|||
|
public void setName(String name) {// method body here}
|
|||
|
public void setBalance(double bal) {// method body here}
|
|||
|
public String getName() {// method body here}
|
|||
|
public double getBalance() {// method body here}
|
|||
|
}
|
|||
|
|
|||
|
Class Name
|
|||
|
|
|||
|
Variables
|
|||
|
|
|||
|
Methods
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
Create the UML diagram for the Account.java class
|
|||
|
public class Account {
|
|||
|
private String name;
|
|||
|
private double balance;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
public Account(String name, double balance) {// method body here}
|
|||
|
public void setName(String name) {// method body here}
|
|||
|
public void setBalance(double bal) {// method body here}
|
|||
|
Account
|
|||
|
public String getName() {// method body here}
|
|||
|
public double getBalance() {// method body here}
|
|||
|
name
|
|||
|
balance
|
|||
|
Account()
|
|||
|
getName()
|
|||
|
setName()
|
|||
|
getBalance()
|
|||
|
setBalance()
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
Create the UML diagram for the Account.java class
|
|||
|
-
|
|||
|
|
|||
|
A <<interface>> tag indicates interface class
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
A <<constructor>> tag indicates constructor
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Include variables data types
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Include method parameters and their data type
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Include method return data type
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
An underscore (_) indicates static
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
A minus(-) indicates private
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
A plus (+) indicates public
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
A hash (#) indicates protected
|
|||
|
|
|||
|
Account
|
|||
|
- name: String
|
|||
|
- balance: double
|
|||
|
<<constructor>> Account( name: String, balance: double )
|
|||
|
+ getName() : String
|
|||
|
+ setName( name: String )
|
|||
|
+ getBalance() : double
|
|||
|
+ setBalance( amount: double )
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
Create the UML diagram for the Account.java class
|
|||
|
|
|||
|
public class Account {
|
|||
|
private String name;
|
|||
|
private double balance;
|
|||
|
public Account(String name, double balance) {// method body here}
|
|||
|
public void setName(String name) {// method body here}
|
|||
|
public void setBalance(double bal) {// method body here}
|
|||
|
public String getName() {// method body here}
|
|||
|
Account
|
|||
|
public double getBalance() {// method body here}
|
|||
|
}
|
|||
|
|
|||
|
- name: String
|
|||
|
- balance: double
|
|||
|
<<constructor>> Account( name: String, balance: double )
|
|||
|
+ getName() : String
|
|||
|
+ setName( name: String )
|
|||
|
+ getBalance() : double
|
|||
|
+ setBalance( amount: double )
|
|||
|
|
|||
|
UML Diagrams
|
|||
|
-
|
|||
|
|
|||
|
Classes depend and interact with each other
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
UML diagrams can visually show the interactions and
|
|||
|
dependencies between classes
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Can you name relationships/dependencies between classes?
|
|||
|
|
|||
|
JAVA CLASSES
|
|||
|
-
|
|||
|
|
|||
|
In a Java application classes are related to each other
|
|||
|
-
|
|||
|
|
|||
|
In an is-a relationship an object of a subclass can also be treated
|
|||
|
as an object of its superclass, or an object that implements an
|
|||
|
interface can be treated as an object of the interface
|
|||
|
(polymorphism).
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Example: A SavingsAccount class that extends Account class
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Example: An Invoice class that implements Payable interface
|
|||
|
|
|||
|
In a has-a relationship, an object contains as members references
|
|||
|
to other objects (composition).
|
|||
|
-
|
|||
|
|
|||
|
Example: An Employee class where an employee has one or more Date
|
|||
|
objects
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Example: A Bank class where a bank has one or more Account objects
|
|||
|
|
|||
|
UML Diagrams
|
|||
|
-
|
|||
|
|
|||
|
Dependencies and relationships between classes can be
|
|||
|
-
|
|||
|
|
|||
|
Dependency relationship
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Unidirectional association
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Bidirectional association
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Aggregation relationship
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Composition relationship
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Realization relationship
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Generalization relationship
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
Generalization relationship
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
indicates inheritance between classes
|
|||
|
|
|||
|
ClassA has a generalization relationship
|
|||
|
with ClassB implies
|
|||
|
|
|||
|
Freight
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
ClassA inherits from ClassB
|
|||
|
|
|||
|
Variables
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
ClassA is the subclass, and ClassB is
|
|||
|
|
|||
|
Methods
|
|||
|
|
|||
|
the superclass
|
|||
|
-
|
|||
|
|
|||
|
declared in code as ClassA extends
|
|||
|
|
|||
|
Luggage
|
|||
|
|
|||
|
Cargo
|
|||
|
|
|||
|
ClassB
|
|||
|
|
|||
|
Variables
|
|||
|
|
|||
|
Variables
|
|||
|
|
|||
|
Methods
|
|||
|
|
|||
|
Methods
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
Realization relationship
|
|||
|
-
|
|||
|
|
|||
|
indicates inheritance, where ClassB is
|
|||
|
an interface
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
<<interface>>
|
|||
|
|
|||
|
ClassA has a realization relationship with
|
|||
|
|
|||
|
Mammal
|
|||
|
|
|||
|
ClassB implies
|
|||
|
|
|||
|
Variables
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
ClassA inherits from ClassB
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
declared in code as ClassA implements
|
|||
|
ClassB
|
|||
|
|
|||
|
Methods
|
|||
|
|
|||
|
Cat
|
|||
|
|
|||
|
Dog
|
|||
|
|
|||
|
Variables
|
|||
|
|
|||
|
Variables
|
|||
|
|
|||
|
Methods
|
|||
|
|
|||
|
Methods
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Composition relationship
|
|||
|
-
|
|||
|
|
|||
|
indicates not-shared association
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
strong dependency
|
|||
|
|
|||
|
ClassA has a composition relationship with ClassB implies
|
|||
|
-
|
|||
|
|
|||
|
ClassA is a container for a data structure of ClassB
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
there is not a super-sub / parent-child relationship between
|
|||
|
ClassA and ClassB
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
if ClassA is deleted, ClassB need to be removed as well
|
|||
|
Folder
|
|||
|
- files: File[]
|
|||
|
Methods
|
|||
|
|
|||
|
File
|
|||
|
Variables
|
|||
|
Methods
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
Aggregation relationship
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
indicates shared association
|
|||
|
|
|||
|
ClassA has an aggregation relationship with ClassB implies
|
|||
|
-
|
|||
|
|
|||
|
ClassA references a data structure of ClassB, but is not the
|
|||
|
only reference
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
ClassA does not own ClassB
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
there is not a super-sub / parent-child relationship between
|
|||
|
ClassA and ClassB
|
|||
|
Wheel
|
|||
|
Variables
|
|||
|
Methods
|
|||
|
|
|||
|
Car
|
|||
|
engine: Engine[]
|
|||
|
wheels: Wheel[]
|
|||
|
Methods
|
|||
|
|
|||
|
Engine
|
|||
|
Variables
|
|||
|
Methods
|
|||
|
|
|||
|
CLASS ACTIVITY
|
|||
|
-
|
|||
|
|
|||
|
What does this UML tell you about the corresponding Java code?
|
|||
|
|
|||
|
Polygon
|
|||
|
|
|||
|
+ computeArea()
|
|||
|
|
|||
|
Triangle
|
|||
|
|
|||
|
Rectangle
|
|||
|
|
|||
|
Variables
|
|||
|
|
|||
|
Variables
|
|||
|
|
|||
|
Methods
|
|||
|
|
|||
|
Methods
|
|||
|
|
|||
|
CLASS ACTIVITY
|
|||
|
-
|
|||
|
|
|||
|
What does this UML tell you about the corresponding Java code?
|
|||
|
-
|
|||
|
|
|||
|
We have three Java classes
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Polygon is an abstract class
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
computeArea() is an abstract method
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
A Rectangle is-a Polygon
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Rectangle extends Polygon
|
|||
|
|
|||
|
Polygon
|
|||
|
|
|||
|
+ computeArea()
|
|||
|
|
|||
|
A Triangle is-a Polygon
|
|||
|
-
|
|||
|
|
|||
|
Triangle extends Polygon
|
|||
|
|
|||
|
Triangle
|
|||
|
|
|||
|
Rectangle
|
|||
|
|
|||
|
+ computeArea()
|
|||
|
|
|||
|
+ computeArea()
|
|||
|
|
|||
|
VIOLET UML EDITOR
|
|||
|
-
|
|||
|
|
|||
|
A free, cross-platform UML editor
|
|||
|
-
|
|||
|
|
|||
|
You can get it here
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
We will be creating Class Diagrams
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
The UML diagram is saved as an html file and can be exported
|
|||
|
as an image (*. png) file
|
|||
|
|
|||
|
Save As *.html
|
|||
|
file
|
|||
|
|
|||
|
Save As *.png
|
|||
|
file
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
Unidirectional association
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
indicates dependency of only one class on another
|
|||
|
|
|||
|
ClassA has a unidirectional association with ClassB implies
|
|||
|
-
|
|||
|
|
|||
|
ClassA uses and depends on ClassB, but ClassB does not
|
|||
|
reference ClassA
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
at least one ClassB object is referenced in ClassA
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
there is an import statement in ClassA for ClassB
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
there is not an import ClassA statement in ClassB
|
|||
|
Employee
|
|||
|
|
|||
|
Date
|
|||
|
|
|||
|
hireDate: Date
|
|||
|
|
|||
|
Variables
|
|||
|
|
|||
|
Methods
|
|||
|
|
|||
|
Methods
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
Bidirectional association
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
indicates codependency of two classes
|
|||
|
|
|||
|
ClassA has a bidirectional association with ClassB implies
|
|||
|
-
|
|||
|
|
|||
|
both depend upon each other
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
at least one ClassB object is referenced in ClassA
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
at least one ClassA object is referenced in ClassB
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
there is an import statement in ClassA for ClassB
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
there is an import statement in ClassB for ClassA
|
|||
|
UserProfile
|
|||
|
|
|||
|
ProfilePicture
|
|||
|
|
|||
|
profilePic: ProfilePicture
|
|||
|
|
|||
|
userProfile: UserProfile
|
|||
|
|
|||
|
Methods
|
|||
|
|
|||
|
Methods
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
Dependency relationship
|
|||
|
-
|
|||
|
|
|||
|
a generalized connection between two classes if other
|
|||
|
relationships are not meaningful!
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
We will primarily use it for classes referenced in main().
|
|||
|
|
|||
|
ClassA depends on ClassB implies one or more of the following
|
|||
|
-
|
|||
|
|
|||
|
at least one ClassB object is referenced in ClassA
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
there is an import statement in ClassA for ClassB
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
at least one class method in ClassB is called by ClassA
|
|||
|
AccountTest
|
|||
|
|
|||
|
+_main( args : String[] )
|
|||
|
|
|||
|
Account
|
|||
|
Variables
|
|||
|
Methods
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
Dependencies and relationships between classes can be
|
|||
|
-
|
|||
|
|
|||
|
General Dependency relationship
|
|||
|
|
|||
|
ClassA
|
|||
|
|
|||
|
ClassB
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Unidirectional association
|
|||
|
|
|||
|
ClassA
|
|||
|
|
|||
|
ClassB
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Bidirectional association
|
|||
|
|
|||
|
ClassA
|
|||
|
|
|||
|
ClassB
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Aggregation relationship
|
|||
|
|
|||
|
ClassA
|
|||
|
|
|||
|
ClassB
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Composition relationship
|
|||
|
|
|||
|
ClassA
|
|||
|
|
|||
|
ClassB
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Realization relationship
|
|||
|
|
|||
|
ClassA
|
|||
|
|
|||
|
ClassB
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Generalization relationship
|
|||
|
|
|||
|
ClassA
|
|||
|
|
|||
|
ClassB
|
|||
|
|
|||
|
UML DIAGRAMS
|
|||
|
-
|
|||
|
|
|||
|
You might see UML diagrams in different formats
|
|||
|
|
|||
|
UML RESOURCES
|
|||
|
-
|
|||
|
|
|||
|
UML relationships & associations
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
UML.org
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
The UML 2 class diagram - IBM Developer
|
|||
|
|
|||
|
DO YOU HAVE ANY
|
|||
|
QUESTIONS?
|
|||
|
|
|||
|
THANK
|
|||
|
YOU!
|
|||
|
|
|||
|
@
|
|||
|
|
|||
|
hend.alkittawi@utsa.edu
|
|||
|
|
|||
|
By Appointment
|
|||
|
Online
|
|||
|
|
|||
|
|