User Tools

Site Tools


2013_2014:s2:td:td_classes-code-associations:codes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
2013_2014:s2:td:td_classes-code-associations:codes [2014/04/05 22:10]
blay [Code]
2013_2014:s2:td:td_classes-code-associations:codes [2014/04/15 13:44] (current)
blay [Code]
Line 3: Line 3:
 ====== ​ Des modèles aux classes : CODES ====== ====== ​ Des modèles aux classes : CODES ======
  
 +<note important>​Ces codes sont là pour vous aider. Ils ne sont pas LA solution. Beaucoup d'​autres solutions sont possibles, mais il faut rigoureusement respecter les énoncés.</​note>​
 ====== Code et associations "​simples"​ ====== ====== Code et associations "​simples"​ ======
  
Line 94: Line 94:
 {{ :​2013_2014:​s2:​td:​td_classes-code-associations:​coursetape2.png?​nolink |}} {{ :​2013_2014:​s2:​td:​td_classes-code-associations:​coursetape2.png?​nolink |}}
  
 +Dans ce modèle, l'​association apparaît aussi sous la forme d'un attribut (diagramme obtenu par reverse). Pour éviter cela, il faut sélectionner l'​attribut,​ clique droit puis  "show as association"​
 +
 +{{ :​2013_2014:​s2:​td:​td_classes-code-associations:​showasassociation.png?​nolink |}}
 ==== Code  : étape 2  ==== ==== Code  : étape 2  ====
  
Line 160: Line 163:
 ==== Code ==== ==== Code ====
  
-Dans la classe **Cours**+=== Dans la classe **Cours** ​=== 
 + 
 +<note warning>​Cette version n'est pas développée,​ elle doit être terminée</​note>​
 <code java/> <code java/>
-package courspk; 
  
-import courspk.Vacataire2;​ 
 /* Version simple en générant un tableau... à terminer ... */ /* Version simple en générant un tableau... à terminer ... */
 public class Cours { public class Cours {
  
- public ​Vacataire[] vacataires = new Vacataire[0];​+ private ​Vacataire[] vacataires = new Vacataire[0];​
 } }
 </​code>​ </​code>​
 +**
 +Autre solution dans la classe cours ** 
  
 +Placer bien vos attributs en début de définition de la classe.
 +<note important>​N'​oubliez pas import java.util.*;</​note>​
 <code java> <code java>
-Collection<​Vacataire>​ vacataires = new ArrayList<​Vacataire>​();​+ArrayList<​Vacataire>​ vacataires = new ArrayList<​Vacataire>​();​
  
  public void addVacataire(Vacataire v) {  public void addVacataire(Vacataire v) {
Line 206: Line 213:
   
 </​code>​ </​code>​
 +<note warning>​Attention,​ le remove suppose que l'on sait comparer des Vacataires. Ici, comme le equals n'est pas redéfini, seuls des vacataires exactement les mêmes seront retirés au sens de l'​égalité des pointeurs.</​note>​
 <code java> <code java>
 public class Vacataire ​ { public class Vacataire ​ {
Line 223: Line 230:
 } }
 </​code>​ </​code>​
- 
 ==== Tests  ==== ==== Tests  ====
  
Line 438: Line 444:
 } }
 </​code>​ </​code>​
 +
 +Dans la classe Cours
  
 <code java> <code java>
-        private TD td = new TD("​TD",​1);​ +
- private DS ds = new DS("​DS",​1.5);​ +
- +
   
  /​*Constructeur de plus haut niveau  /​*Constructeur de plus haut niveau
Line 477: Line 483:
 </​code>​ </​code>​
  
 +Dans les codes la méthode coursAssociée n'a pas été définie ni d'​ailleurs dans le modèle.
 +Ici nous avons au niveau des codes orienté la relation. Le modèle devrait être revue pour refléter la réalité des codes.
  
 +Dans la figure ci-dessous, nous avons fait le choix de laisser ds visible à la fois comme une association et un attribut pour visualiser la construction interne du DS. Nous aurions pu faire de même pour le TD. Néanmoins, nous déconseillons cette double visualisation d'une même information qui crée de l'​ambiguité. L'​utilisation de la composition peut donner la même information,​ mais l'​outil la perd lors du passage au code :-X
 +{{ :​2013_2014:​s2:​td:​td_classes-code-associations:​courstddssolution.png?​nolink |}}
  
 +
 +===== Classe d'​association =====
 +
 +==== Codes ====
 +<code java>
 +public class Enseignant {
 +
 + String nom;
 + public Enseignant(String nom) {
 + this.nom = nom;
 + }
 +
 + @Override
 + public String toString() {
 + return "​Enseignant : " + nom + " ";
 + }
 +
 +}
 +</​code>​
 +
 +<code java>
 +public class Description {
 + private int annee;
 + private String section;
 + public Enseignant responsable;​
 +
 + public void setResponsable(Enseignant aResponsable) {
 + this.responsable = aResponsable;​
 + }
 +
 + public Enseignant getResponsable() {
 + return this.responsable;​
 + }
 +
 + protected int getAnnee() {
 + return annee;
 + }
 +
 + protected void setAnnee(int annee) {
 + this.annee = annee;
 + }
 +
 + protected String getSection() {
 + return section;
 + }
 +
 + protected void setSection(String section) {
 + this.section = section;
 + }
 +
 + @Override
 + public String toString() {
 + return "​Description [annee="​ + annee + ", section="​ + section
 + + ", responsable="​ + responsable + "​]";​
 + }
 +
 +}
 +</​code>​
 +<code java>
 +public class Module {
 +
 +      ​private int maxDesc = 10;
 + Description[] description = new Description[maxDesc];​
 + private int numberOfDescr = 0;
 +
 + public void addDescription(Description aDescription_d) {
 + if (numberOfDescr==maxDesc)
 + return;
 + else {
 + description[numberOfDescr]=aDescription_d;​
 + numberOfDescr++;​
 + }
 + }
 +
 + public Enseignant getResponsable(int aAnnee, String aSection) {
 + for (Description d : description) {
 + if ((d!=null) && (d.getAnnee()==aAnnee) && (d.getSection()==aSection))
 + return d.getResponsable();​
 + }
 + return null;
 + }
 +
 + @Override
 + public String toString() {
 + return "​Module [ description="​
 + + Arrays.toString(description) + ", numberOfDescr="​
 + + numberOfDescr + "​]";​
 + }
 +
 +
 +}
 +</​code>​
 +
 +==== Tests ====
 +<code java>
 + Module mUML = new Module();
 + Module mJAVA = new Module();
 + Description d2014 = new Description();​
 + d2014.setAnnee(2014);​
 + d2014.setSection("​s2T"​);​
 + Enseignant E1 = new Enseignant("​profTrad"​);​
 + d2014.setResponsable(E1);​
 + mUML.addDescription(d2014);​
 + Description e2014 = new Description();​
 + e2014.setAnnee(2014);​
 + e2014.setSection("​s2A"​);​
 + Enseignant E2 = new Enseignant("​ProfAlt"​);​
 + e2014.setResponsable(E2);​
 + mUML.addDescription(e2014);​
 + System.out.println(mUML);​
 + System.out.println(mJAVA);​
 + 
 + System.out.println(mUML.getResponsable(2014,​ "​s2T"​));​
 + System.out.println(mUML.getResponsable(2014,​ "​s2A"​));​
 + System.out.println("​-----------"​);​
 + System.out.println("​pas de tel cours"​);​
 + System.out.println(mUML.getResponsable(2015,​ "​s2A"​));​
 + if (mJAVA.getResponsable(2015,​ "​s2A"​) == null)
 + System.out.println("​pas de tel cours"​);​
 +</​code>​
2013_2014/s2/td/td_classes-code-associations/codes.1396728612.txt.gz · Last modified: 2014/04/05 22:10 by blay