TP java

a marqué ce sujet comme résolu.

Salut,

Le plus simple serait que tu postes ici l'énoncé de ton TP (on ne peut pas le deviner ;) ) avec le code que tu as écrit. Ensuite, nous pourrons te guider. :)

Pour poster du code sur le forum, écris :

1
2
3
```java
 ton code ici
 ```

ça colorera ton code.

Bon courage, GuilOooo

+0 -0

Tu ne pourras pas envoyer l'énoncé sur ZdS si c'est au format PDF. Tu peux peut-être l'uploader quelque part et nous donner le lien ? (genre http://dl.free.fr ).

Pour les classes, une dizaine, ça commence à faire beaucoup en effet… Peut-être que tu pourrais juste nous poster celles qui sont en rapport avec ta question ?

+0 -0

voici le lien du tp : http://dl.free.fr/bVwdsHpSG.

pour les classes, je commence avec celle qui me font douter.

Il s'agit de la classe véhicule en premier dont voici le code:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.List;

public class Vehicule implements Option {
    private Double prix;
    private String nom;
    private List <Option> options;
    private Marque nomMarque;
    private Moteur moteur;

    public Vehicule(){

    }

    public String toString(){
        return "description "+this.prix+"mon nom : "+this.nom;
    }

    public void addOption(Option opt) {

    }

    public Marque getMarque(){
        return nomMarque;
    }

    public List<Option> getOptions() {
        return options;
    }

    public Double getPrix() {
        return prix;
    }

}

et puis garage:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import java.util.List;

public class Garage {

    List<Vehicule> voiture;

    public String tostring() {
        return "";
    }

    public void add(Vehicule voit) {

    }
}

puis moteur :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Moteur {

    private TypeMoteur type;
    private String cylindre;
    private Double prix;

    public Moteur(){

    }

    public Moteur(String cylindre,Double prix){
        this.cylindre = cylindre;
        this.prix = prix;
    }

    public String toString() {
        return this.cylindre+this.prix+this.type;
    }

    public Double getPrix(){
        return prix;
    }

    public void setMoteur() {

    }
}

merci d'avance

+0 -0

J'insiste : quand tu postes un code sur le forum, tu devrais vraiment utiliser les balises, comme ceci :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
```java
import java.util.List;

public class Vehicule implements Option {
    private Double prix;
    private String nom;
    private List <Option> options;
    private Marque nomMarque;
    private Moteur moteur;

    public Vehicule(){

    }

    public String toString(){
        return "description "+this.prix+"mon nom : "+this.nom;
    }

    public void addOption(Option opt) {

    }

    public Marque getMarque(){
        return nomMarque;
    }

    public List<Option> getOptions() {
        return options;
    }

    public Double getPrix() {
        return prix;
    }

}
```

Ça fait apparaître ton code coloré, comme ceci :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.List;

public class Vehicule implements Option {
    private Double prix;
    private String nom;
    private List <Option> options;
    private Marque nomMarque;
    private Moteur moteur;

    public Vehicule(){

    }

    public String toString(){
        return "description "+this.prix+"mon nom : "+this.nom;
    }

    public void addOption(Option opt) {

    }

    public Marque getMarque(){
        return nomMarque;
    }

    public List<Option> getOptions() {
        return options;
    }

    public Double getPrix() {
        return prix;
    }

}

C'est plus agréable à lire, n'est-ce pas ? :) Il suffit de rajouter un petit « ```java » avant ton code et un « ``` » après.


Sinon, qu'est-ce qui te fait douter dans ces classes, exactement ? Quel est ton problème dans ce code ?

+1 -0

Je ne suis pas le seul sur ce forum, d'autres gens vont peut-être répondre ! Aussi, les membres ne sont pas forcément devant leur écran toute la journée. :)

Je ne comprends pas trop pourquoi tu trouves que tu n'a pas bien écrit le code de tes méthodes. Rien ne me choque pour le moment. Par contre, tu n'as pas encore fait les méthodes “addOption” et “add”. Ce sont elles qui te bloquent ?

+0 -0

J'aimerais en outre aussi savoir si ma classe BarreDetoit a été bien écrite

1
2
3
4
5
6
7
public class BarreDetoit implements Option {

    public Double getPrix() {
        return prix;
    }

}

de même que me fonction setMoteur de la classe Moteur

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void setMoteur() {
        System.out.println("Choisir le nom du moteur à changer ! ");
        do {
            System.out.println("1 pour moteur DIESEL");
            System.out.println("2 pour moteur ESSENCE");
            System.out.println("3 pour moteur HYBRIDE");
            System.out.println("4 pour moteur ELECTRIQUE");

            choix = sc.nextInt();

            if (choix == 1) {
                type =TypeMoteur.DIESEL;
            } else if(choix == 2){
                type = type.ESSENCE;
            }else if(choix == 3){
                type = TypeMoteur.HYBRIDE;
            }else
                type = TypeMoteur.ELECTRIQUE;


        } while (choix !=1 && choix !=2 && choix !=3 && choix != 4);

    }

Je ne suis qu'un débutant et j'èspère que je ne vous dérange pas trop. Merci d'avance.

Merci pour la coloration du code. :)

1
2
3
4
public void addOption(Option opt) {
        options = new ArrayList<>();
        options.add(opt);
}

J'aurais mis le options = new ArrayList dans le constructeur de ta classe. En effet, avec ton code, chaque fois qu'on ajoute une option à une voiture, tu :

  1. remplaces la liste des options par une nouvelle liste (vite) ;
  2. ajoutes à cette nouvelle liste l'option qu'on t'a demandé t'ajouter.

Résultat des courses : toutes les options qui avaient été ajoutées avant sont perdues ! Il semble donc plus logique de d'assigner à option une liste vide au moment où tu crées ton véhicule, puis à te contenter de rajouter des options par la suite. C'est pour cela que je te conseille de mettre la première ligne dans le constructeur plutôt que dans addOption.

Après, c'est difficile de dire ce qui est « bien écrit » ou non sans avoir le reste du code et sans trop avoir le contexte du cours (à quoi les profs font attention, etc.).

Comme je l'ai déjà dit, je ne suis pas expert en Java… Et notre expert local est parti en vacances. Si quelqu'un d'autre a des idées, qu'ils n'hésite pas à répondre ! :)

+2 -0

Dans ce cas la voiture possède une liste d'Options, comme tu l'as d'ailleurs écrit dans la classe Vehicule. Mais il n'y a pas de raison qu'elle implémente l'interface Option.

Une interface c'est un contrat. La classe qui implémente l'interface s'engage à respecter le contrat.

Par exemple, Vehicule pourrait implémenter l'interface ObjetQuiRoule. Dans l'interface ObjetQuiRoule on mettrait une méthode avance(), recule() qui sont propre à tous les objets qui roulent, chaque classe qui implémente l'interface aura alors sa propre façon de l'implémenter. Par exemple, la voiture avance et recule grâce à son moteur.

Dans ton cas, options n'est qu'un attribut de la classe Vehicule. Elle possède des options, voilà tout.

C'est clair, tu vois la différence ? Ou il faut qu'on t'explique mieux ?

+2 -0

je vous ai compris mais je vais refaire tout le code de la classe et vous envoyé cela après. j'aimerais comprendre pourquoi le type de retour de la méthode getPrix() est Double au lieu de double et une idée si possible de comment je pourrai l'invoquer dans les classes associées

Double et double sont plus ou moins semblables. Double est la classe correspondant au type primitif double. Ils permettent tous les deux de stocker un nombre décimal. L'un se comporte donc comme une classe et l'autre comme un type primitif. Petit exemple :

1
2
3
4
5
6
7
Double d1 = 170.5;
Double d2 = 170.5;
double d3 = 160.5;
double d4 = 160.5;

System.out.println(d1==d2); // affichera false car la comparaison s'effectue sur la référence des deux objets de type Double.
System.out.println(d3==d4); // affichera true car la comparaison s'effectue sur les valeurs des deux doubles

Personnellement, ma stratégie est la suivante: - Lorsque mon attribut/argument peut avoir une valeur nulle, j'utilise la classe Double. - Lorsque mon attribut/argument ne peut valeur nulle, j'utilise le type primitif double.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte