diff --git a/AppThinker/src/Class.java b/AppThinker/src/Class.java new file mode 100644 index 0000000..478d36c --- /dev/null +++ b/AppThinker/src/Class.java @@ -0,0 +1,262 @@ +import java.util.ArrayList; +import java.util.List; + +/** + * Gère une classe du projet. + * @author V.BOULANGER + */ +public class Class { + + public static int _classId = 0; + public static final int RECTANGLE = 0; + public static final int CIRCLE = 1; + + private int _id; + private String _name; + private int _posX; + private int _posY; + private int _sizeX; + private int _sizeY; + private int _shape; + private List _attributes; + private List _methods; + + /** + * Constructeur - Crée une instance de Class. + * @param posX La position sur l'axe X de la nouvelle classe. + * @param posY La position sur l'axe Y de la nouvelle classe. + * @param shape La forme de la nouvelle classe (Class.RECTANGLE ou Class.CIRCLE) + */ + public Class(int posX, int posY, int shape){ + _classId++; + this._id = _classId; + this._name = "Classe" + _id; + this._posX = posX; + this._posY = posY; + this._sizeX = 30; + this._sizeY = 60; + this._shape = shape; + this._attributes = new ArrayList(); + this._methods = new ArrayList(); + } + + /** + * Constructeur - Crée une instance de Class avec les paramètres déterminés. + * @param name Le nom de la classe importée. + * @param posX La position sur l'axe X de la classe importée. + * @param posY La position sur l'axe Y de la classe importée. + * @param sizeX La taille sur l'axe X de la classe importée. + * @param sizeY La taille sur l'axe Y de la classe importée. + * @param shape La forme de la classe importée (Class.RECTANGLE ou Class.CIRCLE). + * @param attributes La liste des attributs de la classe importée. + * @param methods La liste des méthodes de la classe importée. + */ + public Class(String name, int posX, int posY, int sizeX, int sizeY, int shape, ArrayList attributes, ArrayList methods){ + _classId++; + this._id = _classId; + this._name = name; + this._posX = posX; + this._posY = posY; + this._sizeX = sizeX; + this._sizeY = sizeY; + this._shape = shape; + this._attributes = attributes; + this._methods = methods; + } + + /** + * Récupère le numéro de la classe. + * @return Le numéro de la classe. + */ + public int getId() { + return _id; + } + + /** + * Récupère le nom de la classe. + * @return Le nom de la classe. + */ + public String getName() { + return _name; + } + + /** + * Paramètre le nom de la classe. + * @param name Le nom de la classe. + */ + public void setName(String name) { + this._name = name; + } + + /** + * Récupère la position sur l'axe X de la classe. + * @return La position sur l'axe X de la classe. + */ + public int getPosX() { + return _posX; + } + + /** + * Paramètre la position sur l'axe X de la classe. + * @param posX La position sur l'axe X de la classe. + */ + public void setPosX(int posX) { + this._posX = posX; + } + + /** + * Récupère la position sur l'axe Y de la classe. + * @return La position sur l'axe Y de la classe. + */ + public int getPosY() { + return _posY; + } + + /** + * Paramètre la position sur l'axe Y de la classe. + * @param posY La position sur l'axe Y de la classe. + */ + public void setPosY(int posY) { + this._posY = posY; + } + + /** + * Récupère la taille sur l'axe X de la classe. + * @return La taille sur l'axe X de la classe. + */ + public int getSizeX() { + return _sizeX; + } + + /** + * Paramètre la taille sur l'axe X de la classe. + * @param sizeX La taille sur l'axe X de la classe. + */ + public void setSizeX(int sizeX) { + this._sizeX = sizeX; + } + + /** + * Récupère la taille sur l'axe Y de la classe. + * @return La taille sur l'axe Y de la classe. + */ + public int getSizeY() { + return _sizeY; + } + + /** + * Paramètre la taille sur l'axe Y de la classe. + * @param sizeY La taille sur l'axe Y de la classe. + */ + public void setSizeY(int sizeY) { + this._sizeY = sizeY; + } + + /** + * Paramètre la taille sur l'axe X et Y de la classe. + * @param sizeX La taille sur l'axe X de la classe. + * @param sizeY La taille sur l'axe Y de la classe. + */ + public void resize(int sizeX, int sizeY){ + this._sizeX = sizeX; + this._sizeY = sizeY; + } + + /** + * Récupère la forme graphique de la classe. + * @return La forme graphique de la classe (Class.RECTANGLE ou Class.CIRCLE). + */ + public int getShape() { + return _shape; + } + + /** + * Paramètre la forme graphique de la classe. + * @param shape La forme graphique de la classe (Class.RECTANGLE ou Class.CIRCLE). + */ + public void setShape(int shape) { + this._shape = shape; + } + + /** + * Sélectionne la classe dans l'espace graphique. + */ + public void select(){ + + } + + /** + * Désélectionne la classe dans l'espace graphique. + */ + public void deselect(){ + + } + + /** + * Récupère tous les attributs de la classe. + * @return Les attributs de la classe. + */ + public List getAttributes(){ + return this._attributes; + } + + /** + * Ajoute un attribut à la classe. + * @param a L'attribut à ajouter. + * @author V.BOULANGER + */ + public void addAttribute(Attribute a){ + this._attributes.add(a); + } + + /** + * Supprime un attribut de la classe. + * @param index L'index de l'attribut à supprimer. + * @author V.BOULANGER + */ + public void removeAttribute(int index){ + this._attributes.remove(index); + } + + /** + * Supprime tous les attributs de la classe. + * @author V.BOULANGER + */ + public void clearAttributes(){ + this._attributes.clear(); + } + + /** + * Récupère toutes les méthodes de la classe. + * @return Les méthodes de la classe. + */ + public List getMethods(){ + return this._methods; + } + + /** + * Ajoute une méthode à la classe. + * @param m La méthode à ajouter. + * @author V.BOULANGER + */ + public void addMethod(Method m){ + this._methods.add(m); + } + + /** + * Supprime une méthode de la classe. + * @param index L'index de la méthode à supprimer. + * @author V.BOULANGER + */ + public void removeMethod(int index){ + this._methods.remove(index); + } + + /** + * Supprime toutes les méthodes de la classe. + * @author V.BOULANGER + */ + public void clearMethods(){ + this._methods.clear(); + } +}