Commit 3d50573a authored by Aroubate Hamza's avatar Aroubate Hamza
Browse files

Tp3

parent 71c3bb5f
...@@ -6,7 +6,7 @@ import fr.insarouen.asi.prog.asiaventure.elements.vivants.*; ...@@ -6,7 +6,7 @@ import fr.insarouen.asi.prog.asiaventure.elements.vivants.*;
public class ClassMain { public class ClassMain {
public static void main (String[] args){ public static void main (String[] args){
try{
System.out.println("############"); System.out.println("############");
System.out.println("##TestMain##"); System.out.println("##TestMain##");
System.out.println("############"); System.out.println("############");
...@@ -201,7 +201,6 @@ public class ClassMain { ...@@ -201,7 +201,6 @@ public class ClassMain {
System.out.println("############"); System.out.println("############");
}
catch(NomDEntiteDejaUtiliseDansLeMondeException e){ catch(NomDEntiteDejaUtiliseDansLeMondeException e){
System.err.println(e); System.err.println(e);
} }
......
...@@ -9,13 +9,27 @@ public class Monde { ...@@ -9,13 +9,27 @@ public class Monde {
private String nom; private String nom;
private Entite[] tableauEntites = new Entite [0]; private Entite[] tableauEntites = new Entite [0];
/**
* Constructeur de Monde
* @param nom nom du monde
*/
public Monde(String nom){ public Monde(String nom){
this.nom = nom; this.nom = nom;
} }
/**
* GetNom Getter du nom du monde
* @return nom du monde
*/
public String getNom(){ public String getNom(){
return this.nom; return this.nom;
} }
/**
* GetEntite cherche une entite par son nom
* @param nom nom de l'entite a rechercher
* @return Entite cherche
*/
public Entite getEntite(String nom){ public Entite getEntite(String nom){
boolean trouve = false; boolean trouve = false;
int i = 0; int i = 0;
...@@ -32,6 +46,12 @@ public class Monde { ...@@ -32,6 +46,12 @@ public class Monde {
return null; return null;
} }
/**
* Ajouter ajoute une entite dans le monde
* @param nouvelleEntite l'entite a rechercher
* @throws NomDEntiteDejaUtiliseDansLeMondeException
* @throws EntiteDejaDansUnAutreMondeException
*/
public void ajouter(Entite nouvelleEntite) public void ajouter(Entite nouvelleEntite)
throws NomDEntiteDejaUtiliseDansLeMondeException, throws NomDEntiteDejaUtiliseDansLeMondeException,
EntiteDejaDansUnAutreMondeException { EntiteDejaDansUnAutreMondeException {
...@@ -53,6 +73,10 @@ public class Monde { ...@@ -53,6 +73,10 @@ public class Monde {
tableauEntites = tmp; tableauEntites = tmp;
} }
/**
* toString créer un String décrivant le monde
* @return le String de description
*/
public String toString(){ public String toString(){
String resultat; String resultat;
resultat = " Nom : "+ this.getNom() + ";\n"; resultat = " Nom : "+ this.getNom() + ";\n";
......
...@@ -10,7 +10,13 @@ public abstract class Entite { ...@@ -10,7 +10,13 @@ public abstract class Entite {
private String nom; private String nom;
private Monde monde; private Monde monde;
public Entite(String nom, Monde monde)throws NomDEntiteDejaUtiliseDansLeMondeException{ /**
* Constructeur de l'entite
* @param nom nom de l'entite
* @param monde monde de l'entite
* @throws NomDEntiteDejaUtiliseDansLeMondeException
*/
public Entite(String nom, Monde monde) throws NomDEntiteDejaUtiliseDansLeMondeException{
this.nom = nom; this.nom = nom;
if (monde.getEntite(nom) != null){ if (monde.getEntite(nom) != null){
...@@ -23,12 +29,26 @@ public abstract class Entite { ...@@ -23,12 +29,26 @@ public abstract class Entite {
} }
/**
* getNom Getter du nom de l'entite
* @return nom de l'entite
*/
public String getNom(){ public String getNom(){
return this.nom; return this.nom;
} }
/**
* getMonde Getter du monde de l'entite
* @return monde de l'entite
*/
public Monde getMonde(){ public Monde getMonde(){
return this.monde; return this.monde;
} }
/**
* equals Compare deux Object (!= Objet)
* @return un boolean true/false en fonction de la similarité
*/
public boolean equals(Object o){ public boolean equals(Object o){
if (o == null || o.getClass()!=this.getClass()){ if (o == null || o.getClass()!=this.getClass()){
return false; return false;
...@@ -37,6 +57,10 @@ public abstract class Entite { ...@@ -37,6 +57,10 @@ public abstract class Entite {
return nom.equals(e.nom) && monde.equals(e.monde); return nom.equals(e.nom) && monde.equals(e.monde);
} }
/**
* toString créer un String décrivant l'entite
* @return le String de description
*/
public String toString(){ public String toString(){
return "Nom : "+this.nom; return "Nom : "+this.nom;
} }
......
...@@ -9,11 +9,21 @@ import fr.insarouen.asi.prog.asiaventure.elements.structure.*; ...@@ -9,11 +9,21 @@ import fr.insarouen.asi.prog.asiaventure.elements.structure.*;
public abstract class Objet extends Entite{ public abstract class Objet extends Entite{
/**
* Constructeur de l'objet
* @param nom nom de l'objet
* @param monde monde de l'objet
* @throws NomDEntiteDejaUtiliseDansLeMondeException
*/
public Objet(String nom, Monde monde) public Objet(String nom, Monde monde)
throws NomDEntiteDejaUtiliseDansLeMondeException{ throws NomDEntiteDejaUtiliseDansLeMondeException{
super(nom,monde); super(nom,monde);
} }
/**
* estDeplacable méthode a redéfinir pour chaque objet
* @return boolean indiquant si l'objet est deplacable ou non
*/
public abstract boolean estDeplacable(); public abstract boolean estDeplacable();
......
...@@ -8,11 +8,21 @@ import fr.insarouen.asi.prog.asiaventure.elements.vivants.*; ...@@ -8,11 +8,21 @@ import fr.insarouen.asi.prog.asiaventure.elements.vivants.*;
import fr.insarouen.asi.prog.asiaventure.elements.structure.*; import fr.insarouen.asi.prog.asiaventure.elements.structure.*;
public class PiedDeBiche extends Objet{ public class PiedDeBiche extends Objet{
/**
* Constructeur de l'objet pied de biche
* @param monde monde de l'objet
* @throws EntiteDejaDansUnAutreMondeException
*/
public PiedDeBiche(String nom, Monde monde) public PiedDeBiche(String nom, Monde monde)
throws NomDEntiteDejaUtiliseDansLeMondeException{ throws NomDEntiteDejaUtiliseDansLeMondeException{
super(nom, monde); super(nom, monde);
} }
/**
* estDeplacable redefinition de la méthode abstraite de Objet
* @return true pour deplacable, false sinon
*/
public boolean estDeplacable(){ public boolean estDeplacable(){
return true; return true;
} }
......
...@@ -8,11 +8,14 @@ import fr.insarouen.asi.prog.asiaventure.elements.vivants.*; ...@@ -8,11 +8,14 @@ import fr.insarouen.asi.prog.asiaventure.elements.vivants.*;
import fr.insarouen.asi.prog.asiaventure.elements.structure.*; import fr.insarouen.asi.prog.asiaventure.elements.structure.*;
public abstract class ElementStructurel extends Entite{ public abstract class ElementStructurel extends Entite{
/**
* Constructeur de l'element structurel de base
* @param nom nom de l'element
* @param monde monde de l'element
* @throws NomDEntiteDejaUtiliseDansLeMondeException
*/
public ElementStructurel(String nom, Monde monde) public ElementStructurel(String nom, Monde monde)
throws NomDEntiteDejaUtiliseDansLeMondeException{ throws NomDEntiteDejaUtiliseDansLeMondeException{
if(monde.getEntite(nom) != null){
throw
}
super(nom, monde); super(nom, monde);
} }
} }
...@@ -15,10 +15,20 @@ public class Piece extends ElementStructurel { ...@@ -15,10 +15,20 @@ public class Piece extends ElementStructurel {
private Objet[] tableauObjet = new Objet[0]; private Objet[] tableauObjet = new Objet[0];
private Vivant[] vivants = new Vivant[0]; private Vivant[] vivants = new Vivant[0];
/**
* Constructeur de la piece
* @param nom nom de la piece
* @param monde monde de la piece
* @throws NomDEntiteDejaUtiliseDansLeMondeException
*/
public Piece (Monde _monde, String _nom) throws NomDEntiteDejaUtiliseDansLeMondeException { public Piece (Monde _monde, String _nom) throws NomDEntiteDejaUtiliseDansLeMondeException {
super( _nom, _monde); super( _nom, _monde);
} }
/**
* deposer depose un objet dans la piece
* @param obj objet a deposer
*/
public void deposer(Objet _objet){ public void deposer(Objet _objet){
Objet[] tmp = new Objet[tableauObjet.length+1]; Objet[] tmp = new Objet[tableauObjet.length+1];
for (int i = 0 ; i < tableauObjet.length ; i++) for (int i = 0 ; i < tableauObjet.length ; i++)
...@@ -28,11 +38,20 @@ public class Piece extends ElementStructurel { ...@@ -28,11 +38,20 @@ public class Piece extends ElementStructurel {
tableauObjet = tmp; tableauObjet = tmp;
} }
public Objet retirer(String nomObjet)throws ObjetAbsentDeLaPieceException, /**
ObjetNonDeplacableException{ * retirer retire un objet dans la piece par son nom
* @param nom nom de l'objet a retirer de la piece
* @return objet retire
* @throws ObjetNonDeplacableException
* @throws ObjetAbsentDeLaPieceException
*/
public Objet retirer(String nomObjet)throws ObjetAbsentDeLaPieceException, ObjetNonDeplacableException{
int k = 0; int k = 0;
Objet result = null; Objet result = null;
Objet[] tmp = new Objet[tableauObjet.length-1]; Objet[] tmp = new Objet[tableauObjet.length-1];
if (!obj.estDeplacable())
throw new ObjetNonDeplacableException();
else if (contientObjet(obj)){
for (int i = 0; i < tableauObjet.length ; i++) for (int i = 0; i < tableauObjet.length ; i++)
if (!tableauObjet[i].getNom().equals(nomObjet)){ if (!tableauObjet[i].getNom().equals(nomObjet)){
tmp[k]= tableauObjet[i]; tmp[k]= tableauObjet[i];
...@@ -41,18 +60,40 @@ public class Piece extends ElementStructurel { ...@@ -41,18 +60,40 @@ public class Piece extends ElementStructurel {
else else
result = tableauObjet[i]; result = tableauObjet[i];
tableauObjet = tmp; tableauObjet = tmp;
}else {
throw new ObjetAbsentDeLaPieceException();
}
return result; return result;
} }
public Objet retirer(Objet _objet)throws ObjetAbsentDeLaPieceException, /**
ObjetNonDeplacableException { * retirer retire un objet dans la piece
return this.retirer(_objet.getNom()); * @param obj objet a retirer de la piece
* @return objet retire
* @throws ObjetNonDeplacableException
* @throws ObjetAbsentDeLaPieceException
*/
public Objet retirer(Objet _objet)throws ObjetAbsentDeLaPieceException, ObjetNonDeplacableException {
if (_objet.getNom().equals(nom)) {
return retirer(_objet.getNom());
}
return null;
} }
/**
* contientObjet verifie si la piece contient un objet
* @param obj objet a chercher
* @return un boolean pour la reponse
*/
public boolean contientObjet(Objet obj) { public boolean contientObjet(Objet obj) {
return contientObjet(obj.getNom()); return contientObjet(obj.getNom());
} }
/**
* contientObjet verifie si la piece contient un objet
* @param nom nom de l'objet a chercher
* @return un boolean pour la reponse
*/
public boolean contientObjet(String nom) { public boolean contientObjet(String nom) {
for (int i = 0; i<this.tableauObjet.length; i++) for (int i = 0; i<this.tableauObjet.length; i++)
if (this.tableauObjet[i].getNom().equals(nom)) if (this.tableauObjet[i].getNom().equals(nom))
...@@ -60,26 +101,45 @@ public class Piece extends ElementStructurel { ...@@ -60,26 +101,45 @@ public class Piece extends ElementStructurel {
return false; return false;
} }
/**
* getObjets Getter de la liste des objets dans la piece
* @return la liste des objets dans la piece
*/
public Objet[] getObjets() { public Objet[] getObjets() {
return this.tableauObjet; return this.tableauObjet;
} }
/**
* entrer fait entrer dans la piece un nouveau vivant
* @param vivant vivant a faire entrer
*/
public void entrer(Vivant vivant) { public void entrer(Vivant vivant) {
Vivant[] tmp = Arrays.copyOf(vivants, vivants.length + 1); Vivant[] tmp = Arrays.copyOf(vivants, vivants.length + 1);
tmp[vivants.length] = vivant; tmp[vivants.length] = vivant;
vivants = tmp; vivants = tmp;
} }
/**
* sortir retire un vivant de la piece
* @param vivant vivant a faire sortir
* @return vivant sortis
* @throws VivantAbsentDeLaPieceException
*/
public Vivant sortir(Vivant vivant) throws VivantAbsentDeLaPieceException{ public Vivant sortir(Vivant vivant) throws VivantAbsentDeLaPieceException{
return sortir(vivant.getNom()); return sortir(vivant.getNom());
} }
/**
* sortir retire un vivant de la piece par son nom
* @param nom nom du vivant a faire sortir
* @return vivant sortis
* @throws VivantAbsentDeLaPieceException
*/
public Vivant sortir(String nom) throws VivantAbsentDeLaPieceException{ public Vivant sortir(String nom) throws VivantAbsentDeLaPieceException{
int k = 0; int k = 0;
Vivant result = null; Vivant result = null;
Vivant[] tmp = new Vivant[vivants.length-1]; Vivant[] tmp = new Vivant[vivants.length-1];
if (contientVivant(nom)){
for (int i = 0; i < vivants.length ; i++) for (int i = 0; i < vivants.length ; i++)
if (!vivants[i].getNom().equals(nom)){ if (!vivants[i].getNom().equals(nom)){
tmp[k]= vivants[i]; tmp[k]= vivants[i];
...@@ -88,13 +148,26 @@ public class Piece extends ElementStructurel { ...@@ -88,13 +148,26 @@ public class Piece extends ElementStructurel {
else else
result = vivants[i]; result = vivants[i];
vivants = tmp; vivants = tmp;
} else {
throw new VivantAbsentDeLaPieceException();
}
return result; return result;
} }
/**
* contientVivant verifie si la piece contient un vivant
* @param vivant vivant a chercher
* @return un boolean, true pour trouve, false sinon
*/
public boolean contientVivant(Vivant vivant) { public boolean contientVivant(Vivant vivant) {
return contientVivant(vivant.getNom()); return contientVivant(vivant.getNom());
} }
/**
* contientVivant verifie si la piece contient un vivant d'un certain nom
* @param nom nom du vivant a chercher
* @return un boolean, true pour trouve, false sinon
*/
public boolean contientVivant(String nom) { public boolean contientVivant(String nom) {
for (int i = 0; i<vivants.length; i++) { for (int i = 0; i<vivants.length; i++) {
if (vivants[i].getNom().equals(nom)) { if (vivants[i].getNom().equals(nom)) {
...@@ -104,7 +177,10 @@ public class Piece extends ElementStructurel { ...@@ -104,7 +177,10 @@ public class Piece extends ElementStructurel {
return false; return false;
} }
/**
* toString créer un String décrivant la piece
* @return le String de description
*/
public String toString(){ public String toString(){
String res = "PIECE Nom Piece :" +this.getNom()+ ";\n"; String res = "PIECE Nom Piece :" +this.getNom()+ ";\n";
res += "Nom Monde :"; res += "Nom Monde :";
......
...@@ -35,8 +35,7 @@ public abstract class Vivant extends Entite { ...@@ -35,8 +35,7 @@ public abstract class Vivant extends Entite {
* prendre Prend un objet dans la piece dans laquelle se situe si c'est possible * prendre Prend un objet dans la piece dans laquelle se situe si c'est possible
* @param obj objet a prendre si dans la piece et deplacable * @param obj objet a prendre si dans la piece et deplacable
*/ */
public void prendre(Objet obj)throws ObjetAbsentDeLaPieceException, public void prendre(Objet obj)throws ObjetAbsentDeLaPieceException, ObjetNonDeplacableException{
ObjetNonDeplacableException{
prendre(obj.getNom()); prendre(obj.getNom());
} }
...@@ -44,14 +43,18 @@ public abstract class Vivant extends Entite { ...@@ -44,14 +43,18 @@ public abstract class Vivant extends Entite {
* prendre Prend un objet dans la piece actuelle en fonction du nom * prendre Prend un objet dans la piece actuelle en fonction du nom
* @param nom nom de l'objet a prendre si present et deplacable * @param nom nom de l'objet a prendre si present et deplacable
*/ */
public void prendre( String nom)throws ObjetAbsentDeLaPieceException, public void prendre( String nom)throws ObjetAbsentDeLaPieceException, ObjetNonDeplacableException{
ObjetNonDeplacableException{
Objet[] tmp = new Objet[tableauObjet.length + 1]; Objet[] tmp = new Objet[tableauObjet.length + 1];
if (this.piece.contientObjet(nom)){
for (int i = 0; i < tableauObjet.length; i++) for (int i = 0; i < tableauObjet.length; i++)
tmp[i] = tableauObjet[i]; tmp[i] = tableauObjet[i];
tmp[tableauObjet.length] = piece.retirer(nom); tmp[tableauObjet.length] = piece.retirer(nom);
tableauObjet = tmp; tableauObjet = tmp;
} else {
throw new ObjetAbsentDeLaPieceException();
} }
}
/** /**
* deposer Depose un objet dans la piece actuelle * deposer Depose un objet dans la piece actuelle
* @param nom nom de l'objet a déposer * @param nom nom de l'objet a déposer
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment