User Tools

Site Tools


2016_2017:s3:concprogobjet:td:td3

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
2016_2017:s3:concprogobjet:td:td3 [2016/10/22 20:38]
blay [Question 5 : Extension un peu moins facile]
2016_2017:s3:concprogobjet:td:td3 [2016/11/08 18:54] (current)
blay [RETOUR SUR LES RENDUS]
Line 42: Line 42:
  
 ==== Question 5 : Extension un peu moins facile ==== ==== Question 5 : Extension un peu moins facile ====
-Les ingénieurs de l'​entreprise ​ ont mis au moins un calculateur (Class Utilitaire) qui  permet de calculer la consommation moyenne en carburant d'un engin, il expose donc la méthode statique : public static double consommation (Engin e, int v)((Imaginez une fonction très simple)).+Les ingénieurs de l'​entreprise ​ ont mis au moins un calculateur (Class Utilitaire) qui  permet de calculer la consommation moyenne en carburant d'un engin, il expose donc la méthode statique : public static double consommation (Engin e, int vitesse)((Imaginez une fonction très simple)).
  
 Un engin est défini par une interface comme suit :  Un engin est défini par une interface comme suit : 
-Interface Engin { int getWeight(); ​in getHorsePower()}+Interface Engin { int getWeight(); ​int getHorsePower()}
  
 On considère que tous les véhicules dans notre entreprise ont la même puissance. On considère que tous les véhicules dans notre entreprise ont la même puissance.
  
 On veut pouvoir savoir 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). On veut pouvoir savoir 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).
 +
 +
 +==== Questions ​ facultatives à ne pas traiter dans le TD ====
 +
 +Que feriez-vous si l'on vous disait que l'on veut pouvoir créer das véhicules à partir de leur poids à vide, charge maximale, etc... ?
  
 ==== RENDU ==== ==== RENDU ====
Line 55: Line 60:
 A la fin du TD, en l'​état,​ Diagrammes UML (essentiellement un diagramme de classes), les codes et tests associés. A la fin du TD, en l'​état,​ Diagrammes UML (essentiellement un diagramme de classes), les codes et tests associés.
  
-Dépôt sur jalon avec comme nom : GroupeNumero - Noms des etudiants+Dépôt sur [[http://jalon.unice.fr/​cours/​blay/​Cours-blay-20150930110548/​BoiteDepot-blay-20151007231635810478?​menu=depots|jalon]] ​avec comme nom : GroupeNumero - Noms des etudiants
  
  
  
 +==== RETOUR SUR LES RENDUS ====
  
 +ON évite ou on ne fait pas : 
 +  * la duplication de code par exemple des setCharge
 +  * nom de variable d'​instance,​ méthode 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)! 
 +  * Des tests sous forme de toString
 +  * 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 !
 +  * recopier les un sur les autres des codes pas très malins ou qui datent d'une vieille version de java
 +  * 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.
 +  * 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?
 +  * Ne mettez pas un attribut quand vous pouvez mettre une association ! Mettez les cardinalités !
 +  * 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 !
 +  * Sur PAPIER, POUR NOTER QU'UNE CLASSE EST abstraite, vous pouvez simplement écrire <​abstract>,​ idem pour une méthode. ​
 +  * HORREUR!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (piste : Polymorphisme ce n'est pas une maladie contagieuse.)
 +<code java>
 +public double getVitesseMax(){
 +        double resultat =150;
 +        double resultat2 =0;
 +        for (Vehicule v : listeVehicule) {
 +            if(v instanceof PetitBus){
 +                resultat2=((PetitBus) v).getVitesseMax();​
 +            }
 +            if(v instanceof CamionCiterne){
 +                resultat2=((CamionCiterne) v).getVitesseMax();​
 +            }
 +            if(v instanceof CamionBache){
 +                resultat2=((CamionBache) v).getVitesseMax();​
 +            }
 +            if(v instanceof VoitureSansPermis){
 +                resultat2=((VoitureSansPermis) v).getVitesseMax();​
 +            }
 +            if (resultat2<​resultat){
 +                resultat = resultat2;
 +            }
 +        }
 +        return resultat;
 +    }
 +   </​code>​
2016_2017/s3/concprogobjet/td/td3.1477161523.txt.gz · Last modified: 2016/10/22 20:38 by blay