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/26 11:22]
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.
Line 64: Line 64:
  
  
 +==== 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.1477473758.txt.gz · Last modified: 2016/10/26 11:22 by blay