This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
2018_2019:s3:concprogobjet:td:td3 [2018/09/30 17:48] blay [Question 2 : Implémenter tout ce qui concerne les véhicules avec les tests associés (20mn)] |
2018_2019:s3:concprogobjet:td:td3 [2018/10/30 13:19] blay [RETOURS SUR LES RENDUS de l'an dernier] |
||
---|---|---|---|
Line 2: | Line 2: | ||
Basé sur TP3 de l'Université Montpellier II — L3 Informatique 2008/09 Programmation par objets en Java | Basé sur TP3 de l'Université Montpellier II — L3 Informatique 2008/09 Programmation par objets en Java | ||
- | <note warning> Vous avez <color blue/lightgrey>2 heures.</color>\\ | + | <note tip> Vous avez <color blue/lightgrey>2 heures.</color>\\ |
- | Vous rendrez ce que vous avez fait à la fin des 2 heures.</note>. | + | Vous rendrez ce que vous avez fait à la fin des 2 heures. |
+ | </note>. | ||
Line 40: | Line 41: | ||
==== Question 2 : Implémenter tout ce qui concerne les véhicules avec les tests associés (20mn) ==== | ==== Question 2 : Implémenter tout ce qui concerne les véhicules avec les tests associés (20mn) ==== | ||
* {{:2018_2019:s3:concprogobjet:td:convoitest.java|Voici un code de test}}. | * {{:2018_2019:s3:concprogobjet:td:convoitest.java|Voici un code de test}}. | ||
- | * Commentez les tests pour lesquels les codes ne sont pas encore implémentés. | + | * Mettez en commentaires les tests pour lesquels les codes ne sont pas encore implémentés, vous les utiliserez au fur et à mesure. |
* Adaptez-le (ou votre code) pour tester vos codes. | * Adaptez-le (ou votre code) pour tester vos codes. | ||
==== Question 3 : Implémenter la notion de convoi (20mn max) ==== | ==== Question 3 : Implémenter la notion de convoi (20mn max) ==== | ||
Line 53: | Line 54: | ||
==== Question 5 : Extension un peu moins facile (20mn) ==== | ==== Question 5 : Extension un peu moins facile (20mn) ==== | ||
- | Les ingénieurs de l'entreprise ont mis au moins un calculateur (//Class Simulator//) qui permet de calculer la consommation moyenne en carburant d'un engin, il expose donc la méthode statique : public static double consumption (Machine machine, int speed), par exemple | + | Les ingénieurs de l'entreprise ont mis au moins un calculateur (//Class Simulator//) qui permet de calculer la consommation moyenne en carburant d'un engin, il expose donc la méthode statique : public static double consumption (Machine machine, int speed), par exemple((Le code ci-dessous présente des constantes qui doivent être éliminées dans une bonne version.)). |
<code java> | <code java> | ||
Line 79: | Line 80: | ||
- | {{fa>arrow-circle-right?24}} On veut pouvoir calculer | + | {{fa>arrow-circle-right?24}} On veut pouvoir calculer la consommation totale d'un convoi allant à sa vitesse maximale (c'est-à-dire, on le rappelle, à la plus petite des vitesses maximales des véhicules du convoi). |
- | - la consommation totale d'un convoi allant à sa vitesse maximale (c'est-à-dire, on le rappelle, à la plus petite des vitesses maximales des véhicules du convoi). | + | |
* **Vous n'avez pas le droit de modifier** l'interface ou le simulateur. | * **Vous n'avez pas le droit de modifier** l'interface ou le simulateur. | ||
* On considère que le poids d'un véhicule est son poids à vide plus sa charge s'il en a une. | * On considère que le poids d'un véhicule est son poids à vide plus sa charge s'il en a une. | ||
Line 89: | Line 89: | ||
Que feriez-vous si l'on vous disait que l'on veut pouvoir créer des véhicules à partir de leur poids à vide, charge maximale, etc... ? | Que feriez-vous si l'on vous disait que l'on veut pouvoir créer des véhicules à partir de leur poids à vide, charge maximale, etc... ? | ||
- | |||
==== RENDU ==== | ==== RENDU ==== | ||
- | A la fin du TD, en l'état, un document contenant les Diagrammes UML (essentiellement un diagramme de classes) et les remarques éventuelles, réposnes aux questions, les codes et tests associés. | + | **A la fin du TD, en l'état,** |
+ | - un document contenant | ||
+ | - les Diagrammes UML (essentiellement un diagramme de classes) | ||
+ | - les remarques éventuelles, réponses aux questions | ||
+ | - une copie d'écran de la couverture de test comme par exemple {{ :2018_2019:s3:concprogobjet:td:capture_d_e_cran_2018-10-01_a_08.15.24.png?direct&200|}} | ||
+ | - les codes et tests associés. | ||
- | Dépôt sur [[http://jalon.unice.fr/cours/blay/Cours-blay-20150930110548/BoiteDepot-blay-20171008181551623837|jalon]] avec comme nom : GroupeNumero - Noms des etudiants | + | Dépôt sur [[http://jalon.unice.fr/cours/blay/Cours-blay-20150930110548/BoiteDepot-blay-20171008181551623837|jalon]] avec comme nom : GroupeNumero - Noms des etudiants |
- | ==== RETOUR SUR LES RENDUS ==== | + | ==== RETOURS SUR LES RENDUS de l'an dernier ==== |
- | ON évite ou on ne fait pas : | + | <note warning> |
- | * la duplication de code par exemple des setCharge | + | **On ne fait pas :** |
- | * nom de variable d'instance, méthode en majuscule !!! | + | - dupliquer les variables EMPTY_WEIGHT |
+ | - la //duplication de code// par exemple des setCharge | ||
+ | - Des noms de variable d'instance ou des méthodes en majuscule !!! | ||
* Définir une classe abstraite et implementer toutes ses méthodes de manière absurde : on ne sait même pas ce qui doit être redéfini (eg. vitesseMax à 0)! | * Définir une classe abstraite et implementer toutes ses méthodes de manière absurde : on ne sait même pas ce qui doit être redéfini (eg. vitesseMax à 0)! | ||
- | * Des tests sous forme de toString | + | * Des tests sous forme de toString ! imaginez le coût d'une modification d'un toString !! et que testez-vous vraiment? |
- | * aVOIR UNE CHARGE MAX ET NE PAS EN TENIR COMPTE en chargeant le véhicule | + | * AVOIR UNE CHARGE MAX ET NE PAS EN TENIR COMPTE en chargeant le véhicule !! |
- | * passer la charge à un vehicule qui a déjà une charge ! | + | * Passer la charge à un vehicule qui a déjà une charge ! |
- | * recopier les un sur les autres des codes pas très malins ou qui datent d'une vieille version de java | + | * Recopier les un sur les autres des codes pas très malins ou qui datent d'une vieille version de java ou pire d'une vieille version du sujet ! |
- | * prévoir une méthode d'accès à la vitesse max et accéder directement à une variable "constante"... dans convoi et ne même pas s'en rendre compte dans les tests!! | + | * Prévoir une méthode d'accès à la vitesse max et accéder directement à une variable "constante"... dans convoi et ne même pas s'en rendre compte dans les tests!! |
- | * Pas de S à la fin du nom d'une classe comme Vehicule. | + | * Mettre unS à la fin du nom d'une classe comme Vehicule. |
- | * ne pas savoir calculer le min d'un ensemble et ne pas faire de tests! | + | * Ne pas savoir calculer le min d'un ensemble et ne pas faire de tests! |
- | * BANIR LES toString dans vos assert.. imaginez le coût d'une modification d'un toString !! et que testez-vous vraiment? | + | * Mettre un attribut à la place d'une association ! Ne pas mettre les cardinalités ! |
- | * Ne mettez pas un attribut quand vous pouvez mettre une association ! Mettez les cardinalités ! | + | * Utilisez une valeur arbitraire comme 150... si demain vous gérez des convois de ferrari, vous devrez aller modifier votre code de convoi !! Integer.MAX_VALUE résout votre problème par exemple. |
- | * N'utilisez pas des toString dans vos codes pour gérer les cas d'erreur : mettez votre gestion des cas d'erreur en commentaire par exemple add-charge ne fait rien si... et METTEZ des tests pour vérifier que vous faites bien ce que vous dites. Si vraiment vous en avez besoin, mettez un logger ! | + | |
- | * aTTENTION AU CHOIX ARBITRAIRE D4UNE valeur max comme 150... si demain vous gérez des convois de ferrari, vous devrez aller modifier votre code de convoi !! Integer.MAX_VALUE résoud votre problème par exemple. | + | |
- | * cOMMENT FAIRE POur qu'un véhicule soit un engin???? Il faut répondre à cette question en TD. | + | |
- | * Mettez le toString en facteur surtout quand vous le recopiez partout! | + | |
- | * Prévoir en dure le calcul de la vitesse max et autoriser la modification de la charge !! | + | |
* Ne définissez pas toutes vos variables en public ou même protected, simplement parce que vous ne savez pas utiliser des cascades de constructeurs ou des accesseurs! Et réfléchissez à la cohérence de votre code même sur un exemple aussi simple ! | * Ne définissez pas toutes vos variables en public ou même protected, simplement parce que vous ne savez pas utiliser des cascades de constructeurs ou des accesseurs! Et réfléchissez à la cohérence de votre code même sur un exemple aussi simple ! | ||
* Sur PAPIER, POUR NOTER QU'UNE CLASSE EST abstraite, vous pouvez simplement écrire <abstract>, idem pour une méthode. | * Sur PAPIER, POUR NOTER QU'UNE CLASSE EST abstraite, vous pouvez simplement écrire <abstract>, idem pour une méthode. | ||
Line 145: | Line 146: | ||
} | } | ||
</code> | </code> | ||
+ | |||
+ | </note> |