Skip to main content

Short Tutorials On UML and UML Class Diagram

UML Stands For Unified Modeling Language.

Class Diagram::

The purpose of the class diagram is to show the types being modeled within the system and there relationship.

In an object oriented application,
classes have attributes (member variables), operations (member functions) and relation-ships with other classes. The UML class diagram can depict all these things quite easily.


For Example, for the following public class Customer,

Class Customer{
public String name;
public String address;

public String creditRating(){

}


}

Class Diagram is as follows,

Figure 1: Class Diagram

The UML representation of a class is a rectangle containing three compartments stacked vertically, as shown in Figure 1. The top compartment shows the class's name. The middle compartment lists the class's attributes. The bottom compartment lists the class's operations. When drawing a class element on a class diagram, you must use the top compartment, and the bottom two compartments are optional.



Inheritance In Class Diagram:: Inheritance is represented using a solid line and a hollow triangular arrow.To model inheritance on a class diagram, a solid line is drawn from the child class (the class inheriting the behavior) with a closed, unfilled arrowhead (or triangle) pointing to the super class. Consider types of bank accounts: Figure 2 shows how both CheckingAccount and SavingsAccount classes inherit from the BankAccount class.


Figure 2: Inheritance In UML




Interfaces In Class Diagram: Interface looks much like inheritance, except that the arrow has a dotted like tail. For exmaple From Figure 3, we can say that both ProductGroup and Company implements Sortable Interface.




Figure 3:Interfaces


Associations:

UML associations are one of the most powerful abstractions in UML, a simple line between two classes can represent something that takes hundreds of lines of Java code to implement.
The most important aspects of associations are:
  • Multiplicity(Cardinality):The multiplicity of a role indicates how many objects can participate in the relationship. For example , a school has many students and each student attends only one school.

  Cardinality Of  One(*)
  public class Student{
School school;
...
}

Cardinality Of More Then One(*)

public class School{
List student;
...
}

  • Navigability: simply means weather given an instance of an object on one side of a association you can access an instance on the other side. If a association can only be traversed in one direction then this will be indicated with arrows. If there are no arrows then the association is bi-directional.

Types Of Association:

Aggregation:
An association with an aggregation relationship indicates that one class is a part of another class. In an aggregation relationship, the child class instance can outlive its parent class. To represent an aggregation relationship, you draw a solid line from the parent class to the part class, and draw an unfilled diamond shape on the parent class's association end.


Figure 4: Aggregation Association


Composition:
The composition aggregation relationship is just another form of the aggregation relationship, but the child class's instance lifecycle is dependent on the parent class's instance lifecycle


Figure 5: Composition Association

Comments

  1. Wonderful blog & good post.Its really helpful for me, awaiting for more new post. Keep Blogging!


    Function Point Estimation Training

    ReplyDelete

Post a Comment

Popular posts from this blog

Converting Java Map to String

Java Collections framework, String manipulation etc is something that we often encounter in Development process.
For processing collections (like checking null/empty, Intersection, Disjunction) We do have some of the very use full libraries.

Some of the Collection related libraries are Apche Commons Collections and Google  Collections(Guava).

Problem Use Case

This article explains how to convert a Java Map to String(and vice versa) using different libraries and technique.

One way is to use StringBuilder(Or String) and loop though the Map and build the String by applying some sort of separator ( for key:value and entry). Here we have to take care of the null value etc.

Without Any Library
If we want to convert the map to a String with key value separator and also individual entry seperator in the resulting String, we have to write code for that. For a simple Map, we have to iterate though the map, take care of the null values etc. Following is a sample to get String built out from Map C…

Masking Credit Card number in Java

Sometimes we need to mask crucial information like Credit Card Numbers, CVV numbers etc before storing  or logging the information. This example mask Credit Card Number (Except last 4 Digit) from a Text which contains information along with Credit Card Number.

The following example demonstrates how we can easily mask the credit card with Matcher and Pattern Classes. This Sample Code uses Matcher and Pattern.
Pattern Used in this sample is not optimized for Credit Card Numbers, this pattern will get any numerical numbers in the String Content.  Based on the Credit Card Type a more efficient and Strict RegEx can be used to mask the Credit Card.
/**Mask the Credit card number but last four digit value **/   Pattern PATTERN = Pattern.compile("[0-9]+"); String message = content; Matcher matcher = PATTERN.matcher(message); String maskingChar = "*"; StringBuilder finalMask = new StringBuilder(maskingChar); while …

Invoking EJB deployed on a remote machine

Invoking EJB deployed on a remote machineIn case we are calling remote ejb( ejb deployed on remote machines),The JNDI lookup might lookup like,Properties env = new Properties();env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");env.put(Context.PROVIDER_URL, "XX.XXX.XX.XX:1099");env.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces"); Context ctx = new InitialContext(env);If we are calling local ejb then we can simply create InitialContext without any parameters.Like,Context ctx = new InitialContext();