====== Fanorenana Informatika mampiasa ny tetika POJO faha II ======
Fanamarihana : Tsy hanazava firy ny fomba fanoratra kilasy Java sy ny atao hoe « objet » isika, satria efa nisy nanazava izany taloha ao amin’ilay lahasoratra « Andao hiresaka objet »
**Mikasika ny mpitahiry UCM :**
Tsara aloha izany asiana resaka kely ity « conteneur d’objets universels» fampiasa @ny laminasa MSL-POJO ity .
Ny fanontaniana lehibe nitadiavana valiny mantsy dia hoe :
Ahoana ny hanamorana ny fifampiresahan’ny Objet maro miaramiasa ao anatin’ny “système complexe” iray efa voasaraka sy voafaritra tsara ireo vainga mamorona azy ? “implementation” avy hatrany zany no tena valiny tadiavina eto !
Tsy nandeha lavitra isika fa manana maro raha conteneur d’objets ny API standard-ny SUN, raha tsy hitanisa afatsy : kilasy **Vector, ArrayList , HashSet**, sns …; ho ana “objets” tsotra; na **HashMap, TreeMap**, sns ; raha mitady ho ana “objets associatifs” isika.
Tsotra zany ny tetika :
UCM karazany 1:
- fantatra fa ny “objet” rehetra namboarina avy amina kilasy iray dia tokony ho voafaritra tsara daholo ny sandan’ireo “attribut”-ny avy. Azo eritreretina izany hoe andao hampidirina anaty tahirina “objets” tsotra toy ny **Vector** ohatra ny sanda tsirairain’ireo “objets” kirakiraina :
**
Ohatra :** kilasy iray antsoina hoe : **Post** manana attribut : idPost, date, titre, contenu,niveau
Raha misy objet iray post1 karazany **Post** ohatra ka manana sanda :
post1 = { “P1”, new Date(),”Laminasa POJO”,”BLA BLA BLA…”, 0}
Dia azo eritreretina fa ampidirina mitandahatra anaty conteneur Vector iray ireo attribut ireo raha toa izao no endriny rehefa tafiditra :
item1 => { “P1”, new Date(),”Laminasa POJO”,”BLA BLA BLA…”, new Integer(0) }
…….
Vector item1 = new Vector();
item1.add(“P1”); item1.add(new date());
item1.add(“Laminasa POJO”); item1.add(new Integer(0));
…….
Raha misy objet toa io hafa koa hatao toa izany ny fampidirana azy anaty **Vector** antsoina hoe **itemX** ohatra, ary indrindra mety avy amina kilasy hafa famaritana mihitsy fa tsy voatery avy @ny Post ihany (ohatra) !… dia zavatra iray no itovizany : karazany Vector daholo izireo na avy amina kilasy samihafa aza.
Farany dia hampidirina anaty **Vector** iray **itemUCM** fonosona indray ireo **itemX** maro be ireo. Dia aseho sary ambany izany ny fijery ireo mpitahiry objet antsoina hoe UCM ireo.
**Vector itemUCM = new Vector();
itemUCM.add(item1);
……………
itemUCM.add(itemX);**
{{:wiki:pojo03.png|:wiki:pojo03.png}}
Fampiharana izay tetika izay amin’ny kilasy rehetra ary dia tonga dia raisintsika io ohatra ilay kilasy **Post** tetsy ambony io miaraka @ny “methodes” afaka mampihatra ilay fijery **UCM**.
(Tsy version “production” – ny UCM no aseho eto, fa mba ahafahana mamantatra ilay fiasan’ireo méthodes no anaovana azy toa izao …)
**Fanamarihana :** Tsara mantsy rehefa voafehy tsara ilay tetika dia mampiasa ny “Refection Java” @ireo kilasy rehetra, rehefa hanamboatra ny tahiry **UCM**. (haroso eto ihany izay fika iray izay aoriana kely)
package tetikaPOJO;
import java.util.Date;
import java.util.List;
import java.util.Vector;
public class Post
{
private String idPost;
private Date datePost;
private String titre;
private String contenu;
private int niveau;
public Post() {}
public Post(String idPost,
Date datePost,
String titre,
String contenu,
int niveau)
{
this.contenu = contenu;
this.datePost = datePost;
this.idPost = idPost;
this.niveau = niveau;
this.titre = titre;
}
public String getContenu() {
return contenu;
}
public void setContenu(String contenu) {
this.contenu = contenu;
}
public Date getDatePost() {
return datePost;
}
public void setDatePost(Date datePost) {
this.datePost = datePost;
}
public String getIdPost() {
return idPost;
}
public void setIdPost(String idPost) {
this.idPost = idPost;
}
public int getNiveau() {
return niveau;
}
public void setNiveau(int niveau) {
this.niveau = niveau;
}
public String getTitre() {
return titre;
}
public void setTitre(String titre) {
this.titre = titre;
}
public String toString()
{
return "Post : "+idPost+":"+datePost+":"+titre+":"+contenu+"|"+niveau;
}
/**
* Placer les attributs de cet objet dans un Vector et le renvoie
* @return type Vector
*/
public List toVector()
{
Vector v = new Vector();
v.add(this.idPost); v.add(this.datePost); v.add(this.titre);
v.add(this.contenu); v.add(new Integer(this.niveau));
return v;
}
/**
* Parser le contenu d'un vector pour produire les attributs de l'objet courant
* @param v vector devant être conforme UCM
* @return reproduire l'objet correspondant
*/
public Post formVector(List v)
{
try
{
this.setIdPost(v.get(0).toString());
this.setDatePost((Date)v.get(1));
this.setTitre(v.get(2).toString());
this.setContenu(v.get(3).toString());
this.setNiveau(((Integer)v.get(4)).intValue());
return this;
}
catch(Exception e)
{
return null;
}
}
static public void main(String arg[])
{
Post post1 = new Post("P1",new Date(),"Laminasa POJO","BLA BLA BLA ...",2);
System.out.println(post1+"\nVector :"+post1.toVector()+
"\nFromVecor :"+post1.formVector(post1.toVector()));
}
}