Professional Documents
Culture Documents
Class diagrams are visual representations of the static structure and composition of a particular
system using the conventions set by the Unified Modeling Language (UML). Out of all the UML
diagram types it is one of the most used ones. System designers use class diagrams as a way of
simplifying how objects in a system interact with each other. Using class diagrams, it is easier to
describe all the classes, packages, and interfaces that constitute a system and how these
components are interrelated. For example, a simple class diagram may be used to show how an
organization such as a convenient store chain is set up. On the other hand, precisely detailed
class diagrams can readily be used as the primary reference for translating the designed system
into a programming code.
The following figure is an example of a simple class diagram:
Those should be pretty easy to see in the example: the class being described is a loan account,
some of whose attributes include the type of loan, the name of the borrower/loaner, the specific
date the loan was released and the loan amount. As in the real world, various transactions or
operations may be implemented on existing loans such as renew and extend. The example shows
how class diagrams can encapsulate all the relevant data in a particular scenario in a very
systematic and clear way.
In object-oriented modeling, class diagrams are considered the key building blocks that enable
information architects, designers, and developers to show a given systems classes, their
attributes, the functions or operations that are associated with them, and the relationships among
the different classes that make up a system.
Relationships in Class Diagrams
Classes are interrelated to each other in specific ways. In particular, relationships in class
diagrams include different types of logical connections. The following are such types of logical
connections that are possible in UML:
Association
Directed Association
Reflexive Association
Multiplicity
Aggregation
Composition
Inheritance/Generalization
Realization
Association
Association
is a broad term that encompasses just about any logical connection or relationship between
classes. For example, passenger and airline may be linked as above:
Directed Association
Directed Association
refers to a directional relationship represented by a line with an arrowhead. The arrowhead
depicts a container-contained directional flow.
Reflexive Association
Reflexive Association
occurs when a class may have multiple functions or responsibilities. For example, a staff
working in an airport may be a pilot, aviation engineer, a ticket dispatcher, a guard, or a
maintenance crew member. If the maintenance crew member is managed by the aviation
engineer there could be a managed by relationship in two instances of the same class.
Multiplicity
Multiplicity
is the active logical association when the cardinality of a class in relation to another is being
depicted. For example, one fleet may include multiple airplanes, while one commercial airplane
may contain zero to many passengers. The notation 0..* in the diagram means zero to many.
Aggregation
Aggregation
refers to the formation of a particular class as a result of one class being aggregated or built as a
collection. For example, the class library is made up of one or more books, among other
materials. In aggregation, the contained classes are not strongly dependent on the life cycle of the
container. In the same example, books will remain so even when the library is dissolved. To
render aggregation in a diagram, draw a line from the parent class to the child class with a
diamond shape near the parent class.
Composition
is very similar to the aggregation relationship, with the only difference being its key purpose of
emphasizing the dependence of the contained class to the life cycle of the container class. That
is, the contained class will be obliterated when the container class is destroyed. For example, a
shoulder bags side pocket will also cease to exist once the shoulder bag is destroyed. To depict a
composition relationship in a UML diagram, use a directional line connecting the two classes,
with a filled diamond shape adjacent to the container class and the directional arrow to the
contained class.
Inheritance / Generalization
Inheritance
refers to a type of relationship wherein one associated class is a child of another by virtue of
assuming the same functionalities of the parent class. In other words, the child class is a specific
type of the parent class. To depict inheritance in a UML diagram, a solid line from the child class
to the parent class is drawn using an unfilled arrowhead.
Realization
Realization
denotes the implementation of the functionality defined in one class by another class. To show
the relationship in UML, a broken line with an unfilled solid arrowhead is drawn from the class
that defines the functionality to the class that implements the function. In the example, the
printing preferences that are set using the printer setup interface are being implemented by the
printer.
If you are a programmer or systems designer, youll be building or analyzing class diagrams
quite often since they are, after all, the building blocks of object-oriented modeling. As
demonstrated by this article, class diagram relationships are fairly easy to understand. As a rule
of thumb, keeping class diagrams as simple as possible allows them to be more easily understood
and appreciated by different types of audiences. For this purpose, remember to label your classes
and relationships as descriptive as possible. Lastly, class diagrams also evolve as the real world
systems they represent change. This implies that you dont need to put in much detail in your
first draft. All the classes, interfaces and relationships that are integral to the system or
application you are designing will eventually emerge as the development process moves forward.
Assignment No: 2
Purpose: Implementation of a design model
Lab pre work: Prepare a design model from analysis model in the form of UML 2
class diagram.
Laboratory work: Implement the design model with a suitable object oriented
language
Overview:
The class diagram is a static diagram. It represents the static view of an application. Class
diagram is not only used for visualizing, describing and documenting different aspects of a
system but also for constructing executable code of the software application.
The class diagram describes the attributes and operations of a class and also the constraints
imposed on the system. The class diagrams are widely used in the modelling of object oriented
systems because they are the only UML diagrams which can be mapped directly with object
oriented languages.
The class diagram shows a collection of classes, interfaces, associations, collaborations and
constraints. It is also known as a structural diagram.
Purpose:
The purpose of the class diagram is to model the static view of an application. The class
diagrams are the only diagrams which can be directly mapped with object oriented languages and
thus widely used at the time of construction.
The UML diagrams like activity diagram, sequence diagram can only give the sequence flow of
the application but class diagram is a bit different. So it is the most popular UML diagram in the
coder community.
So the purpose of the class diagram can be summarized as:
The name of the class diagram should be meaningful to describe the aspect of the system.
For each class minimum number of properties should be specified. Because unnecessary
properties will make the diagram complicated.
Use notes when ever required to describe some aspect of the diagram. Because at the end
of the drawing it should be understandable to the developer/coder.
Finally, before making the final version, the diagram should be drawn on plain paper and
rework as many times as possible to make it correct.
First of all Order and Customer are identified as the two elements of the system and they
have a one to many relationship because a customer can have multiple orders.
We would keep Order class is an abstract class and it has two concrete classes
(inheritance relationship) SpecialOrder and NormalOrder.
The two inherited classes have all the properties as the Order class. In addition they have
additional functions like dispatch () and receive ().
So the following class diagram has been drawn considering all the points mentioned above:
Assignment No:3
Purpose: Implementation of a state model from the given description.
Lab pre work: Prepare a state model from the given problem description and draw a
state
diagram using UML2 notations
Laboratory work: Implement the state model with a suitable object oriented
language
Overview:
The name of the diagram itself clarifies the purpose of the diagram and other details. It describes
different states of a component in a system. The states are specific to a component/object of a
system.
A Statechart diagram describes a state machine. Now to clarify it state machine can be defined as
a machine which defines different states of an object and these states are controlled by external
or internal events.
Activity diagram explained in next chapter, is a special kind of a Statechart diagram. As
Statechart diagram defines states it is used to model lifetime of an object.
Purpose:
Statechart diagram is one of the five UML diagrams used to model dynamic nature of a system.
They define different states of an object during its lifetime. And these states are changed by
events. So Statechart diagrams are useful to model reactive systems. Reactive systems can be
defined as a system that responds to external or internal events.
Statechart diagram describes the flow of control from one state to another state. States are
defined as a condition in which an object exists and it changes when some event is triggered. So
the most important purpose of Statechart diagram is to model life time of an object from creation
to termination.
Statechart diagrams are also used for forward and reverse engineering of a system. But the main
purpose is to model reactive system.
Following are the main purposes of using Statechart diagrams:
The following is an example of a Statechart diagram where the state of Order object is analyzed.
The first state is an idle state from where the process starts. The next states are arrived for events
like send request, confirm request, and dispatch order. These events are responsible for state
changes of order object.
During the life cycle of an object (here order object) it goes through the following states and
there may be some abnormal exists also. This abnormal exit may occur due to some problem in
the system. When the entire life cycle is complete it is considered as the complete transaction as
mentioned below.
The initial and final state of an object is also shown below.
If we look into the practical implementation of Statechart diagram then it is mainly used to
analyze the object states influenced by events. This analysis is helpful to understand the system
behaviour during its execution.
So the main usages can be described as:
Assignment No:4
Purpose: Preparing an interaction model from the given details
Prepare a use case model, sequence model and activity model from the given
description using
UML 2 notations.
Overview:
To model a system the most important aspect is to capture the dynamic behaviour. To clarify a bit
in details, dynamic behaviour means the behaviour of the system when it is running /operating.
So only static behaviour is not sufficient to model a system rather dynamic behaviour is more
important than static behaviour. In UML there are five diagrams available to model dynamic
nature and use case diagram is one of them. Now as we have to discuss that the use case diagram
is dynamic in nature there should be some internal or external factors for making the interaction.
These internal and external agents are known as actors. So use case diagrams are consists of
actors, use cases and their relationships. The diagram is used to model the system/subsystem of
an application. A single use case diagram captures a particular functionality of a system.
So to model the entire system numbers of use case diagrams are used.
Purpose:
The purpose of use case diagram is to capture the dynamic aspect of a system. But this definition
is too generic to describe the purpose.
Because other four diagrams (activity, sequence, collaboration and Statechart) are also having the
same purpose. So we will look into some specific purpose which will distinguish it from other
four diagrams.
Use case diagrams are used to gather the requirements of a system including internal and
external influences. These requirements are mostly design requirements. So when a system is
analyzed to gather its functionalities use cases are prepared and actors are identified.
Now when the initial task is complete use case diagrams are modelled to present the outside
view.
So in brief, the purposes of use case diagrams can be as follows:
Use case diagrams are considered for high level requirement analysis of a system. So when the
requirements of a system are analyzed the functionalities are captured in use cases.
So we can say that uses cases are nothing but the system functionalities written in an organized
manner. Now the second things which are relevant to the use cases are the actors. Actors can be
defined as something that interacts with the system.
The actors can be human user, some internal applications or may be some external applications.
So in a brief when we are planning to draw an use case diagram we should have the following
items identified.
Actors
Use case diagrams are drawn to capture the functional requirements of a system. So after
identifying the above items we have to follow the following guidelines to draw an efficient use
case diagram.
The name of a use case is very important. So the name should be chosen in such a way so
that it can identify the functionalities performed.
Do not try to include all types of relationships. Because the main purpose of the diagram
is to identify requirements.
The following is a sample use case diagram representing the order management system. So if we
look into the diagram then we will find three use cases (Order, SpecialOrder and NormalOrder)
and one actor which is customer.
The SpecialOrder and NormalOrder use cases are extended from Order use case. So they have
extends relationship. Another important point is to identify the system boundary which is shown
in the picture. The actor Customer lies outside the system as it is an external user of the system.
Reverse engineering.
Forward engineering.
Sequence Diagram:
Overview:
From the name Interaction it is clear that the diagram is used to describe some type of
interactions among the different elements in the model. So this interaction is a part of dynamic
behaviour of the system.
This interactive behaviour is represented in UML by two diagrams known as Sequence diagram
and Collaboration diagram. The basic purposes of both the diagrams are similar.
Sequence diagram emphasizes on time sequence of messages and collaboration diagram
emphasizes on the structural organization of the objects that send and receive messages.
Purpose:
The purposes of interaction diagrams are to visualize the interactive behaviour of the system.
Now visualizing interaction is a difficult task. So the solution is to use different types of models
to capture the different aspects of the interaction.
That is why sequence and collaboration diagrams are used to capture dynamic nature but from a
different angle.
So the purposes of interaction diagram can be describes as:
one object to another and the collaboration diagram describes the organization of objects in a
system taking part in the message flow.
So the following things are to identified clearly before drawing the interaction diagram:
Object organization.
Following are two interaction diagrams modeling order management system. The first diagram is
a sequence diagram and the second is a collaboration diagram.
Activity Diagram:
Overview:
Activity diagram is another important diagram in UML to describe dynamic aspects of the
system.
Activity diagram is basically a flow chart to represent the flow form one activity to another
activity. The activity can be described as an operation of the system.
So the control flow is drawn from one operation to another. This flow can be sequential,
branched or concurrent. Activity diagrams deals with all type of flow control by using different
elements like fork, join etc.
Purpose:
The basic purposes of activity diagrams are similar to other four diagrams. It captures the
dynamic behaviour of the system. Other four diagrams are used to show the message flow from
one object to another but activity diagram is used to show message flow from one activity to
another.
Activity is a particular operation of the system. Activity diagrams are not only used for
visualizing dynamic nature of a system but they are also used to construct the executable system
by using forward and reverse engineering techniques. The only missing thing in activity diagram
is the message part.
It does not show any message flow from one activity to another. Activity diagram is some time
considered as the flow chart. Although the diagrams looks like a flow chart but it is not. It shows
different flow like parallel, branched, concurrent and single.
So the purposes can be described as:
Activities
Association
Conditions
Constraints
Once the above mentioned parameters are identified we need to make a mental layout of the
entire flow. This mental layout is then transformed into an activity diagram.
The following is an example of an activity diagram for order management system. In the diagram
four activities are identified which are associated with conditions. One important point should be
clearly understood that an activity diagram cannot be exactly matched with the code. The activity
diagram is made to understand the flow of activities and mainly used by the business users.
The following diagram is drawn with the four main activities:
Confirm order
Dispatch order
After receiving the order request condition checks are performed to check if it is normal or
special order. After the type of order is identified dispatch activity is performed and that is
marked as the termination of the process.
This diagram is used to model the activities which are nothing but business requirements. So the
diagram has more impact on business understanding rather implementation details.
Following are the main usages of activity diagram:
Assignment No: 5
Purpose: Implement a Strategy design pattern
Map the participants for the strategy design pattern from a given problem
description andimplement with a suitable object oriented language
Theory:
In Strategy pattern, a class behavior or its algorithm can be changed at run time. This type of
design pattern comes under behavior pattern.
In Strategy pattern, we create objects which represent various strategies and a context object
whose behavior varies as per its strategy object. The strategy object changes the executing
algorithm of the context object.
Implementation
We are going to create a Strategy interface defining an action and concrete strategy classes
implementing the Strategy interface. Context is a class which uses a Strategy.
StrategyPatternDemo, our demo class, will use Context and strategy objects to demonstrate
change in Context behaviour based on strategy it deploys or uses.
Step 1
Create an interface.
Strategy.java
publicinterfaceStrategy{
publicintdoOperation(int num1,int num2);
}
Step 2
OperationSubstract.java
publicclassOperationSubstractimplementsStrategy{
@Override
publicintdoOperation(int num1,int num2){
return num1 - num2;
}
}
OperationMultiply.java
publicclassOperationMultiplyimplementsStrategy{
@Override
publicintdoOperation(int num1,int num2){
Step 3
Step 4
Use the Context to see change in behaviour when it changes its Strategy.
StrategyPatternDemo.java
publicclassStrategyPatternDemo{
publicstaticvoid main(String[]args){
Contextcontext=newContext(newOperationAdd());
System.out.println("10 + 5 = "+context.executeStrategy(10,5));
context=newContext(newOperationSubstract());
System.out.println("10 - 5 = "+context.executeStrategy(10,5));
context=newContext(newOperationMultiply());
System.out.println("10 * 5 = "+context.executeStrategy(10,5));
}
}
Step 5
Assignment No: 6
Purpose: Implement a State design pattern
Map the participants for the state design pattern from a given problem description
and
implement with a suitable object oriented language
In State pattern a class behavior changes based on its state. This type of design pattern comes
under behavior pattern.
In State pattern, we create objects which represent various states and a context object whose
behavior varies as its state object changes.
Implementation
We are going to create a State interface defining an action and concrete state classes
implementing the State interface. Context is a class which carries a State.
StatePatternDemo, our demo class, will use Context and state objects to demonstrate change in
Context behavior based on type of state it is in.
Step 1
Create an interface.
State.java
public interface State {
public void doAction(Context context);
}
Step 2
StopState.java
public class StopState implements State {
public void doAction(Context context) {
Step 3
Step 4
Step 5
Assignment No: 7
Purpose: Understand the concept of Test driven Development
Implement a design level class diagram (given as an input) with Test Driven
Developmentapproach.
Add a Test
Repeat
Example:
Context of Testing:
Valid inputs
Invalid inputs
Boundary conditions
Benefits of TDD:
Assignment No: 8
Objective: Understand and implement the Concept of a reusable
component
Implement a reusable component in form of jar file (or in equivalent form for other
OO languages). Use this component in a separate client implementation by
importing the component as a jar file (or equivalent form for other OO language).
Theory:
What is Software Component Reuse?
Software component reuse is the software engineering practice of creating new software
applications from existing components, rather than designing and building them from scratch.
Reusable components can be requirements specifications, design documents, source code, user
interfaces, user documentation, or any other items associated with software. All products
resulting from the software development life cycle have the potential for reuse.
Experience has shown that it requires three to five years to implement a formal reuse
program across a large corporation.
Collaborate with multiple software engineers throughout the design and definition
phases.
Install a reuse analysis stage into all detailed design work, so that the opportunities for
reuse can be effectively assessed.
Before building a new component, always check to make sure it does not exist. Always
attempt reuse before creating a new component.
With the inputs, results, or outputs and a description of a component, another software
developer should be able to use that component without ever knowing what the code does
inside the component. The component should pass this "self test."
Develop components with overall future use in mind, not just a single project.
Always put extra effort into error handling and making components robust.