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.*;
public class ClassMain {
public static void main (String[] args){
try{
System.out.println("############");
System.out.println("##TestMain##");
System.out.println("############");
......@@ -201,7 +201,6 @@ public class ClassMain {
System.out.println("############");
}
catch(NomDEntiteDejaUtiliseDansLeMondeException e){
System.err.println(e);
}
......
......@@ -9,13 +9,27 @@ public class Monde {
private String nom;
private Entite[] tableauEntites = new Entite [0];
/**
* Constructeur de Monde
* @param nom nom du monde
*/
public Monde(String nom){
this.nom = nom;
}
/**
* GetNom Getter du nom du monde
* @return nom du monde
*/
public String getNom(){
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){
boolean trouve = false;
int i = 0;
......@@ -32,6 +46,12 @@ public class Monde {
return null;
}
/**
* Ajouter ajoute une entite dans le monde
* @param nouvelleEntite l'entite a rechercher
* @throws NomDEntiteDejaUtiliseDansLeMondeException
* @throws EntiteDejaDansUnAutreMondeException
*/
public void ajouter(Entite nouvelleEntite)
throws NomDEntiteDejaUtiliseDansLeMondeException,
EntiteDejaDansUnAutreMondeException {
......@@ -53,6 +73,10 @@ public class Monde {
tableauEntites = tmp;
}
/**
* toString créer un String décrivant le monde
* @return le String de description
*/
public String toString(){
String resultat;
resultat = " Nom : "+ this.getNom() + ";\n";
......
......@@ -10,7 +10,13 @@ public abstract class Entite {
private String nom;
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;
if (monde.getEntite(nom) != null){
......@@ -23,12 +29,26 @@ public abstract class Entite {
}
/**
* getNom Getter du nom de l'entite
* @return nom de l'entite
*/
public String getNom(){
return this.nom;
}
/**
* getMonde Getter du monde de l'entite
* @return monde de l'entite
*/
public Monde getMonde(){
return this.monde;
}
/**
* equals Compare deux Object (!= Objet)
* @return un boolean true/false en fonction de la similarité
*/
public boolean equals(Object o){
if (o == null || o.getClass()!=this.getClass()){
return false;
......@@ -37,6 +57,10 @@ public abstract class Entite {
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(){
return "Nom : "+this.nom;
}
......
......@@ -9,11 +9,21 @@ import fr.insarouen.asi.prog.asiaventure.elements.structure.*;
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)
throws NomDEntiteDejaUtiliseDansLeMondeException{
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();
......
......@@ -8,11 +8,21 @@ import fr.insarouen.asi.prog.asiaventure.elements.vivants.*;
import fr.insarouen.asi.prog.asiaventure.elements.structure.*;
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)
throws NomDEntiteDejaUtiliseDansLeMondeException{
super(nom, monde);
}
/**
* estDeplacable redefinition de la méthode abstraite de Objet
* @return true pour deplacable, false sinon
*/
public boolean estDeplacable(){
return true;
}
......
......@@ -8,11 +8,14 @@ import fr.insarouen.asi.prog.asiaventure.elements.vivants.*;
import fr.insarouen.asi.prog.asiaventure.elements.structure.*;
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)
throws NomDEntiteDejaUtiliseDansLeMondeException{
if(monde.getEntite(nom) != null){
throw
}
super(nom, monde);
}
}
......@@ -15,10 +15,20 @@ public class Piece extends ElementStructurel {
private Objet[] tableauObjet = new Objet[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 {
super( _nom, _monde);
}
/**
* deposer depose un objet dans la piece
* @param obj objet a deposer
*/
public void deposer(Objet _objet){
Objet[] tmp = new Objet[tableauObjet.length+1];
for (int i = 0 ; i < tableauObjet.length ; i++)
......@@ -28,11 +38,20 @@ public class Piece extends ElementStructurel {
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;
Objet result = null;
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++)
if (!tableauObjet[i].getNom().equals(nomObjet)){
tmp[k]= tableauObjet[i];
......@@ -41,18 +60,40 @@ public class Piece extends ElementStructurel {
else
result = tableauObjet[i];
tableauObjet = tmp;
}else {
throw new ObjetAbsentDeLaPieceException();
}
return result;
}
public Objet retirer(Objet _objet)throws ObjetAbsentDeLaPieceException,
ObjetNonDeplacableException {
return this.retirer(_objet.getNom());
/**
* retirer retire un objet dans la piece
* @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) {
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) {
for (int i = 0; i<this.tableauObjet.length; i++)
if (this.tableauObjet[i].getNom().equals(nom))
......@@ -60,26 +101,45 @@ public class Piece extends ElementStructurel {
return false;
}
/**
* getObjets Getter de la liste des objets dans la piece
* @return la liste des objets dans la piece
*/
public Objet[] getObjets() {
return this.tableauObjet;
}
/**
* entrer fait entrer dans la piece un nouveau vivant
* @param vivant vivant a faire entrer
*/
public void entrer(Vivant vivant) {
Vivant[] tmp = Arrays.copyOf(vivants, vivants.length + 1);
tmp[vivants.length] = vivant;
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{
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{
int k = 0;
Vivant result = null;
Vivant[] tmp = new Vivant[vivants.length-1];
if (contientVivant(nom)){
for (int i = 0; i < vivants.length ; i++)
if (!vivants[i].getNom().equals(nom)){
tmp[k]= vivants[i];
......@@ -88,13 +148,26 @@ public class Piece extends ElementStructurel {
else
result = vivants[i];
vivants = tmp;
} else {
throw new VivantAbsentDeLaPieceException();
}
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) {
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) {
for (int i = 0; i<vivants.length; i++) {
if (vivants[i].getNom().equals(nom)) {
......@@ -104,7 +177,10 @@ public class Piece extends ElementStructurel {
return false;
}
/**
* toString créer un String décrivant la piece
* @return le String de description
*/
public String toString(){
String res = "PIECE Nom Piece :" +this.getNom()+ ";\n";
res += "Nom Monde :";
......
......@@ -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
* @param obj objet a prendre si dans la piece et deplacable
*/
public void prendre(Objet obj)throws ObjetAbsentDeLaPieceException,
ObjetNonDeplacableException{
public void prendre(Objet obj)throws ObjetAbsentDeLaPieceException, ObjetNonDeplacableException{
prendre(obj.getNom());
}
......@@ -44,14 +43,18 @@ public abstract class Vivant extends Entite {
* prendre Prend un objet dans la piece actuelle en fonction du nom
* @param nom nom de l'objet a prendre si present et deplacable
*/
public void prendre( String nom)throws ObjetAbsentDeLaPieceException,
ObjetNonDeplacableException{
public void prendre( String nom)throws ObjetAbsentDeLaPieceException, ObjetNonDeplacableException{
Objet[] tmp = new Objet[tableauObjet.length + 1];
if (this.piece.contientObjet(nom)){
for (int i = 0; i < tableauObjet.length; i++)
tmp[i] = tableauObjet[i];
tmp[tableauObjet.length] = piece.retirer(nom);
tableauObjet = tmp;
} else {
throw new ObjetAbsentDeLaPieceException();
}
}
/**
* deposer Depose un objet dans la piece actuelle
* @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