ObjectManagement PDF
ObjectManagement PDF
Association
An association represents a family of links. Binary associations
(with two ends) are normally represented as a line, with each end
connected to a class box. Higher order associations can be drawn
with more than two ends. In such cases, the ends are connected to a
central diamond (aggregation).
An association can be named, and the ends of an association can be
adorned with role names, ownership indicators, multiplicity,
visibility, and other properties.
Associations can only be shown on class diagrams.
Tiberiu Leia: Software engineering Object management
Place a small dot on the junction point along with a note on the
dependency.
Dependency is a model-level relationship and not a run-time
relationshipdescribing the need to investigate the model
definition of the client element for possible changes if the model
definition of the supplier element is changed.
Tiberiu Leia: Software engineering Object management
call UML2: The client (an operation) may call the supplier (an
operation)
create UML2: The client (a classifier) may create instances of
the supplier (a classifier)
derive UML2: The client (e.g., attribute value, link) may be
computed from the supplier(s)
instantiate UML2: Operations of the client (a classifier) may
create instances of the supplier (a classifier)
refine UML2: The client element(s) are at a "later" semantic
level than the supplier(s)
send UML2: The client (an operation) sends the supplier (a
signal)
association
ClasaA
role
1 *
ClasaB
+operation(argList): returnType
cardinality
MainClass
+main()
class ClasaA {
ClasaB asoc;
public Atrib attrib=new Atrib();
ClasaA(ClasaB b) {
asoc=b;
.........}
public void metA() {
asoc.metB();//merge?
Atrib x=asoc.atrib;//merge?
}
}
class ClasaB {
public Atrib attrib=new Atrib();
ClasaB() {........}
public void metB() {............}
}
Atrib
ClasaA
ClasaB
+attrib: Atrib
+attrib: Atrib
+metA()
+metA()
TestObjectArray
+refB: ClasaB
+refA: ClasaA
ClasaA
ClasaB
MainClass
+main()
n (unlimited) objects of
type ClasaB
10
class ClasaA {
ClasaB asocB;
public Atrib attrib=new Atrib();
ClasaA(ClasaB b) {
asocB=b;
.........}
public void metA() {
asoc.metB();
Atrib x=asoc.atrib;
}
}
ClasaA
ClasaB
MainClass
class ClasaB {
public Atrib attrib=new Atrib();
ClasaA asocA;
ClasaB(ClasaA a) {
asocA=a;
........}
public void metB() {............}
}
public class MainClass {
public static void main(String[] args) {
ClasaB refB=new
ClasaB(refA);//???
ClasaA refA=new ClasaA(refB);
refb.metB();
}
}
+main()
Does it work ?
11
class ClasaA {
ClasaB asocB;
ClasaA(ClasaB b) {
asocB=b;
.........}
public associateB(ClasaB b) {
asocB=b;
}
public void metA() {
Atrib x=asocB.attrib; //merge?
}
}
public class MainClass {
public static void main(String[] args) {
ClasaB refB=new ClasaB();
ClasaA refA=new ClasaA();
refB.associateA(refA);
refA.associateB(refB);
//call method of refA, refB
}
Tiberiu Leia: Software engineering Object management
}
class ClasaB {
public Atrib attrib=new Atrib();
ClasaA asocA;
ClasaB(ClasaA a) {
asocA=a;
........}
public associateA(ClasaA a) {
asocA=a;
}
public void metB() {
asocA.metA();//merge?
}
}
How can be implemented if an object of
ClasaA must be associated with:
10 objects of ClasaB
n (unlimited) objects of ClasaB
What does it happen if metA() is called
before association?
Class diagrams describe a static
12
situation!
in
composition
(indirect
13
14
15
Class accessibility
A high level class can be endowed only with public modifier.
A class that is not public can be used only by instances of other
classes from the same package.
It can be extended by classes of the same package.
A class can be declared public to be accessible by all instances of
all packages.
public modifier for a high level class makes it visible and
accessible everywhere.
A class not declared public is visible only in the package where
it was defined. In a file with more classes only one can be public.
Inner classes may have the modifiers private, protected and
static as any member.
Tiberiu Leia: Software engineering Object management
16
17
Access level
public
private
protected
18
final
static final
Construction
Each object instance
A single construction
for all the objects of
this type (this class,
only in the class).
For each object
instantiation.
A single construction
for all the objects of
this type
Access
For the object that has declared and
subclasses that instantiate the object
Accessible for all the objects
instantiated with this template
19
20
2. Data Structures
a. Arrays
b. Lists
c. Sets
d. Mappings
.
21
refArray
insert ?
Types of arrays:
with primitive data
with objects
E.g.. Array:
int[] refTablou=new int[10]; //dimensiunea tabloului este 10 (elemente)
refTablou[0]=2;
refTablou[1]=3;
Tiberiu Leia: Software engineering Object management
22
Construction by enumeration:
int refTablou={2,3,4,1};
int k=refTablou[2];// k=2
Problem: element insertion
23
refTablou
object
reference
insert ?
obiect1:Clasa1
obiect2:Clasa2
24
Implementation:
Class1 refObiect1=new Class1();
Class1 refObiect2=new Class1();
Arrays with objects of the same type:
Class1[] refTabCuObiecte=new Class1[10];
//add objects in array
refTabCuObiecte[1]=refObiect1;
refTabCuObiecte[2]=refObiect2;
//attach the object to another reference
Class1 ob1=refTabCuObiecte[2];
//the object can be referred by refObiect1 or ob1
Tiberiu Leia: Software engineering Object management
25
26
27
System.out.println("Object
of ClasaB");
}
public void metA(){
System.out.println("metA()
of ClasaB");
}
public void metB(){
System.out.println("metB()of
ClasaB");
}
}
+metA()
+metB()
ClasaA
+metA()
+metB()
ClasaB
+metA()
+metB()
TestObjectArray
+ob1: ClasaA
+ob2: ClasaB
+tabCuObiecte: ClasaBaza[10]
+obNou: ???
28
29
30
31
ClasaA
+metA()
+metB()
ClasaB
+metA()
+metB()
TestObjectArray
+tabCuObiecte: Object[10]
+ob1: ClasaA
+ob2: ClasaB
+obNou: ???
32
33
E.g.:
int[] tabInt=new int[10];
Arrays.fill(tabInt,0,2,5);
Arrays.fill(tabInt,2,5,1);
Arrays.fill(tabInt,4,8,3);
Arrays.fill(tabInt,8,10,2);
Arrays.sort(tabInt,0,9);
34
next
previo
us
refObi
remove ?
insert ?
ect
Head = antet
next
next
next
previous
previous
previous
refObiect
refObiect
refObiec
t
obiect1:Clasa1
obiect2:Clasa2
Tiberiu Leia: Software engineering Object management
obiect3:Clasa3
35
List
PersTelephone
ListNode
+name: String
element +nrTelephone: String
+isEmpty()
+find()
+insert()
+remove()
+toString()
current
n
ListIterator
+retrieve()
+advance()
MainClass
+main()
36
Interface Collection
Interfaa Collection din java.util este utilizat pentru a transfera colecii i a
le manevra. Interfaa Collection are definite metodele:
add(Object a) - garanteaz c respectiva colecie are elementul specificat
(returneaz false n caz contrar)
addAll(Collection c) adaug ntreaga colecie c
clear() elimin toate elementele din colecie
contains(Object o) returneaz true dac n colecie exist elementul
specificat
containsAll(Collection c)
equals(Object o)- compar obiectul o dac este egal cu ntreaga colecie
hashCode() returneaz valoarea codului hash pentru colecia curent
isEmpty()
iterator() returneaz un iterator pentru elementele coleciei
remove(Object o)
removeAll(Collection c)
Tiberiu Leia: Software engineering Object management
37
38
Class ArrayList
din java.util implementeaz interfeele Cloneable, Collection, List i
Serializable.
Are constructorii:
ArrayList() creeaz o list vid
ArrayList(Collection c) creeaz o list care include o colecie
ArrayList(int initialCapacity) creeaz o list cu o capacitate
garantat
39
40
lastIndexOf(Object element)
remove(int index)
removeRange(int fromIndex, int toIndex)
set(int index, Object element)
size() returneaz numrul de elemente
toArray() returneaz un tablou coninnd toate elementele din
list n ordinea corect
toArray(Object[] a)
41
E.g..:
Collection c1=new ArrayList();
c1.add("nume1");//introduce elemente in
tablou
c1.add("nume2");
c1.add("nume3");
Collection c2=new ArrayList();
c2.add("nume4");//introduce elemente in
tablou
c2.add("nume5");
c2.add("nume6");
c1.addAll(c2);
String st=Collections.max(c1);
Tiberiu Leia: Software engineering Object management
42
Interface ListIterator
Extinde interfaa Iterator. Cu ea se creeaz un iterator pentru liste
care permite traversarea acestora n ambele direcii.
Are metodele:
void add(Object o) insereaz elementul n list
boolean hasNext()
boolean hasPrevious()
Object next()
int nextIndex()
Object previous()
int previousIndex()
void remove()
void set(Object o)
Tiberiu Leia: Software engineering Object management
43
Class LinkedList
void add(int index, Object element) insereaz un element n
poziia specificat
boolean add(Object o) adaug elementul o la coada listei
boolean addAll(Collection c) adaug toate elementele din c
boolean addAll(int index, Collection c) adaug toate elementele
din c la poziia dat de indice
boolean addFirs(Object o)
boolean addLast(Object o)
void clear()
Object clone()
boolean contains(Object o)
boolean containsAll(Collection c)
boolean equals(Object o)
Tiberiu Leia: Software engineering Object management
44
45
boolean remove(Object o)
Object removeFirst()
boolean removeFirst()
boolean removeAll(Collection c)
boolean retainAll(Collection c) reine numai elementele din list
care sunt coninute n colecia specificat
Object set(int index, Object element) nlocuiete elementul din
poziia specificat cu elementul precizat i returneaz elementul
care era anterior n acea poziie
int size() returneaz numrul de elemente din list
List subList(int from Index, int toIndex) returneaz o imagine a
unei pri din list ntre indicii precizai (exclusiv)
Object toArray() returneaz un tablou coninnd toate elementele
din list
Object[] toArray(Object[] o)
Tiberiu Leia: Software engineering Object management
46
Titanic Problem
Two classes with passengers: Clasa1 and Clasa2
Criteria of the passenger order:
female age 5
male age
E.g. Ana is 33 years old; Dan is 33; Gelu is 26
Order: Gelu < Ana < Dan
Use static method sort(lista, comparator) of Collection.
47
48
49
else temp2=doi.age;
if(temp1<temp2) rez=-1;
if(temp1>temp2) rez=1;
if(temp1==temp2) rez=0;
return rez;
}
public boolean equals(Object x)
{
if(temp1==temp2) return true;
else return false;
}
}
50
/* Titanic*/
import java.util.*;
public class MainClass {
public static void main(String[] args) {
ArrayList cl1=new ArrayList();
ArrayList cl2=new ArrayList();
Calator c1=new Calator("Pop V.",15, 'm',1);
Calator c2=new Calator("Ion A.",20, 'f',2);
Calator c3=new Calator("Nume1 D.",17, 'f',1);
Calator c4=new Calator("Nume2 M.",45, 'm',2);
Calator c5=new Calator("Nume4 G.",23, 'f',2);
Calator c6=new Calator("Nume5 I.",60, 'f',2);
Calator c7=new Calator("Nume6 O.",21, 'm',1);
Calator c8=new Calator("Nume7 X.",54, 'm',1);
cl1.add(c1);
cl2.add(c2);
cl1.add(c3);
cl2.add(c4);
cl2.add(c5);
cl2.add(c6);
Tiberiu Leia: Software engineering Object management
51
cl1.add(c7);
cl1.add(c8);
System.out.println("Traveller List clasa 1 is:");
ListIterator iterator=cl1.listIterator();
while(iterator.hasNext())
{
Calator cal=(Calator)iterator.next();
System.out.println(cal);
}
System.out.println("Traveller List clasa 2 is:");
ListIterator iterator2=cl2.listIterator();
while(iterator2.hasNext())
{
Calator cal=(Calator)iterator2.next();
System.out.println(cal);
}
ArrayList join=new ArrayList();
join.addAll(cl1);
join.addAll(cl2);
ListIterator iterator3=join.listIterator();
Tiberiu Leia: Software engineering Object management
52
53
Calator
Comparator <<interface>>
+varsta: int
+sex: char
+cls: int
+compare(): int
+equals(): boolean
+toString(): String
*
Comparare
+rez: int
+temp1: int
+temp2: int
MainClass
+ci: Calator
+cl1: ArrayList
+cl2: ArrayList
+compare(): int
+equals(): boolean
+main()
How is that performed?
2
ArrayList
+add(Object)
+addAll(Collection)
Collections
+sort(List, Comparator)
54
Valoare - Value
refObiectValoare
obiect2:Class2
55
56
57
Utilizare:
se creeaz obiectele
se creeaz tabelul Hashtable
se introduc in Hashtable
se efectueaz cutri ale obiectelor in tabel
se listeaz tot tabelul
58
Ex.:
//clasa pentru construirea unui obiect cu
nume si adresa
class NumeAdr {
String nume;
String adr;
NumeAdr(String numeAbon, String adrAbon) {
nume=new String(numeAbon);
adr=new String(adrAbon);
}
public String toString() {
return (nume+"; adresa="+adresa);
}
}
Tiberiu Leia: Software engineering Object management
59
60
adresa=new String(na.adr);
System.out.println("\nPersoana cu numarul 06412345 este:" +abonat);
System.out.println("Locuieste la dresa"+adresa);
na=(NumeAdr) tabH.get("064-34567");
abonat=new String(na.nume);
adresa=new String(na.adr);
System.out.println("\nPersoana cu numarul 06434567 este:" +abonat);
System.out.println("Locuieste la dresa"+adresa);
//enumereaza toate elementele din tabela
System.out.println("\nTabel cu persoanele
cuprinse in tabela:");
Enumeration en;
for(en=tabH.elements();en.hasMoreElements();)
System.out.println(
Tiberiu Leia: Software engineering Object management
61
((NumeAdr)en.nextElement()).nume);
}
}
62
NumeNrTelefon
+tabH: Hashtable
+main(): void
Hashtable
+put()
+get(): Object
1..*
NumeAdr
+abonat: String
+adresa: String
+toString(): String
<<Interface>>
Enumeration
+elements(): Object
+hasMoreElements(): boolean
+nextElement(): Object
63
Class HashMap
Implementeaz interfaa Map().Aceast interfa are definite metodele:
put(Object key, Object value) - depune o pereche cheie-valoare
get(Object key) - furnizeaz obiectul aflat n poziia dat de cheie
containsKey() - returneaz true dac exist cheia n HashMap
containsValue() - returneaz true dac exist valoarea respectiv n HashMap
clear()
clone();
entrySet()
putAll()
remove()
size()
64
*
****
***END***
****
*
Tiberiu Leia: Software engineering Object management
65