воскресенье, 17 июля 2011 г.

Aggregation and composition in Java

http://www.celinio.net/techblog/?cat=14
I usually forget the differences between the composition and the aggregation relationships and mix them together, so here is a memento that i will share with everyone.
  • Composition : a filled diamond
  • Aggregation : an unfilled diamond
The relation between a car and a tyre is an aggregation because the tyre is still a tyre if it is not attached to a car. The tyre has a life of its own. It exists outside of a car and you can use it on another car.
The relation between a car and a carburetor is a composition because the carburetor has no use if it is out of a car.
Aggregation and composition in Java
Now more interesting is the implementation in Java of these 2 relationships :
Aggregation :
class Car {

}

class Tyre {
private  car = new Car();

}

Composition :
class Carburetor {

}

class Car{
Carburetor  carburetor = null ;
public void setCarburetor( Carburetor  carburetor )
{
this.carburetor = carburetor;
}


}

Convert from type X to type Y

integer to String :
int i = 42;
String str = Integer.toString(i);
   or
String str = "" + i
double to String :
String str = Double.toString(i);
long to String :
String str = Long.toString(l);
float to String :
String str = Float.toString(f);

String to integer :
str = "25";
   int i = Integer.valueOf(str).intValue();
   or
   int i = Integer.parseInt(str);
String to double :
Double d = Double.valueOf(str).doubleValue();
String to long :
long l = Long.valueOf(str).longValue();
   or
   Long l = Long.parseLong(str);
String to float :
Float f = Float.valueOf(str).floatValue();
decimal to binary :
int i = 42;
String bin = Integer.toBinaryString(i);
decimal to hexadecimal :
int i = 42;
   String hexstr = Integer.toString(i, 16);

   or
   String hexstr = Integer.toHexString(i);

   or (with leading zeroes and uppercase)
   public class Hex {
     public static void main(String args[]){
       int i = 42;
       System.out.print
         (Integer.toHexString( 0x10000 | i).substring(1).toUpperCase());
     }
   }
Byte array to hexadecimal string:
See this How-to hexadecimal (String) to integer :
int i = Integer.valueOf("B8DA3", 16).intValue();
   or
int i = Integer.parseInt("B8DA3", 16);     
char to String
String s = String.valueOf('c');
integer to ASCII code (byte)
char c = 'A';
int i  = (int) c; // i ==  65 DECIMAL
To extract Ascii codes from a String
String test = "ABCD";
for ( int i = 0; i < test.length(); ++i ) {
   char c = test.charAt( i );
   int j = (int) c;
   System.out.println(j);
}
integer to boolean
b = (i != 0);
// ex : 42 != 0 --> true
boolean to integer
i = (b)?1:0;
// true --> 1
Note :To catch illegal number conversion, use the try/catch mechanism :
try{
  i = Integer.parseInt(aString);
}
catch(NumberFormatException e) {
  ...
}