<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:UMLLabProfile="http:///schemas/UMLLabProfile/NS/0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http:///schemas/UMLLabProfile/NS/0 pathmap://UMLLAB_PROFILES/UMLLab.profile.uml#UMLLabProfile-Annotation_2-UMLLabProfile">
  <uml:Model xmi:id="_aYoF0EKtEequ9J027I-KGQ" name="flappyBird">
    <eAnnotations xmi:id="_adFvEEKtEequ9J027I-KGQ" source="http://ns.yatta.de/umllab">
      <contents xmi:type="ecore:EAnnotation" xmi:id="_adFvEUKtEequ9J027I-KGQ" source="codegen">
        <details xmi:id="_adFvEkKtEequ9J027I-KGQ" key="codegenDirectory" value="/flappyBird/src"/>
        <details xmi:id="_albywEKtEequ9J027I-KGQ" key="AssociatedSourceCode" value="/flappyBird/src/control/Avancer.java;2968709256/1;/flappyBird/src/control/Click.java;1067738786/1;/flappyBird/src/control/Parcours.java;1763028144/1;/flappyBird/src/control/Voler.java;4035013601/1;/flappyBird/src/flappyBird/Main.java;753704462/1;/flappyBird/src/model/Etat.java;1838767986/1;/flappyBird/src/view/Affichage.java;1200778192/1;"/>
      </contents>
    </eAnnotations>
    <elementImport xmi:id="_aigakEKtEequ9J027I-KGQ">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
    </elementImport>
    <elementImport xmi:id="_aigakUKtEequ9J027I-KGQ">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#byte"/>
    </elementImport>
    <elementImport xmi:id="_aigakkKtEequ9J027I-KGQ">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#char"/>
    </elementImport>
    <elementImport xmi:id="_aigak0KtEequ9J027I-KGQ">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#double"/>
    </elementImport>
    <elementImport xmi:id="_aihBoEKtEequ9J027I-KGQ">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#float"/>
    </elementImport>
    <elementImport xmi:id="_aihBoUKtEequ9J027I-KGQ">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
    </elementImport>
    <elementImport xmi:id="_aihBokKtEequ9J027I-KGQ">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
    </elementImport>
    <elementImport xmi:id="_aihBo0KtEequ9J027I-KGQ">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#short"/>
    </elementImport>
    <elementImport xmi:id="_aihBpEKtEequ9J027I-KGQ">
      <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
    </elementImport>
    <packagedElement xmi:type="uml:Package" xmi:id="_aihBpUKtEequ9J027I-KGQ" name="model">
      <packagedElement xmi:type="uml:Class" xmi:id="_aiw5QEKtEequ9J027I-KGQ" name="Etat">
        <ownedComment xmi:id="_ajU5-kKtEequ9J027I-KGQ">
          <body>Stocke l'état de ce qu'on doit afficher
 *</body>
        </ownedComment>
        <ownedAttribute xmi:id="_ajQohkKtEequ9J027I-KGQ" name="yPos0">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#float"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajQoiEKtEequ9J027I-KGQ" name="saut" visibility="private" isStatic="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_ajRPkEKtEequ9J027I-KGQ" value="30"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajRPkkKtEequ9J027I-KGQ" name="chute" isStatic="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_ajRPk0KtEequ9J027I-KGQ" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajRPlUKtEequ9J027I-KGQ" name="hauteur" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajRPlkKtEequ9J027I-KGQ" name="parcours" visibility="private" type="_aitO4UKtEequ9J027I-KGQ" association="_ajWvJEKtEequ9J027I-KGQ"/>
        <ownedAttribute xmi:id="_ajRPmEKtEequ9J027I-KGQ" name="avance" visibility="private" type="_airZsEKtEequ9J027I-KGQ" association="_ajWvJ0KtEequ9J027I-KGQ"/>
        <ownedAttribute xmi:id="_ajRPmkKtEequ9J027I-KGQ" name="vol" visibility="private" type="_aivEEUKtEequ9J027I-KGQ" association="_ajXWMUKtEequ9J027I-KGQ"/>
        <ownedAttribute xmi:id="_ajR2oUKtEequ9J027I-KGQ" name="aff" visibility="private" type="_aiyucEKtEequ9J027I-KGQ" association="_ajXWNEKtEequ9J027I-KGQ"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr2UKtEequ9J027I-KGQ" name="Etat" specification="_ajHekEKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTr2kKtEequ9J027I-KGQ" name="parcours" type="_aitO4UKtEequ9J027I-KGQ"/>
          <ownedParameter xmi:id="_ajTr20KtEequ9J027I-KGQ" type="_aiw5QEKtEequ9J027I-KGQ" direction="return"/>
          <language>java</language>
          <body>this.hauteur = 100;
			this.parcours = parcours;
		</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr3EKtEequ9J027I-KGQ" name="jump" specification="_aiw5QUKtEequ9J027I-KGQ">
          <language>java</language>
          <body>if(!testPerdu()) {
			 	if(this.hauteur-Etat.saut > 0) {
				 	this.hauteur -= Etat.saut;
		     	}else {
		    	 	this.hauteur = 0;
		     	}
			 }
	     </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr3UKtEequ9J027I-KGQ" name="moveDown" specification="_aiw5QkKtEequ9J027I-KGQ">
          <language>java</language>
          <body>if(this.hauteur+Etat.chute+Affichage.ovalHeight &lt; Affichage.HAUT &amp;&amp; !testPerdu()) {
		        	this.hauteur += Etat.chute;
		     }
		 </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr3kKtEequ9J027I-KGQ" name="testPerdu" specification="_aiw5Q0KtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTr30KtEequ9J027I-KGQ" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
          <language>java</language>
          <body>Point[] points = this.parcours.getParcours();
			 int i=0;
			 Point A = points[i];
			 Point B = points[i+1];
			 
			 //tant que le deuxième point sélectioné est à gauche du milieu de l'ovale, on décal la sélection de 1 point 
			 while(B.x &lt; Affichage.ovalDec) {
				 i++;
				 A = points[i];
				 B = points[i+1];
			 }
			 
			 //pas de game over si on a pas encore atteint le début de la courbe
			 if(A.x>this.parcours.getPosition()-Affichage.ovalDec) {
				 return false;
			 }else {
				 
				float coeffDir = floatDiv(B.y - A.y ,(B.x - A.x));
			 
			 	float Ypos0 = ((-A.x+Affichage.ovalDec) * coeffDir) + A.y;
			 	this.yPos0 = Ypos0;
			 	return this.hauteur >= Ypos0 || this.hauteur+Affichage.ovalHeight &lt;= Ypos0;
			 }
		 </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr4EKtEequ9J027I-KGQ" name="floatDiv" specification="_aixgUUKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTr4UKtEequ9J027I-KGQ" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_ajTr4kKtEequ9J027I-KGQ" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_ajTr40KtEequ9J027I-KGQ" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#float"/>
          </ownedParameter>
          <language>java</language>
          <body>return (float)(x) / (float)(y);
		 </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr5EKtEequ9J027I-KGQ" name="getParcours" specification="_aixgVUKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTr5UKtEequ9J027I-KGQ" type="_aitO4UKtEequ9J027I-KGQ" direction="return"/>
          <language>java</language>
          <body>return parcours;
		</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr5kKtEequ9J027I-KGQ" name="setAff" specification="_ajHelkKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTr50KtEequ9J027I-KGQ" name="aff" type="_aiyucEKtEequ9J027I-KGQ"/>
          <language>java</language>
          <body>this.aff = aff;
		</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr6EKtEequ9J027I-KGQ" name="setVol" specification="_ajHemEKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTr6UKtEequ9J027I-KGQ" name="v" type="_aivEEUKtEequ9J027I-KGQ"/>
          <language>java</language>
          <body>this.vol = v;
     </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr6kKtEequ9J027I-KGQ" name="setAvance" specification="_ajHemkKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTr60KtEequ9J027I-KGQ" name="a" type="_airZsEKtEequ9J027I-KGQ"/>
          <language>java</language>
          <body>this.avance = a;
     </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr7EKtEequ9J027I-KGQ" name="repaint" specification="_aixgVkKtEequ9J027I-KGQ">
          <language>java</language>
          <body>this.aff.repaint();
		</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr7UKtEequ9J027I-KGQ" name="avance" specification="_aixgV0KtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTr7kKtEequ9J027I-KGQ" name="n">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <language>java</language>
          <body>this.parcours.incrPos(n);
		</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr70KtEequ9J027I-KGQ" name="stopThreads" specification="_aixgWUKtEequ9J027I-KGQ">
          <language>java</language>
          <body>this.vol.terminate();
			this.avance.terminate();
		</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_aiw5QUKtEequ9J027I-KGQ" name="jump" method="_ajTr3EKtEequ9J027I-KGQ">
          <ownedComment xmi:id="_ajU5_EKtEequ9J027I-KGQ">
            <body>on augmente la hauteur de l'ovale de la valeur définie par {@link saut}
		 * si on ne dépasse pas le cadre du JPanel. sinon on met l'ovale tout en haut
		 *</body>
          </ownedComment>
        </ownedOperation>
        <ownedOperation xmi:id="_aiw5QkKtEequ9J027I-KGQ" name="moveDown" method="_ajTr3UKtEequ9J027I-KGQ">
          <ownedComment xmi:id="_ajU5_UKtEequ9J027I-KGQ">
            <body>fait baisser la {@link #hauteur} de l'Ovale de {@link #chute} pixels</body>
          </ownedComment>
        </ownedOperation>
        <ownedOperation xmi:id="_aiw5Q0KtEequ9J027I-KGQ" name="testPerdu" method="_ajTr3kKtEequ9J027I-KGQ">
          <ownedComment xmi:id="_ajU5_kKtEequ9J027I-KGQ">
            <body>vrai si l'ovale est sortie de la ligne brisée
		  * @return &lt;p>true si l'ovale est sortie de la ligne brisée &lt;/p>
		  * 		&lt;p>false sinon&lt;/p>
		  *</body>
          </ownedComment>
          <ownedParameter xmi:id="_aixgUEKtEequ9J027I-KGQ" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_aixgUUKtEequ9J027I-KGQ" name="floatDiv" visibility="private" method="_ajTr4EKtEequ9J027I-KGQ">
          <ownedComment xmi:id="_ajU5_0KtEequ9J027I-KGQ">
            <body>renvoie la division flottante de deux entiers sous forme d'un flottant
		  * @param  x
		  * @param  y
		  * @return float : division flottante de x et y
		  *</body>
          </ownedComment>
          <ownedParameter xmi:id="_aixgUkKtEequ9J027I-KGQ" name="x">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_aixgU0KtEequ9J027I-KGQ" name="y">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_aixgVEKtEequ9J027I-KGQ" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#float"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_aixgVUKtEequ9J027I-KGQ" name="getParcours" method="_ajTr5EKtEequ9J027I-KGQ">
          <ownedComment xmi:id="_ajU6AEKtEequ9J027I-KGQ">
            <body>@return une instance de la classe {@link Parcours}
		 *</body>
          </ownedComment>
          <ownedParameter xmi:id="_ajHelUKtEequ9J027I-KGQ" type="_aitO4UKtEequ9J027I-KGQ" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_aixgVkKtEequ9J027I-KGQ" name="repaint" method="_ajTr7EKtEequ9J027I-KGQ">
          <ownedComment xmi:id="_ajU6AUKtEequ9J027I-KGQ">
            <body>appelle {@link Affichage#repaint}</body>
          </ownedComment>
        </ownedOperation>
        <ownedOperation xmi:id="_aixgV0KtEequ9J027I-KGQ" name="avance" method="_ajTr7UKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_aixgWEKtEequ9J027I-KGQ" name="n">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_aixgWUKtEequ9J027I-KGQ" name="stopThreads" method="_ajTr70KtEequ9J027I-KGQ">
          <ownedComment xmi:id="_ajU6AkKtEequ9J027I-KGQ">
            <body>Arrète les Threads Voler et Avancer</body>
          </ownedComment>
        </ownedOperation>
        <ownedOperation xmi:id="_ajHekEKtEequ9J027I-KGQ" name="Etat" method="_ajTr2UKtEequ9J027I-KGQ">
          <eAnnotations xmi:id="_ajHekkKtEequ9J027I-KGQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_ajHek0KtEequ9J027I-KGQ" key="create"/>
          </eAnnotations>
          <ownedComment xmi:id="_ajU5-0KtEequ9J027I-KGQ">
            <body>Constructeur
		 * @param parcours : on prend une instance de {@link Parcours} pour avoir accès à la position de l'ovale</body>
          </ownedComment>
          <ownedParameter xmi:id="_ajHekUKtEequ9J027I-KGQ" name="parcours" type="_aitO4UKtEequ9J027I-KGQ"/>
          <ownedParameter xmi:id="_ajHelEKtEequ9J027I-KGQ" type="_aiw5QEKtEequ9J027I-KGQ" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_ajHelkKtEequ9J027I-KGQ" name="setAff" method="_ajTr5kKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajHel0KtEequ9J027I-KGQ" name="aff" type="_aiyucEKtEequ9J027I-KGQ"/>
        </ownedOperation>
        <ownedOperation xmi:id="_ajHemEKtEequ9J027I-KGQ" name="setVol" method="_ajTr6EKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajHemUKtEequ9J027I-KGQ" name="v" type="_aivEEUKtEequ9J027I-KGQ"/>
        </ownedOperation>
        <ownedOperation xmi:id="_ajHemkKtEequ9J027I-KGQ" name="setAvance" method="_ajTr6kKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajHem0KtEequ9J027I-KGQ" name="a" type="_airZsEKtEequ9J027I-KGQ"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_ajWvJEKtEequ9J027I-KGQ" name="" memberEnd="_ajWvJUKtEequ9J027I-KGQ _ajRPlkKtEequ9J027I-KGQ">
        <ownedEnd xmi:id="_ajWvJUKtEequ9J027I-KGQ" name="" type="_aiw5QEKtEequ9J027I-KGQ" association="_ajWvJEKtEequ9J027I-KGQ"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_ajWvJ0KtEequ9J027I-KGQ" name="" memberEnd="_ajWvKEKtEequ9J027I-KGQ _ajRPmEKtEequ9J027I-KGQ">
        <ownedEnd xmi:id="_ajWvKEKtEequ9J027I-KGQ" name="" type="_aiw5QEKtEequ9J027I-KGQ" association="_ajWvJ0KtEequ9J027I-KGQ"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_ajXWMUKtEequ9J027I-KGQ" name="" memberEnd="_ajXWMkKtEequ9J027I-KGQ _ajRPmkKtEequ9J027I-KGQ">
        <ownedEnd xmi:id="_ajXWMkKtEequ9J027I-KGQ" name="" type="_aiw5QEKtEequ9J027I-KGQ" association="_ajXWMUKtEequ9J027I-KGQ"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_ajXWNEKtEequ9J027I-KGQ" name="" memberEnd="_ajXWNUKtEequ9J027I-KGQ _ajR2oUKtEequ9J027I-KGQ">
        <ownedEnd xmi:id="_ajXWNUKtEequ9J027I-KGQ" name="" type="_aiw5QEKtEequ9J027I-KGQ" association="_ajXWNEKtEequ9J027I-KGQ"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_aihosEKtEequ9J027I-KGQ" name="control">
      <packagedElement xmi:type="uml:Class" xmi:id="_airZsEKtEequ9J027I-KGQ" name="Avancer">
        <ownedComment xmi:id="_ajUS8EKtEequ9J027I-KGQ">
          <body>{@link Thread} qui fait avancer la {@link Parcours#position position}  
de {@link #avancement} pixels toutes les de {@link #time} millisecondes.</body>
        </ownedComment>
        <generalization xmi:id="_ajLI80KtEequ9J027I-KGQ" general="_ajLI8UKtEequ9J027I-KGQ"/>
        <ownedAttribute xmi:id="_ajOMQEKtEequ9J027I-KGQ" name="time" isStatic="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_ajOMQUKtEequ9J027I-KGQ" value="100"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajOzUUKtEequ9J027I-KGQ" name="avancement" isStatic="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_ajOzUkKtEequ9J027I-KGQ" value="1"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajOzVEKtEequ9J027I-KGQ" name="running" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajOzVkKtEequ9J027I-KGQ" name="etat" visibility="private" type="_aiw5QEKtEequ9J027I-KGQ" association="_ajVhAEKtEequ9J027I-KGQ"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTEwEKtEequ9J027I-KGQ" name="Avancer" specification="_ajD0MEKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTEwUKtEequ9J027I-KGQ" name="etat" type="_aiw5QEKtEequ9J027I-KGQ"/>
          <ownedParameter xmi:id="_ajTEwkKtEequ9J027I-KGQ" type="_airZsEKtEequ9J027I-KGQ" direction="return"/>
          <language>java</language>
          <body>this.running = true;
		this.etat = etat;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTEw0KtEequ9J027I-KGQ" name="terminate" specification="_aisAwEKtEequ9J027I-KGQ">
          <language>java</language>
          <body>this.running = false;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTExEKtEequ9J027I-KGQ" name="run" specification="_aisAwUKtEequ9J027I-KGQ">
          <language>java</language>
          <body>while(this.running) {
			try { Thread.sleep(time); this.etat.avance(avancement); this.etat.repaint();}
			catch (Exception e) { e.printStackTrace(); this.terminate(); }
		}
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_aisAwEKtEequ9J027I-KGQ" name="terminate" method="_ajTEw0KtEequ9J027I-KGQ"/>
        <ownedOperation xmi:id="_aisAwUKtEequ9J027I-KGQ" name="run" method="_ajTExEKtEequ9J027I-KGQ"/>
        <ownedOperation xmi:id="_ajD0MEKtEequ9J027I-KGQ" name="Avancer" method="_ajTEwEKtEequ9J027I-KGQ">
          <eAnnotations xmi:id="_ajD0MkKtEequ9J027I-KGQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_ajD0M0KtEequ9J027I-KGQ" key="create"/>
          </eAnnotations>
          <ownedComment xmi:id="_ajUS8UKtEequ9J027I-KGQ">
            <body>Constructeur
	 * @param parcours : instance de {@link Parcours} pour appeller {@link Parcours#incrPos} 
	 *</body>
          </ownedComment>
          <ownedParameter xmi:id="_ajD0MUKtEequ9J027I-KGQ" name="etat" type="_aiw5QEKtEequ9J027I-KGQ"/>
          <ownedParameter xmi:id="_ajEbQEKtEequ9J027I-KGQ" type="_airZsEKtEequ9J027I-KGQ" direction="return"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_aitO4EKtEequ9J027I-KGQ" name="Click">
        <ownedComment xmi:id="_ajUS8kKtEequ9J027I-KGQ">
          <body>lance la fonction jump de {@link Etat} 
si l'utilisateur clique sur la fenêtre</body>
        </ownedComment>
        <generalization xmi:id="_ajLwBUKtEequ9J027I-KGQ" general="_ajEbQUKtEequ9J027I-KGQ"/>
        <ownedAttribute xmi:id="_ajOzWEKtEequ9J027I-KGQ" name="etat" visibility="private" type="_aiw5QEKtEequ9J027I-KGQ" association="_ajWIEUKtEequ9J027I-KGQ"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTExUKtEequ9J027I-KGQ" name="Click" specification="_ajFCUUKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTExkKtEequ9J027I-KGQ" name="etat" type="_aiw5QEKtEequ9J027I-KGQ"/>
          <ownedParameter xmi:id="_ajTEx0KtEequ9J027I-KGQ" type="_aitO4EKtEequ9J027I-KGQ" direction="return"/>
          <language>java</language>
          <body>this.etat = etat;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTEyEKtEequ9J027I-KGQ" name="mouseClicked" specification="_ajLwAEKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTEyUKtEequ9J027I-KGQ" name="e" type="_ajEbQ0KtEequ9J027I-KGQ"/>
          <language>java</language>
          <body>this.etat.jump();
		this.etat.repaint();
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_ajFCUUKtEequ9J027I-KGQ" name="Click" method="_ajTExUKtEequ9J027I-KGQ">
          <eAnnotations xmi:id="_ajFCU0KtEequ9J027I-KGQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_ajFCVEKtEequ9J027I-KGQ" key="create"/>
          </eAnnotations>
          <ownedComment xmi:id="_ajUS80KtEequ9J027I-KGQ">
            <body>Constructeur 
	 * @param etat de type {@link Etat}</body>
          </ownedComment>
          <ownedParameter xmi:id="_ajFCUkKtEequ9J027I-KGQ" name="etat" type="_aiw5QEKtEequ9J027I-KGQ"/>
          <ownedParameter xmi:id="_ajFCVUKtEequ9J027I-KGQ" type="_aitO4EKtEequ9J027I-KGQ" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_ajLwAEKtEequ9J027I-KGQ" name="mouseClicked" method="_ajTEyEKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajLwAUKtEequ9J027I-KGQ" name="e" type="_ajEbQ0KtEequ9J027I-KGQ"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_aitO4UKtEequ9J027I-KGQ" name="Parcours">
        <ownedComment xmi:id="_ajUS9EKtEequ9J027I-KGQ">
          <body>Génère les points de la ligne brisée au fur et à mesure de l'avancement de la {@link #position} 
de l'Ovale</body>
        </ownedComment>
        <ownedAttribute xmi:id="_ajPaYUKtEequ9J027I-KGQ" name="marge" isStatic="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_ajPaYkKtEequ9J027I-KGQ" value="40"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajPaZEKtEequ9J027I-KGQ" name="points" visibility="private" type="_ajFpYUKtEequ9J027I-KGQ" association="_ajWIFEKtEequ9J027I-KGQ"/>
        <ownedAttribute xmi:id="_ajQBcUKtEequ9J027I-KGQ" name="position" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajQBckKtEequ9J027I-KGQ" name="incrPoints" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajQBdEKtEequ9J027I-KGQ" name="yPrev" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
        </ownedAttribute>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTEykKtEequ9J027I-KGQ" name="Parcours" specification="_ait18EKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTEy0KtEequ9J027I-KGQ" type="_aitO4UKtEequ9J027I-KGQ" direction="return"/>
          <language>java</language>
          <body>this.position = 0;
		this.points = new ArrayList&lt;Point>();
		this.incrPoints = 50;
		this.yPrev = 0;
		initPoints();
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTEzEKtEequ9J027I-KGQ" name="initPoints" specification="_ait19EKtEequ9J027I-KGQ">
          <language>java</language>
          <body>while(incrPoints &lt; Affichage.LARG){
			this.addPoint();
		}
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTEzUKtEequ9J027I-KGQ" name="addPoint" specification="_ait19UKtEequ9J027I-KGQ">
          <language>java</language>
          <body>//On prend x entre i et i+50
		int x = randint(incrPoints,incrPoints+50);
		
		//calcul vitesses
		float Vchute = (float)(Etat.chute) / (float)(Voler.time);
		float Vavance = (float)(Avancer.avancement) / (float)(Avancer.time);
		
		//calcul différence de hauteur max entre 2 points
		int yDiff = (int) (Vchute * (x-incrPoints) / Vavance);
		
		//calcul yMin et yMax
		int yMin = this.yPrev - yDiff;
		int yMax = this.yPrev + yDiff;
		//vérification yMin et yMax dans la fenetre
		if(yMin &lt; marge) yMin = marge;
		if(yMax &lt; marge) yMax = marge;
		if(yMax > Affichage.HAUT-marge) yMax = Affichage.HAUT-marge ;
		//calcul du y du nouveau point
		int y = randint(yMin, yMax);
		this.points.add(new Point (x,y));
		
		//sauvegarde du y
		this.yPrev = y;
		//incrémentation de incrPoints pour l'abscisse du prochain point
		incrPoints+=50;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTEzkKtEequ9J027I-KGQ" name="randint" specification="_aiudAEKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTEz0KtEequ9J027I-KGQ" name="min">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_ajTE0EKtEequ9J027I-KGQ" name="max">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_ajTE0UKtEequ9J027I-KGQ" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <language>java</language>
          <body>return ThreadLocalRandom.current().nextInt(min, max + 1);
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTE0kKtEequ9J027I-KGQ" name="updateParcours" specification="_aiudBEKtEequ9J027I-KGQ">
          <language>java</language>
          <body>//on prend le dernier point
		Point lastPoint = points.get(points.size()-1);
		//si il entre dans la fenêtre on en ajoute un nouveau
		if (lastPoint.x - (this.position+Affichage.ovalDec) &lt; Affichage.LARG) {
			this.addPoint();
		}
		
		//on prend le 2 ème point
		Point point1 = this.points.get(1);
		//si il sort de la fenetre on retire le 1er point
		if(point1.x &lt; this.position) {
			points.remove(0);
		}
	
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTE00KtEequ9J027I-KGQ" name="getParcours" specification="_aiudBUKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTE1EKtEequ9J027I-KGQ" type="_ajFCVkKtEequ9J027I-KGQ" direction="return">
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ajTE1UKtEequ9J027I-KGQ" value="*"/>
          </ownedParameter>
          <language>java</language>
          <body>updateParcours();
		Point[] res = new Point[this.points.size()];
		int i=0;
		for (Point point : points) {
			res[i] = new Point(point.x-this.position, point.y);
			i++;
		}
		return res;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTE1kKtEequ9J027I-KGQ" name="incrPos" specification="_aiudCUKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTE10KtEequ9J027I-KGQ" name="n">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <language>java</language>
          <body>this.position += n;
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_ait18EKtEequ9J027I-KGQ" name="Parcours" method="_ajTEykKtEequ9J027I-KGQ">
          <eAnnotations xmi:id="_ait18UKtEequ9J027I-KGQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_ait18kKtEequ9J027I-KGQ" key="create"/>
          </eAnnotations>
          <ownedComment xmi:id="_ajU58EKtEequ9J027I-KGQ">
            <body>Constructeur</body>
          </ownedComment>
          <ownedParameter xmi:id="_ait180KtEequ9J027I-KGQ" type="_aitO4UKtEequ9J027I-KGQ" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_ait19EKtEequ9J027I-KGQ" name="initPoints" visibility="private" method="_ajTEzEKtEequ9J027I-KGQ">
          <ownedComment xmi:id="_ajU58UKtEequ9J027I-KGQ">
            <body>Initialise la liste {@link #points}</body>
          </ownedComment>
        </ownedOperation>
        <ownedOperation xmi:id="_ait19UKtEequ9J027I-KGQ" name="addPoint" visibility="private" method="_ajTEzUKtEequ9J027I-KGQ">
          <ownedComment xmi:id="_ajU58kKtEequ9J027I-KGQ">
            <body>Génère un nouveau point et l'ajoute à la liste {@link #points}</body>
          </ownedComment>
        </ownedOperation>
        <ownedOperation xmi:id="_aiudAEKtEequ9J027I-KGQ" name="randint" visibility="private" method="_ajTEzkKtEequ9J027I-KGQ">
          <ownedComment xmi:id="_ajU580KtEequ9J027I-KGQ">
            <body>Génère un chiffre aléatoire entre min et max
	 * @param int min
	 * @param int max
	 * @return random int between min and max</body>
          </ownedComment>
          <ownedParameter xmi:id="_aiudAUKtEequ9J027I-KGQ" name="min">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_aiudAkKtEequ9J027I-KGQ" name="max">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_aiudA0KtEequ9J027I-KGQ" direction="return">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_aiudBEKtEequ9J027I-KGQ" name="updateParcours" visibility="private" method="_ajTE0kKtEequ9J027I-KGQ">
          <ownedComment xmi:id="_ajU59EKtEequ9J027I-KGQ">
            <body>Supprime les points qui ne sont plus dans la vue et ajoute des nouveaux points si nécessaire</body>
          </ownedComment>
        </ownedOperation>
        <ownedOperation xmi:id="_aiudBUKtEequ9J027I-KGQ" name="getParcours" method="_ajTE00KtEequ9J027I-KGQ">
          <ownedComment xmi:id="_ajU59UKtEequ9J027I-KGQ">
            <body>renvoie les points à afficher
	 * @return Point[]
	 *</body>
          </ownedComment>
          <ownedParameter xmi:id="_aiudBkKtEequ9J027I-KGQ" type="_ajFCVkKtEequ9J027I-KGQ" direction="return">
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aiudB0KtEequ9J027I-KGQ" value="*"/>
          </ownedParameter>
        </ownedOperation>
        <ownedOperation xmi:id="_aiudCUKtEequ9J027I-KGQ" name="incrPos" method="_ajTE1kKtEequ9J027I-KGQ">
          <ownedComment xmi:id="_ajU59kKtEequ9J027I-KGQ">
            <body>augmente la {@link #position} de l'Ovale de n
	 * @param n : taille (en pixels) de l'augmentation de la position  
	 *</body>
          </ownedComment>
          <ownedParameter xmi:id="_aivEEEKtEequ9J027I-KGQ" name="n">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Class" xmi:id="_aivEEUKtEequ9J027I-KGQ" name="Voler">
        <ownedComment xmi:id="_ajU590KtEequ9J027I-KGQ">
          <body>{@link Thread} qui fait chuter l'ovale toutes les {@link #time} millisecondes</body>
        </ownedComment>
        <generalization xmi:id="_ajMXEEKtEequ9J027I-KGQ" general="_ajLI8UKtEequ9J027I-KGQ"/>
        <ownedAttribute xmi:id="_ajQBdkKtEequ9J027I-KGQ" name="time" isStatic="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_ajQBd0KtEequ9J027I-KGQ" value="15"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajQogEKtEequ9J027I-KGQ" name="running" visibility="private">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#boolean"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajQogkKtEequ9J027I-KGQ" name="etat" visibility="private" type="_aiw5QEKtEequ9J027I-KGQ" association="_ajWIF0KtEequ9J027I-KGQ"/>
        <ownedAttribute xmi:id="_ajQohEKtEequ9J027I-KGQ" name="affichage" visibility="private" type="_aiyucEKtEequ9J027I-KGQ" association="_ajWvIUKtEequ9J027I-KGQ"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr0EKtEequ9J027I-KGQ" name="Voler" specification="_ajGQcEKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTr0UKtEequ9J027I-KGQ" name="etat" type="_aiw5QEKtEequ9J027I-KGQ"/>
          <ownedParameter xmi:id="_ajTr0kKtEequ9J027I-KGQ" name="affichage" type="_aiyucEKtEequ9J027I-KGQ"/>
          <ownedParameter xmi:id="_ajTr00KtEequ9J027I-KGQ" type="_aivEEUKtEequ9J027I-KGQ" direction="return"/>
          <language>java</language>
          <body>this.running = true;
		this.etat = etat;
		this.affichage = affichage;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr1EKtEequ9J027I-KGQ" name="terminate" specification="_aivrIEKtEequ9J027I-KGQ">
          <language>java</language>
          <body>this.running = false;
	</body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr1UKtEequ9J027I-KGQ" name="run" specification="_aivrIUKtEequ9J027I-KGQ">
          <language>java</language>
          <body>while(this.running) {
			try { Thread.sleep(Voler.time); this.etat.moveDown();this.affichage.repaint();}
			catch (Exception e) { e.printStackTrace(); this.terminate();}
		}
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_aivrIEKtEequ9J027I-KGQ" name="terminate" method="_ajTr1EKtEequ9J027I-KGQ"/>
        <ownedOperation xmi:id="_aivrIUKtEequ9J027I-KGQ" name="run" method="_ajTr1UKtEequ9J027I-KGQ"/>
        <ownedOperation xmi:id="_ajGQcEKtEequ9J027I-KGQ" name="Voler" method="_ajTr0EKtEequ9J027I-KGQ">
          <eAnnotations xmi:id="_ajGQc0KtEequ9J027I-KGQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_ajGQdEKtEequ9J027I-KGQ" key="create"/>
          </eAnnotations>
          <ownedComment xmi:id="_ajU5-EKtEequ9J027I-KGQ">
            <body>Constructeur
	 * @param etat : une instance d'{@link Etat} pour appeler {@link Etat#moveDown()}
	 * @param affichage :  une instance d'{@link Affichage} pour appeler {@link Affichage#repaint()}
	 *</body>
          </ownedComment>
          <ownedParameter xmi:id="_ajGQcUKtEequ9J027I-KGQ" name="etat" type="_aiw5QEKtEequ9J027I-KGQ"/>
          <ownedParameter xmi:id="_ajGQckKtEequ9J027I-KGQ" name="affichage" type="_aiyucEKtEequ9J027I-KGQ"/>
          <ownedParameter xmi:id="_ajGQdUKtEequ9J027I-KGQ" type="_aivEEUKtEequ9J027I-KGQ" direction="return"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_ajVhAEKtEequ9J027I-KGQ" name="" memberEnd="_ajVhAUKtEequ9J027I-KGQ _ajOzVkKtEequ9J027I-KGQ">
        <ownedEnd xmi:id="_ajVhAUKtEequ9J027I-KGQ" name="" type="_airZsEKtEequ9J027I-KGQ" association="_ajVhAEKtEequ9J027I-KGQ"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_ajWIEUKtEequ9J027I-KGQ" name="" memberEnd="_ajWIEkKtEequ9J027I-KGQ _ajOzWEKtEequ9J027I-KGQ">
        <ownedEnd xmi:id="_ajWIEkKtEequ9J027I-KGQ" name="" type="_aitO4EKtEequ9J027I-KGQ" association="_ajWIEUKtEequ9J027I-KGQ"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_ajWIFEKtEequ9J027I-KGQ" name="" memberEnd="_ajWIFUKtEequ9J027I-KGQ _ajPaZEKtEequ9J027I-KGQ">
        <ownedEnd xmi:id="_ajWIFUKtEequ9J027I-KGQ" name="" type="_aitO4UKtEequ9J027I-KGQ" association="_ajWIFEKtEequ9J027I-KGQ"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_ajWIF0KtEequ9J027I-KGQ" name="" memberEnd="_ajWIGEKtEequ9J027I-KGQ _ajQogkKtEequ9J027I-KGQ">
        <ownedEnd xmi:id="_ajWIGEKtEequ9J027I-KGQ" name="" type="_aivEEUKtEequ9J027I-KGQ" association="_ajWIF0KtEequ9J027I-KGQ"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_ajWvIUKtEequ9J027I-KGQ" name="" memberEnd="_ajWvIkKtEequ9J027I-KGQ _ajQohEKtEequ9J027I-KGQ">
        <ownedEnd xmi:id="_ajWvIkKtEequ9J027I-KGQ" name="" type="_aivEEUKtEequ9J027I-KGQ" association="_ajWvIUKtEequ9J027I-KGQ"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_aiiPwEKtEequ9J027I-KGQ" name="java">
      <packagedElement xmi:type="uml:Package" xmi:id="_aiiPwUKtEequ9J027I-KGQ" name="awt">
        <packagedElement xmi:type="uml:Package" xmi:id="_aiiPwkKtEequ9J027I-KGQ" name="event">
          <packagedElement xmi:type="uml:Class" xmi:id="_ajEbQUKtEequ9J027I-KGQ" name="MouseAdapter"/>
          <packagedElement xmi:type="uml:Class" xmi:id="_ajEbQ0KtEequ9J027I-KGQ" name="MouseEvent"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_ajFCVkKtEequ9J027I-KGQ" name="Point"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_ajIFoEKtEequ9J027I-KGQ" name="BasicStroke"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_ajIFokKtEequ9J027I-KGQ" name="Dimension"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_ajIssUKtEequ9J027I-KGQ" name="Font"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_ajIss0KtEequ9J027I-KGQ" name="FontMetrics"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_ajIstUKtEequ9J027I-KGQ" name="Graphics"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_ajJTwUKtEequ9J027I-KGQ" name="Graphics2D"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_aii20EKtEequ9J027I-KGQ" name="util">
        <packagedElement xmi:type="uml:Package" xmi:id="_aii20UKtEequ9J027I-KGQ" name="concurrent">
          <packagedElement xmi:type="uml:Class" xmi:id="_ajFpY0KtEequ9J027I-KGQ" name="ThreadLocalRandom"/>
        </packagedElement>
        <packagedElement xmi:type="uml:Class" xmi:id="_ajFpYUKtEequ9J027I-KGQ" name="ArrayList"/>
      </packagedElement>
      <packagedElement xmi:type="uml:Package" xmi:id="_ajLI8EKtEequ9J027I-KGQ" name="lang">
        <packagedElement xmi:type="uml:Class" xmi:id="_ajLI8UKtEequ9J027I-KGQ" name="Thread"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_aii20kKtEequ9J027I-KGQ" name="view">
      <packagedElement xmi:type="uml:Class" xmi:id="_aiyucEKtEequ9J027I-KGQ" name="Affichage">
        <ownedComment xmi:id="_ajU6A0KtEequ9J027I-KGQ">
          <body>la classe Affichage est le JPanel dans lequel on va afficher l'ovale</body>
        </ownedComment>
        <generalization xmi:id="_ajNlNUKtEequ9J027I-KGQ" general="_ajJTw0KtEequ9J027I-KGQ"/>
        <ownedAttribute xmi:id="_ajR2o0KtEequ9J027I-KGQ" name="serialVersionUID" visibility="private" isLeaf="true" isStatic="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#long"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_ajR2pEKtEequ9J027I-KGQ" value="1L"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajR2pUKtEequ9J027I-KGQ" name="LARG" isLeaf="true" isStatic="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_ajR2pkKtEequ9J027I-KGQ" value="600"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajR2p0KtEequ9J027I-KGQ" name="HAUT" isLeaf="true" isStatic="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_ajR2qEKtEequ9J027I-KGQ" value="400"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajSdsEKtEequ9J027I-KGQ" name="ovalHeight" isLeaf="true" isStatic="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_ajSdsUKtEequ9J027I-KGQ" value="100"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajSdskKtEequ9J027I-KGQ" name="ovalWidth" isLeaf="true" isStatic="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_ajSds0KtEequ9J027I-KGQ" value="30"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajSdtEKtEequ9J027I-KGQ" name="ovalDec" isLeaf="true" isStatic="true" isReadOnly="true">
          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          <defaultValue xmi:type="uml:LiteralString" xmi:id="_ajSdtUKtEequ9J027I-KGQ" value="10+ovalWidth/2"/>
        </ownedAttribute>
        <ownedAttribute xmi:id="_ajSdtkKtEequ9J027I-KGQ" name="etat" type="_aiw5QEKtEequ9J027I-KGQ" association="_ajXWN0KtEequ9J027I-KGQ"/>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajUS4EKtEequ9J027I-KGQ" name="Affichage" specification="_ajJTxUKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajUS4UKtEequ9J027I-KGQ" name="etat" type="_aiw5QEKtEequ9J027I-KGQ"/>
          <ownedParameter xmi:id="_ajUS4kKtEequ9J027I-KGQ" type="_aiyucEKtEequ9J027I-KGQ" direction="return"/>
          <language>java</language>
          <body>this.setPreferredSize(new Dimension(LARG, HAUT));
             this.etat = etat;
     </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajUS40KtEequ9J027I-KGQ" name="afficheOvale" specification="_ajM-IEKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajUS5EKtEequ9J027I-KGQ" name="g" type="_ajIstUKtEequ9J027I-KGQ"/>
          <language>java</language>
          <body>g.drawOval(ovalDec-ovalWidth/2,this.etat.getHauteur(),ovalWidth,ovalHeight);
     </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajUS5UKtEequ9J027I-KGQ" name="afficheLigne" specification="_ajM-IkKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajUS5kKtEequ9J027I-KGQ" name="g" type="_ajIstUKtEequ9J027I-KGQ"/>
          <language>java</language>
          <body>Point[] p = this.etat.getParcours().getParcours();
     	
     	int i=1;
     	while(i &lt; p.length) {
     		g.drawLine(p[i-1].x, p[i-1].y, p[i].x, p[i].y);
     		i++;
     	}
     </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajUS50KtEequ9J027I-KGQ" name="afficheScore" specification="_ajM-JEKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajUS6EKtEequ9J027I-KGQ" name="g" type="_ajIstUKtEequ9J027I-KGQ"/>
          <language>java</language>
          <body>int score = this.etat.getParcours().getPosition();
     	String strScore =&quot;Score : &quot;+score;
     	FontMetrics fm = getFontMetrics(getFont());
     	int printedLength = fm.stringWidth(strScore) +10; // on ajoute 10 pour pas etre collé au bord
     	g.drawString(strScore, LARG-printedLength, 20);
     </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajUS6UKtEequ9J027I-KGQ" name="printMidStr" specification="_ajM-JkKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajUS6kKtEequ9J027I-KGQ" name="str">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_ajUS60KtEequ9J027I-KGQ" name="height">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_ajUS7EKtEequ9J027I-KGQ" name="font" type="_ajIssUKtEequ9J027I-KGQ"/>
          <ownedParameter xmi:id="_ajUS7UKtEequ9J027I-KGQ" name="g" type="_ajIstUKtEequ9J027I-KGQ"/>
          <language>java</language>
          <body>FontMetrics fm = getFontMetrics(font);
     	int width = LARG/2 - fm.stringWidth(str)/2;
     	g.drawString(str,width,height);
     </body>
        </ownedBehavior>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajUS7kKtEequ9J027I-KGQ" name="paint" specification="_ajNlMEKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajUS70KtEequ9J027I-KGQ" name="g" type="_ajIstUKtEequ9J027I-KGQ"/>
          <language>java</language>
          <body>Graphics2D g2d = (Graphics2D) g;
     	g2d.setStroke(new BasicStroke(3.0f));
     	
     	//nettoie le JFrame 
     	g.clearRect(0, 0, LARG, HAUT);
     	if(etat.testPerdu()) {
     		etat.stopThreads();
     		Font newFont = new Font(&quot;TimesRoman&quot;, Font.PLAIN, 50);
     		g.setFont(newFont);
     		printMidStr(&quot;GAME OVER&quot;, HAUT/2, newFont, g);
     		printMidStr(&quot;Score:&quot;+this.etat.getParcours().getPosition(), HAUT/2+50, newFont, g);
     	}else {
     		this.afficheScore(g);
     	}
     	
     	
     	this.afficheOvale(g);
     	this.afficheLigne(g);
     	
     	g.drawOval(ovalDec, (int) etat.yPos0, 2, 2);
     	
     </body>
        </ownedBehavior>
        <ownedOperation xmi:id="_ajJTxUKtEequ9J027I-KGQ" name="Affichage" method="_ajUS4EKtEequ9J027I-KGQ">
          <eAnnotations xmi:id="_ajJ60EKtEequ9J027I-KGQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
            <details xmi:id="_ajJ60UKtEequ9J027I-KGQ" key="create"/>
          </eAnnotations>
          <ownedParameter xmi:id="_ajJTxkKtEequ9J027I-KGQ" name="etat" type="_aiw5QEKtEequ9J027I-KGQ"/>
          <ownedParameter xmi:id="_ajJ60kKtEequ9J027I-KGQ" type="_aiyucEKtEequ9J027I-KGQ" direction="return"/>
        </ownedOperation>
        <ownedOperation xmi:id="_ajM-IEKtEequ9J027I-KGQ" name="afficheOvale" visibility="private" method="_ajUS40KtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajM-IUKtEequ9J027I-KGQ" name="g" type="_ajIstUKtEequ9J027I-KGQ"/>
        </ownedOperation>
        <ownedOperation xmi:id="_ajM-IkKtEequ9J027I-KGQ" name="afficheLigne" visibility="private" method="_ajUS5UKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajM-I0KtEequ9J027I-KGQ" name="g" type="_ajIstUKtEequ9J027I-KGQ"/>
        </ownedOperation>
        <ownedOperation xmi:id="_ajM-JEKtEequ9J027I-KGQ" name="afficheScore" visibility="private" method="_ajUS50KtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajM-JUKtEequ9J027I-KGQ" name="g" type="_ajIstUKtEequ9J027I-KGQ"/>
        </ownedOperation>
        <ownedOperation xmi:id="_ajM-JkKtEequ9J027I-KGQ" name="printMidStr" visibility="private" method="_ajUS6UKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajM-J0KtEequ9J027I-KGQ" name="str">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
          </ownedParameter>
          <ownedParameter xmi:id="_ajM-KEKtEequ9J027I-KGQ" name="height">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/JavaPrimitiveTypes.library.uml#int"/>
          </ownedParameter>
          <ownedParameter xmi:id="_ajM-KUKtEequ9J027I-KGQ" name="font" type="_ajIssUKtEequ9J027I-KGQ"/>
          <ownedParameter xmi:id="_ajM-KkKtEequ9J027I-KGQ" name="g" type="_ajIstUKtEequ9J027I-KGQ"/>
        </ownedOperation>
        <ownedOperation xmi:id="_ajNlMEKtEequ9J027I-KGQ" name="paint" method="_ajUS7kKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajNlMUKtEequ9J027I-KGQ" name="g" type="_ajIstUKtEequ9J027I-KGQ"/>
        </ownedOperation>
      </packagedElement>
      <packagedElement xmi:type="uml:Association" xmi:id="_ajXWN0KtEequ9J027I-KGQ" name="" memberEnd="_ajXWOEKtEequ9J027I-KGQ _ajSdtkKtEequ9J027I-KGQ">
        <ownedEnd xmi:id="_ajXWOEKtEequ9J027I-KGQ" name="" type="_aiyucEKtEequ9J027I-KGQ" association="_ajXWN0KtEequ9J027I-KGQ"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_aiksAEKtEequ9J027I-KGQ" name="javax">
      <packagedElement xmi:type="uml:Package" xmi:id="_aiksAUKtEequ9J027I-KGQ" name="swing">
        <packagedElement xmi:type="uml:Class" xmi:id="_ajG3gEKtEequ9J027I-KGQ" name="JFrame"/>
        <packagedElement xmi:type="uml:Class" xmi:id="_ajJTw0KtEequ9J027I-KGQ" name="JPanel"/>
      </packagedElement>
    </packagedElement>
    <packagedElement xmi:type="uml:Package" xmi:id="_ailTEEKtEequ9J027I-KGQ" name="flappyBird">
      <packagedElement xmi:type="uml:Class" xmi:id="_aiwSMEKtEequ9J027I-KGQ" name="Main">
        <ownedComment xmi:id="_ajU5-UKtEequ9J027I-KGQ">
          <body>Créé des instances de Etat, Affichage et Control et les relie entre elles 
Création d'une fenêtre(JFrame) à laquelle on ajoute l'Affichage(JPanel)</body>
        </ownedComment>
        <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ajTr1kKtEequ9J027I-KGQ" name="main" specification="_aiwSMUKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_ajTr10KtEequ9J027I-KGQ" name="args">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ajTr2EKtEequ9J027I-KGQ" value="*"/>
          </ownedParameter>
          <language>java</language>
          <body>/* Création des instances de Etat, Affichage et Control*/
		Etat mod = new Etat(new Parcours());
		Affichage aff = new Affichage(mod);
		Click ctrl = new Click(mod);
		/* On ajoute l'instance de Control en tant que MouseListener de celle de Affichage*/
		aff.addMouseListener(ctrl);
		//on ajoute l'affichage au modèle
		mod.setAff(aff);

		// creation du thread Voler
		Voler Vol = new Voler(mod,aff);
		(new Thread(Vol)).start();
		//creation du thread Avancer
		Avancer Avance = new Avancer(mod); 
		(new Thread(Avance)).start();;
		
		//on passe les instances de Voler et Avancer à L'Affichage
		mod.setVol(Vol);
		mod.setAvance(Avance);
		
		/* Création JFrame*/
		JFrame fenetre = new JFrame(&quot;titre de la fenêtre&quot;);
		/* ajout de l'Affichage(JPanel) à la fenêtre (JFrame)*/
		fenetre.add(aff);
		
		fenetre.pack();
		fenetre.setVisible(true);
		fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
	</body>
        </ownedBehavior>
        <ownedOperation xmi:id="_aiwSMUKtEequ9J027I-KGQ" name="main" isStatic="true" method="_ajTr1kKtEequ9J027I-KGQ">
          <ownedParameter xmi:id="_aiwSMkKtEequ9J027I-KGQ" name="args">
            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
            <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aiwSM0KtEequ9J027I-KGQ" value="*"/>
          </ownedParameter>
        </ownedOperation>
      </packagedElement>
    </packagedElement>
    <profileApplication xmi:id="_adFvE0KtEequ9J027I-KGQ">
      <eAnnotations xmi:id="_adFvFEKtEequ9J027I-KGQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
        <references xmi:type="ecore:EPackage" href="pathmap://UMLLAB_PROFILES/UMLLab.profile.uml#UMLLabProfile-Annotation_2-UMLLabProfile"/>
      </eAnnotations>
      <appliedProfile href="pathmap://UMLLAB_PROFILES/UMLLab.profile.uml#UMLLabProfile"/>
    </profileApplication>
  </uml:Model>
  <UMLLabProfile:TargetLanguage xmi:id="_adGWIEKtEequ9J027I-KGQ" base_Package="_aYoF0EKtEequ9J027I-KGQ">
    <languageName>java</languageName>
  </UMLLabProfile:TargetLanguage>
  <UMLLabProfile:LegacyStyledElement xmi:id="_aisn0EKtEequ9J027I-KGQ" base_Element="_aisAwUKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Annotations xmi:id="_aisn0UKtEequ9J027I-KGQ" base_Element="_aisAwUKtEequ9J027I-KGQ">
    <annotations xmi:id="_aisn0kKtEequ9J027I-KGQ" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Array xmi:id="_aiudCEKtEequ9J027I-KGQ" base_Element="_aiudBUKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_aivrIkKtEequ9J027I-KGQ" base_Element="_aivrIUKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Annotations xmi:id="_aivrI0KtEequ9J027I-KGQ" base_Element="_aivrIUKtEequ9J027I-KGQ">
    <annotations xmi:id="_aivrJEKtEequ9J027I-KGQ" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:Reference xmi:id="_ajEbQkKtEequ9J027I-KGQ" base_Element="_ajEbQUKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajFCUEKtEequ9J027I-KGQ" base_Element="_ajEbQ0KtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajFpYEKtEequ9J027I-KGQ" base_Element="_ajFCVkKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajFpYkKtEequ9J027I-KGQ" base_Element="_ajFpYUKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajFpZEKtEequ9J027I-KGQ" base_Element="_ajFpY0KtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajG3gUKtEequ9J027I-KGQ" base_Element="_ajG3gEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajIFoUKtEequ9J027I-KGQ" base_Element="_ajIFoEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajIssEKtEequ9J027I-KGQ" base_Element="_ajIFokKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajIsskKtEequ9J027I-KGQ" base_Element="_ajIssUKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajIstEKtEequ9J027I-KGQ" base_Element="_ajIss0KtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajJTwEKtEequ9J027I-KGQ" base_Element="_ajIstUKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajJTwkKtEequ9J027I-KGQ" base_Element="_ajJTwUKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajJTxEKtEequ9J027I-KGQ" base_Element="_ajJTw0KtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajLI8kKtEequ9J027I-KGQ" base_Element="_ajLI8UKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajLwAkKtEequ9J027I-KGQ" base_Element="_ajLwAEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Annotations xmi:id="_ajLwA0KtEequ9J027I-KGQ" base_Element="_ajLwAEKtEequ9J027I-KGQ">
    <annotations xmi:id="_ajLwBEKtEequ9J027I-KGQ" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajNlMkKtEequ9J027I-KGQ" base_Element="_ajNlMEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Annotations xmi:id="_ajNlM0KtEequ9J027I-KGQ" base_Element="_ajNlMEKtEequ9J027I-KGQ">
    <annotations xmi:id="_ajNlNEKtEequ9J027I-KGQ" name="Override"/>
  </UMLLabProfile:Annotations>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajOzUEKtEequ9J027I-KGQ" base_Element="_ajOMQEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajOzU0KtEequ9J027I-KGQ" base_Element="_ajOzUUKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajOzVUKtEequ9J027I-KGQ" base_Element="_ajOzVEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajOzV0KtEequ9J027I-KGQ" base_Element="_ajOzVkKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajPaYEKtEequ9J027I-KGQ" base_Element="_ajOzWEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajPaY0KtEequ9J027I-KGQ" base_Element="_ajPaYUKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Generics xmi:id="_ajPaZUKtEequ9J027I-KGQ" genericsValue="Point" base_Element="_ajPaZEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajQBcEKtEequ9J027I-KGQ" base_Element="_ajPaZEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajQBc0KtEequ9J027I-KGQ" base_Element="_ajQBckKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajQBdUKtEequ9J027I-KGQ" base_Element="_ajQBdEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajQBeEKtEequ9J027I-KGQ" base_Element="_ajQBdkKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajQogUKtEequ9J027I-KGQ" base_Element="_ajQogEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajQog0KtEequ9J027I-KGQ" base_Element="_ajQogkKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajQohUKtEequ9J027I-KGQ" base_Element="_ajQohEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajQoh0KtEequ9J027I-KGQ" base_Element="_ajQohkKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajRPkUKtEequ9J027I-KGQ" base_Element="_ajQoiEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajRPlEKtEequ9J027I-KGQ" base_Element="_ajRPkkKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajRPl0KtEequ9J027I-KGQ" base_Element="_ajRPlkKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajRPmUKtEequ9J027I-KGQ" base_Element="_ajRPmEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajR2oEKtEequ9J027I-KGQ" base_Element="_ajRPmkKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajR2okKtEequ9J027I-KGQ" base_Element="_ajR2oUKtEequ9J027I-KGQ"/>
  <UMLLabProfile:LegacyStyledElement xmi:id="_ajSdt0KtEequ9J027I-KGQ" base_Element="_ajSdtkKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajWIEEKtEequ9J027I-KGQ" base_Element="_ajVhAEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajWIE0KtEequ9J027I-KGQ" base_Element="_ajWIEUKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajWIFkKtEequ9J027I-KGQ" base_Element="_ajWIFEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajWvIEKtEequ9J027I-KGQ" base_Element="_ajWIF0KtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajWvI0KtEequ9J027I-KGQ" base_Element="_ajWvIUKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajWvJkKtEequ9J027I-KGQ" base_Element="_ajWvJEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajXWMEKtEequ9J027I-KGQ" base_Element="_ajWvJ0KtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajXWM0KtEequ9J027I-KGQ" base_Element="_ajXWMUKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajXWNkKtEequ9J027I-KGQ" base_Element="_ajXWNEKtEequ9J027I-KGQ"/>
  <UMLLabProfile:Reference xmi:id="_ajX9QEKtEequ9J027I-KGQ" base_Element="_ajXWN0KtEequ9J027I-KGQ"/>
</xmi:XMI>
