Java Classe Horloge

Steve17_17 - Modifié le 6 mars 2024 à 01:24
mamiemando Messages postés 33120 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 21 mai 2024 - 12 mars 2024 à 15:01

Bonjour tout le monde,

S'il vous plaît, j'aimerais avoir des remarques et si possible des corrections sur cet exercice. On considère la classe HorlogeHM suivante.

public CLASS HorlogeHM {
    public static int nbHorloge = 0;
    private int heure;
    protected int min;

    ... public HorlogeHM (int h, int m) {...}

    public void incrementMinute() {...}

    public void incrementHeure() {...}

    ...getMinute() {...}

    ... getHeure() {...}

    public void affiche() {
        System.out.print(this.heure + "H" + this.min + "Min");
    }
}

L'implémentation de la classe HorlogeHM ci-dessus est incomplète. Certaines des questions suivantes permettent de proposer des compléments de code.

1- Quels sont les attributs qui sont accessible depuis une méthode exécutée dans une instance:

a. De la même classe?

On a: h, m, nbHorloge

b. D'une sous classe de HorlogeHM situé dans le même package.

On a: Min, H

c. D'une sous classe de HorlogeHM situé dans un autre package.

(Il n'y en a pas)

d. D'une classe quelconque d'un autre package ? 

On a: Heure, Minute

2- Décrire correctement chacune des méthodes suivantes :

a. Le constructeur dans lequel l'attribut nbHorloge devra être incrémenté.

public void increment nbHorloge () {
  for (int i = 0; i <= nbHorloge; i++) {
    System.out.println(i);}
  }
}

b. La méthode incrementMinute().

public void incrementMinute() {
   Minute=0;
   for (i = 0; i <= Minute; i++) {
       System.out.println(i);
   }
}

c. La méthode incrementHeure().

public void incrementHeure() {
    Heure = 0;
    for (i = 0; i <= Heure; i++) {
        System.out.println(i);
    }
}

d. La méthode getMinute().

public getMinute(this.Minute) {
    return this.Minute = Minute; 
}

e. La méthode getHeure().

public getHeure(this.Heure) {
    return this.Heure = Heure; 
}

3- Implémenter une classe exécutable TestHorloge dans laquelle vous allez :

  • déclarer une instance H de HorlogeHM initialisée à 23h59min,
  • incrémenter l'heure de H, afficher l'attribut nbHorloge,
  • afficher H.
public class TestHorloge{
    int h = 23;
    int min = 59;
    for(int i = 0; i <= 23; i++) {
        H = H + i; 
    }
    for(int i = 0; i <= 59; i++) {
        Min=Min+i;
    }
}

public void afficher () {
    System.out.println (H)
}

4- Concevoir une nouvelle classe HorlogeHMS qui considère qu'une horaire est la donnée de 3 entiers (heure, min, sec) et qui possède une méthode getSeconde en plus des méthodes de HorlogeHM.

J'ai eu un peu d'incompréhensions ici

A voir également:

3 réponses

Whismeril Messages postés 19045 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 21 mai 2024 912
26 févr. 2024 à 22:31

Bonsoir

pour tes prochains messages, il faudra faire comme décrit là https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code pour poster tes morceaux de code.

Y'a pas de bonne façon de le dire, alors j'y vais d'une traite, y'a rien qui est bon.

Reprends ton cours sur les objets. Cherche la définition de ce qu'est un attribut, et reviens proposer la liste des attributs de HorlogeHM en justifiant.


0
Steve17_17 Messages postés 17 Date d'inscription mardi 11 juillet 2023 Statut Membre Dernière intervention 9 mars 2024
4 mars 2024 à 12:43

D'accord merci

0
Whismeril Messages postés 19045 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 21 mai 2024 912
4 mars 2024 à 13:16

Remercier c'est bien, mais si tu veux progresser vaudrait faire l'exercie.

Donc quels sont les attributs? Comment le sais tu?

0
Steve17_17 Messages postés 17 Date d'inscription mardi 11 juillet 2023 Statut Membre Dernière intervention 9 mars 2024 > Whismeril Messages postés 19045 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 21 mai 2024
4 mars 2024 à 16:03

D'accord pour le

1.a) nbHorloge (car il s'agit d'une visibilité public)

1.b) Minute, Heure (à cause de la présence du setter)

1.c) là je pense qu'il n'y en a pas puisqu'il y'a un seul package

1.d) je pense aussi qu'il n'y en a pas

0
Whismeril Messages postés 19045 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 21 mai 2024 912 > Steve17_17 Messages postés 17 Date d'inscription mardi 11 juillet 2023 Statut Membre Dernière intervention 9 mars 2024
4 mars 2024 à 17:01

1.a) nbHorloge (car il s'agit d'une visibilité public)

oui

1.b) Minute, Heure (à cause de la présence du setter)

Non, dans une sous classe, tu peux accéder à certains attributs sans passer par un getter ou un setter, c'est ça qui t'es demandé

1.c) là je pense qu'il n'y en a pas puisqu'il y'a un seul package

La question n'est pas de savoir combien y'a de package mais quel(s) attribut(s) serait accessible depuis une sous classe d'un autre package, toujours sans passer par getter et setter

1.d) je pense aussi qu'il n'y en a pas

C'est là qu'interviennent les getter et les setter

0
Steve17_17 Messages postés 17 Date d'inscription mardi 11 juillet 2023 Statut Membre Dernière intervention 9 mars 2024 > Whismeril Messages postés 19045 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 21 mai 2024
5 mars 2024 à 09:24

D'accord je vois..

0
Steve17_17 Messages postés 17 Date d'inscription mardi 11 juillet 2023 Statut Membre Dernière intervention 9 mars 2024 > Whismeril Messages postés 19045 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 21 mai 2024
5 mars 2024 à 17:59

C'est possible de vérifier aussi les autres questions stp

0
Steve17_17 Messages postés 17 Date d'inscription mardi 11 juillet 2023 Statut Membre Dernière intervention 9 mars 2024
Modifié le 6 mars 2024 à 01:44

2.a) on doit écrire :

public HorlogeHM (int h, int m) {
    this.h = h;
    this.m = m;
}

2.b)

public void incrementMinute() {
    Minute = 0;
    for (i = 0; i<= Minute; i++) {
        System.out.println(i);
    }
}

2.c)

public void incrementHeure() {
    Heure = 0;
    for (i = 0; i <= Heure; i++) {
        System.out.println(i);
    }
}

2.d)

public int getMinute() {
    return this.Minute
}

2.e)

public int getHeure() {
    return this.Heure
}

3.

public class TestHorloge {
    public static void main(string [] arg s) {
        int h, m;
        h = 23;
        m = 59;
        for (int i = 0; i <= h; i++) {
            H = H + i; 
        }
        for(int i = 0; i <= m; i++) {
            Min = Min + i;
        }
        public void afficher () {
            System.out.println (H)
0
mamiemando Messages postés 33120 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 21 mai 2024 7 753
Modifié le 6 mars 2024 à 01:53

Bonjour Steve,

  1. Vu que ça fait maintenant quelques temps que tu es sûr le forum, j'apprécierais que tu tiennes compte des remarques qu'on te fait, sinon je vois difficilement comment tu vas progresser.
  2. Whismeril t'a demandé plusieurs fois de mettre en forme tes extraits de code comme expliqué dans ce tutoriel. C'est important pour rendre tes questions lisibles et pour éviter qu'on ait (que j'ai) à repasser sur chacun de tes messages.
  3. Je pense également que tu n'as pas compris le rôle d'un forum. Whismeril a gentiment accepté de répondre à tes questions, mais personnellement je pense que tu devrais surtout lire ton cours. La plupart de tes réponses ne respectent n'ont aucun sens en Java.
  4. Un forum n'est pas là pour corriger ta copie, mais par exemple :
    1. t'expliquer ce que tu n'as pas compris
    2. te débloquer sur quelque chose qui te bloque (par exemple, l'explication d'une notion
    3. t'aider à corriger un bug dans un programme
    4. te donner une méthodologie pour résoudre un problème.
  5. De plus, tu devrais indenter et espacer ton code comme dans tes messages que j'ai repris : outre améliorer la lisibilité, ça t'évitera d'oublier de fermer des accolades, et tu prendras de bonnes habitudes pour des langages qui exigent un code bien indenté (comme python).
  6. Sois vigilant à la casse. La plupart des langages de programmation (dont Java) distinguent minuscules et majuscules. Donc en réalité la plupart de tes réponses (avant que les corrigent) sont fausses car "Public" n'existe pas, le mot clé adéquat est "public".
  7. Les langages de programmations suivent des conventions de nommage (en particulier en Java). Ton enseignant est sensé te les avoir expliquées. En Java, une variable commence par une minuscule puis s'écrit en camel case (exemple : maVariable) , une classe commence par une majuscule puis s'écrit en camel case (exemple : MaClasse).

Donc si on reprend les questions sur lesquels Whismeril n'a pas encore répondu (et si on omet les histoires de casse) on voit que :

  • 2a) OK
  • 2b) Ce n'est probablement pas ce qui t'es demandé. On te demande de corriger la valeur actuelle des minutes (donc this->min) de sorte à ce que sa valeur soit incrémentée de 1. Et pour incrémenter, il me semble que tu connais l'opérateur ++.
  • 2c) Idem
  • 2d) OK
  • 2e) OK
  • 3) J'ai indenté ton code pour que tu comprennes tout l'intérêt de le faire. On voit clairement que des accolades manquent, et donc le code n'a aucune chance de compiler (donc il est faux). Ensuite il y a une confusion entre H et h qui sont deux variables différentes. Note que d'ailleurs outre le code que tu écris ne teste rien, il ne fait probablement pas ce que tu veux (affiche les valeurs de H et Min à chaque tour de boucle et tu verras pourquoi). Maintenant, si on relis la question dans ton message initiale, on voit que tu dois réviser ce qu'est un constructeur en Java et comprendre comment l'utiliser. La suite de la question consiste à appeler les méthodes définies dans les questions précédente.
  • 4) Je t'invite à regarder un cours sur l'héritage, les surcharges de méthodes (et idéalement comprendre ce qu'on appelle polymorphisme et lien dynamique).

Bonne chance

0
Steve17_17 Messages postés 17 Date d'inscription mardi 11 juillet 2023 Statut Membre Dernière intervention 9 mars 2024 > mamiemando Messages postés 33120 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 21 mai 2024
7 mars 2024 à 14:12

D'accord merci bien noté

0
mamiemando Messages postés 33120 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 21 mai 2024 7 753 > Steve17_17 Messages postés 17 Date d'inscription mardi 11 juillet 2023 Statut Membre Dernière intervention 9 mars 2024
12 mars 2024 à 15:01

As-tu d'autres questions (si oui lesquelles) ou peut-on clore cette discussion ?

0