Julien Dehos il y a 8 ans
Parent
commit
259f744b3a
4 fichiers modifiés avec 119 ajouts et 12 suppressions
  1. 35 11
      CM2/CM2.md
  2. 26 0
      CM2/conception_mvc.dot
  3. 52 0
      CM2/conception_vue.dot
  4. 6 1
      Makefile

+ 35 - 11
CM2/CM2.md

@@ -5,7 +5,7 @@ date: 2016-05-21
 
 # Conception d’un logiciel
 
-## Quoi-qu’est-ce ?
+## Qu'est-ce-que la conception ?
 
 - « plan du code » (diagrammes de classes...)
 - au début du projet, permet de prévoir le code à écrire
@@ -20,6 +20,11 @@ $\rightarrow$ doit correspondre aux fonctionnalités prévues et au code réel
 - si possible, utiliser un formalisme classique (UML)
 - utiliser plusieurs niveaux d’abstraction (vue d’ensemble, vues détaillées)
 
+
+|:---:|:---:|
+|architecture générale (MVC)| architecture des vues |
+|![](conception_mvc.svg)| ![](conception_vue.svg) |
+
 ## Étape de conception
 
 - étape **très importante**, à faire avant le développement
@@ -41,6 +46,15 @@ $\rightarrow$ doit correspondre aux fonctionnalités prévues et au code réel
 - découper en étapes et les ordonner
 - implémenter (coder, compiler, tester) étape par étape
 
+```
+fonctionnalité : afficher le stock
+étapes : 
+    1. méthode getLignes de Stock retournant un ensemble de string (tester avec un TU)
+    2. affichage dans la VueConsole en utilisant getLignes (tester avec le main)
+    3. connexion du signal d'affichage pour VueGraphique (tester avec le main)
+    4. affichage dans la VueGraphique en utilisant getLignes (tester avec le main)
+```
+
 ## Conseils sur le développement en équipe
 
 - faire le point régulièrement : travail fait, travail à faire
@@ -78,6 +92,17 @@ $\rightarrow$ à utiliser pour les modules de base (traitement de données) voir
     - commencer par écrire le pseudo-code de l’algo en commentaire
     - traduire chaque ligne de pseudo-code en code réel
     - laisser le pseudo-code en commentaire
+
+```cpp
+void normaliserVector(std::vector<float> & v) {
+    // calculer la somme des éléments
+    float s = std::accumulate(v.begin(), v.end(), 0, std::plus<float>());
+    // diviser chaque élément par la somme
+    for (float & f : v) 
+        f /= s;
+}
+```
+
 - intérêt :
     - code plus facile à écrire
     - code plus facile à relire
@@ -86,14 +111,13 @@ $\rightarrow$ très utile quand le code à écrire n’est pas trivial
 
 ## Gestion d’erreurs
 
-- assertions
-- logs
-- codes de retour, variables d’état
-- exceptions
-
-$\rightarrow$ problème difficile
-
-$\rightarrow$ se mettre d’accord sur la façon de faire au début du projet
+- problème difficile
+- se mettre d’accord sur la façon de faire au début du projet
+- outils possibles :
+    - assertions
+    - logs
+    - codes de retour, variables d’état
+    - exceptions
 
 ## Conventions de code
 
@@ -136,7 +160,7 @@ icalcomponent * getPtrIcal() const ;
 
 ## Github
 
-- [https://github.com](https://github.com)
+- <https://github.com>
 - hébergement de dépôts git 
 - gestion des collaborateurs + droits d'accès
 - gestion de projet basique (tickets, jalons, pulls request, wiki, stats...)
@@ -427,7 +451,7 @@ $ git log --oneline --decorate --graph
 
 - sur [github](https://github.com) :
     - créer un compte pour chaque étudiant (ou binôme) du groupe
-    - créer un dépôt pour le groupe (et ajouter les collaborateurs)
+    - créer un dépôt pour le projet du groupe (et ajouter les collaborateurs)
 - faire une conception prévisionnelle du logiciel
 - faire un planning prévisionnel (et les tickets/jalons correspondants sur github)
 

+ 26 - 0
CM2/conception_mvc.dot

@@ -0,0 +1,26 @@
+digraph G {
+
+    rankdir = LR
+
+    node [
+        fontname = "Helvetica"
+        fontsize = 10
+        shape = "record"
+    ]
+
+    Controleur [ label = "{ Controleur }" ]
+
+    Vue [ label = "{ Vue }" ]
+
+    Stock [ label = "{ Stock }" ]
+
+    edge [ 
+        dir = both
+        arrowhead = "none" 
+        arrowtail = "diamond" 
+    ]
+    Controleur -> Vue
+    Controleur -> Stock
+
+}
+

+ 52 - 0
CM2/conception_vue.dot

@@ -0,0 +1,52 @@
+digraph G {
+
+    node [
+        fontname = "Helvetica"
+        fontsize = 10
+        shape = "record"
+    ]
+
+    Vue [
+        label = "{
+                Vue
+                |
+                - \_controleur : Controleur & \l
+                |
+                + Vue(c: Controleur &)  \l
+                + «pure virtual» actualiser(): void \l
+                + «pure virtual» run(): void \l
+                }"
+    ]
+
+    VueConsole [
+        label = "{
+                VueConsole
+                |
+                |
+                + VueConsole(c: Controleur &)  \l
+                + actualiser(): void  \l
+                + run(): void  \l
+                }"
+    ]
+
+    VueGraphique [
+        label = "{
+                VueGraphique
+                |
+                |
+                + VueGraphique(c: Controleur &)  \l
+                + actualiser(): void  \l
+                + run(): void  \l
+                }"
+    ]
+
+    edge [ 
+        dir = both
+        arrowhead = "none" 
+        arrowtail = "empty" 
+    ]
+    Vue -> VueConsole
+    Vue -> VueGraphique 
+
+}
+

+ 6 - 1
Makefile

@@ -1,8 +1,13 @@
+DOT_FILES = $(shell find . -name "*.dot")
+SVG_FILES = $(DOT_FILES:.dot=.svg)
 
-all: tmp/index.html tmp/index_slides.html tmp/CM1.html tmp/CM1_slides.html tmp/CM2.html tmp/CM2_slides.html tmp/CM3.html tmp/CM3_slides.html
+all: $(SVG_FILES) tmp/index.html tmp/index_slides.html tmp/CM1.html tmp/CM1_slides.html tmp/CM2.html tmp/CM2_slides.html tmp/CM3.html tmp/CM3_slides.html
 	cp www/template.css www/slidy.css www/slidy.js tmp
 	cp CM?/*.png CM?/*.svg tmp
 
+%.svg: %.dot
+	dot -Tsvg -o $@ $<
+
 tmp/before.html: www/before.md
 	mkdir -p tmp
 	pandoc -o $@ $<