drspinoza
Messages postés51Date d'inscriptiondimanche 25 octobre 2015StatutMembreDernière intervention 9 mai 2016
-
17 févr. 2016 à 20:50
Utilisateur anonyme -
19 févr. 2016 à 21:37
Bonjour,
Je m'explique.
J'ai 2 classe et une interface.
Une classe Personne qui implemente une interface Individu et qui crée un objet de cette forme :
public class Personne implements Individu {
private String nom;
private ArrayList<String> prenoms;
private Date dateNaissance;
private int reference;
private int parent1;
private int parent2;
public Personne(String nom, ArrayList<String> prenoms, Date date, int ref) {
this.nom = nom;
this.prenoms = prenoms;
this.dateNaissance = date;
this.reference = ref;
this.parent1 = -1;
this.parent2 = -1;
}
public Personne(String nom, ArrayList<String> prenoms, Date date) {
this(nom, prenoms, date, -1);
}
@Override
public void definirParent1(int ref) {
this.parent1 = ref;
}
/*et d'autres methodes getter et setter
J'ai ensuite une interface Genealogie.
Il s'agit d'une interface qu'on me demande d'implanter.
En résumer elle permet de lier les objets entre eux ( Parents , Frere, Enfants ... )
C'est maintenant que j'ai besoin de votre aide il faut que je crée une classe qui implémente Genealogie et qui est de cette forme :
public class Gen <U extends Individu> implements Genealogie<U> {
private ArrayList<U> Liste;
public Gen(){
Liste = new ArrayList<U>();
}
public int nombreIndividus() {
return Liste.size();
}
public ArrayList<U> lesIndividus() {
return Liste;
}
public U lIndividu(int pos) {
return Liste.get(pos);
}
public ArrayList<U> lesParents(U moi) {}
public ArrayList<U> laFratrie(U moi) {}
public ArrayList<U> lesEnfants(U p1, U p2) {}
public void ajout(U moi) {
Liste.add (moi);
}
public void definirParent1(U moi, U parent1) {}
public void definirParent2(U moi, U parent2) {}
}
Le problème et que je n'arrive pas à créer un objet Personne et ensuite le modifier et l'utiliser.
J'aimerai mieu comprendre la façon dont je doit procéder pour pouvoir répondre à ce test par exemple.
Voici une partie du test que je tente de valider :
public class TestGenealogie {
private Personne p1;
private Personne p2;
private Personne p3;
private Personne p4;
private Personne p5;
public void setUp() throws Exception {
ArrayList<String> prenoms = new ArrayList<String>();
DateFormat dfm = new SimpleDateFormat("Y");
dfm.setTimeZone(TimeZone.getTimeZone("Canada/Montreal"));
try {
p1 = new Personne("e1",null, dfm.parse("1990"));
p2 = new Personne("e2",null, dfm.parse("1994"));
p3 = new Personne("p1",null, dfm.parse("1970"));
p4 = new Personne("p2",null, dfm.parse("1972"));
prenoms.add("pr1");
prenoms.add("pr2");
p5 = new Personne("gp1",prenoms, dfm.parse("1945"));
} catch (ParseException e) {
e.printStackTrace();
}
@Test
public void testDefinirParent1() {
Gen<Personne> g = new Gen<Personne>();
g.ajout(p1);
g.ajout(p2);
g.ajout(p3);
g.definirParent1(p1, p3);
ArrayList<Personne> e = new ArrayList<Personne>();
e.add(p1);
assertEquals(e, g.lesEnfants(p3, null));
assertEquals(e, g.lesEnfants(null, p3));
}
@Test
public void testLesParents() {
Gen<Personne> g = new Gen<Personne>();
g.ajout(p1);
g.ajout(p2);
g.ajout(p3);
g.ajout(p4);
ArrayList<Personne> e = new ArrayList<Personne>();
e.add(null);
e.add(null);
assertEquals(e, g.lesParents(p1));
e = new ArrayList<Personne>();
e.add(p3);
e.add(null);
g.definirParent1(p1, p3);
assertEquals(e,g.lesParents(p1));
e = new ArrayList<Personne>();
e.add(null);
e.add(p4);
g.definirParent2(p2,p4);
assertEquals(e,g.lesParents(p2));
e = new ArrayList<Personne>();
g.definirParent2(p1, p4);
e = new ArrayList<Personne>();
e.add(p3);
e.add(p4);
assertEquals(e, g.lesParents(p1));
}
@Test
public void testLaFratrie() {
Gen<Personne> g = new Gen<Personne>();
g.ajout(p1);
g.ajout(p2);
g.ajout(p3);
g.definirParent1(p1, p3);
g.definirParent2(p1, p4);
ArrayList<Individu> e = new ArrayList<Individu>();
assertEquals(e,g.laFratrie(p1));
g.definirParent1(p2, p3);
g.definirParent2(p2, p4);
e.add(p1);
assertEquals(e,g.laFratrie(p2));
e = new ArrayList<Individu>();
g = new Gen<Personne>();
g.ajout(p1);
g.ajout(p2);
g.ajout(p3);
g.ajout(p4);
g.definirParent1(p1, p3);
g.definirParent2(p1, p4);
g.definirParent1(p2, p3);
g.definirParent2(p2, null);
assertEquals(e,g.laFratrie(p1));
e = new ArrayList<Individu>();
g = new Gen<Personne>();
g.ajout(p1);
g.ajout(p2);
g.ajout(p3);
g.ajout(p4);
g.definirParent2(p1, p4);
g.definirParent1(p2, p4);
g.definirParent1(p1, null);
g.definirParent2(p2, null);
e.add(p1);
assertEquals(e,g.laFratrie(p2));
}
}
Toute aide est la bienvenue cela fait plusieurs jour que je suis bloqué.
Je sais que ma question est longue, juste un petit indice ou guide m'aiderai fortement.
C'est ce que j'ai fait mais ça ne fonctionne pas.
Je sais pas si c'est à cause de la genericité mais quand j'utilise les méthodes setter d'un objet Personne on dirait que ceului-ci devient vide et n'est plus utilisable dans mes boucles.
Par exemple voila ce que j'ai fait pour definirParent1:
public class Gen <U extends Individu> implements Genealogie<U> {
private ArrayList<U> Liste;
public Gen() {
Liste=new ArrayList<U>();
}
public void definirParent1(U moi, U parent1) {
try{
moi.definirParent1(Liste.indexOf(parent1));
}catch(NullPointerException e){}
}
Modifié par drspinoza le 18/02/2016 à 19:36
Je sais pas si c'est à cause de la genericité mais quand j'utilise les méthodes setter d'un objet Personne on dirait que ceului-ci devient vide et n'est plus utilisable dans mes boucles.
Par exemple voila ce que j'ai fait pour definirParent1:
Modifié par Help-Jason le 19/02/2016 à 21:38