[JAVA] Constructeurs, instances, ...
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

[JAVA] Constructeurs, instances, ...



  1. #1
    SqrtNomis

    [JAVA] Constructeurs, instances, ...


    ------

    Bonjour à tous, je suis étudiant en mathématiques, et lors d'une séance de travaux pratiques de mon cours de programmation, il nous a été demandé d'implémenter un algorithme que j'ai trouvé ... assez étrange ?
    Voici l'énoncé de l'exercice :

     Cliquez pour afficher


    Avec, bien sûr, la classe Point implémentée comme ceci :

     Cliquez pour afficher


    Cela me laisse alors assez perplexe, premièrement dans l'énoncé, je ne comprends pas vraiment le principe de "créer" un tableau dans le constructeur, est-ce que par principe le constructeur ne devrait pas justement ne rien retourner ?
    Aussi, concernant les méthodes qu'on me demande d'implémenter, on ne dit pas s'il s'agit de méthodes d'instances ou de méthodes de classes ... J'imagine que si je comprenais mieux le principe de cette classe / des objets FootballScores, cela me semblerait bien plus logique, mais en attendant je suis dans le flou le plus total... En clair si quelqu'un pouvait m'aider à comprendre le principe et/ou m'aider à écrire les premières lignes du programme (car après plusieurs prototypes tous les plus foireux les uns que les autres, je commence à saturer), ça pourrait grandement m'avancer !
    Merci d'avance !

    -----

  2. #2
    pm42

    Re : [JAVA] Constructeurs, instances, ...

    Citation Envoyé par SqrtNomis Voir le message
    je ne comprends pas vraiment le principe de "créer" un tableau dans le constructeur, est-ce que par principe le constructeur ne devrait pas justement ne rien retourner ?
    On ne te demande pas de retourner quelque chose mais d'avoir une variable de type tableau qui est initialisée dans le constructeur ce qui est justement son rôle.

    Citation Envoyé par SqrtNomis Voir le message
    Aussi, concernant les méthodes qu'on me demande d'implémenter, on ne dit pas s'il s'agit de méthodes d'instances ou de méthodes de classes
    Le contexte permet de trouver immédiatement la réponse à cette question.

    Citation Envoyé par SqrtNomis Voir le message
    ... J'imagine que si je comprenais mieux le principe de cette classe / des objets FootballScores
    De la même façon que Point est une classe qui contient 2 attributs, x et y, FootbalScores est une classe qui contient un attribut, un tableau de résultats de match de football.
    C'est aussi simple que cela.

    Donc si tu écris juste ta classe FootballScores avec son attribut et son constructeur pour commencer, cela devrait être plus clair.

  3. #3
    SqrtNomis

    Re : [JAVA] Constructeurs, instances, ...

    Si je comprends bien, le constructeur serait alors implémenté de cette manière ?

    Code:
    public class FootballScores extends Point
    {
    
        private String[] teams = new String[];
        //Dois-je déclarer cette variable ainsi ? N'y a-t-il pas une taille à fournir ?
    
        public FootballScores(String[] teams)
        {
            this.teams = teams;
            Point[][] scores = new Point[teams.length][teams.length];
        }
    
    }

  4. #4
    pm42

    Re : [JAVA] Constructeurs, instances, ...

    Pourquoi est ce que FootbalScore étend il Point ? Est ce qu'une liste de score de matchs de foot est un Point ?

    Pourquoi la variable teams est elle initialisée 2 fois : une fois lors de sa déclaration puis dans le constructeur ? Celle du constructeur est suffisante.

    L'initialisation de la variable scores est correcte mais elle est locale au constructeur donc elle va disparaitre tout de suite. Est ce qu'elle ne devrait pas être une variable d'instance comme teams ?

  5. A voir en vidéo sur Futura
  6. #5
    SqrtNomis

    Re : [JAVA] Constructeurs, instances, ...

    Il me semble qu'étendre Point permet d'utiliser des instances de Point, et c'est typiquement ce qu'on veut (cf. variable scores)... Y'a-t-il une erreur ? Dois-je implémenter une interface ?
    Pour moi, une liste de scores de matchs de foot est un tableau à 2 dimensions de Point...

    Pour ce qui est de la variable initialisée deux fois, et bien c'est ainsi que l'on a procédé pour construire la classe Point (peut-être pour rendre la variable private ??), j'aurais dû le préciser mais je suis un novice dans le domaine de la programmation, je n'ai pas encore l'habitude de manipuler des classes...

    Oui, mais justement, il nous est dit que c'est le constructeur qui doit créer cette variable, comment dois-je opérer pour qu'elle ne soit pas locale au constructeur, mais en étant malgré tout créée par celui-ci ?

  7. #6
    umfred

    Re : [JAVA] Constructeurs, instances, ...

    le fait de faire FootballScores extends Point veut dire que FootballScores possède (hérite) les mêmes attributs que Point en plus de ceux qui vont être défini et ce n'est pas vraiment ce que l'on veut; on veut juste pouvoir utiliser des Points.

    On peut séparer déclaration et initialisation. Dans une classe, la déclaration se fait en général en dehors des méthodes de la classe et l'initialisation se fait dans le(s) constructeur(s)

  8. #7
    SqrtNomis

    Re : [JAVA] Constructeurs, instances, ...

    Je comprends mieux, FootballScores n'hérite effectivement pas de Point... Cependant, comment faire pour pouvoir utiliser des Point dans ma classe FootballScores dès lors ?

    Quand à la déclaration / initialisation, si je comprends bien, je dois au préalable "créer" un tableau de Points ?? Quel est alors le rôle du constructeur concrètement ?

  9. #8
    pm42

    Re : [JAVA] Constructeurs, instances, ...

    Citation Envoyé par SqrtNomis Voir le message
    Cependant, comment faire pour pouvoir utiliser des Point dans ma classe FootballScores dès lors ?
    De la même façon que tu utilises des String avec ta variable teams.

    Citation Envoyé par SqrtNomis Voir le message
    Quand à la déclaration / initialisation, si je comprends bien, je dois au préalable "créer" un tableau de Points ?? Quel est alors le rôle du constructeur concrètement ?
    De le créer justement. C'est déjà ce que tu fais mais ensuite, tu perds cette info parce que tu l'as mis dans une variable locale. Revoir ce que j'ai expliqué plus haut.

  10. #9
    SqrtNomis

    Re : [JAVA] Constructeurs, instances, ...

    Cela veut dire que je peux utiliser mes instances de Point sans notifier quelque part que j'autorise l'accès à la classe Point ? Je peux instancier des points comme par "magie" ?

    Je suis désolé mais je ne comprends pas... Si effectivement le constructeur sert à créer le tableau à 2 dimensions, ça me semble effectivement logique vu le code que c'est une variable locale... Mais si j'en fait une variable d'instance, i.e. que je place la variable en dehors de toute méthode (y compris le constructeur), en quoi est-ce que le constructeur créera ce tableau comme le précise l'énonce ? Je suis confus..

  11. #10
    umfred

    Re : [JAVA] Constructeurs, instances, ...

    Citation Envoyé par SqrtNomis Voir le message
    Cela veut dire que je peux utiliser mes instances de Point sans notifier quelque part que j'autorise l'accès à la classe Point ? Je peux instancier des points comme par "magie" ?
    il faut juste un import si les classes sont dans des fichiers différents

    Si effectivement le constructeur sert à créer le tableau à 2 dimensions
    le constructeur doit initialiser le tableau

    Mais si j'en fait une variable d'instance, i.e. que je place la variable en dehors de toute méthode (y compris le constructeur), en quoi est-ce que le constructeur créera ce tableau comme le précise l'énonce
    la déclaration (String[] teams; ) doit se faire à cet emplacement, et l'initialisation (this.teams= teams; ) dans le constructeur

  12. #11
    SqrtNomis

    Re : [JAVA] Constructeurs, instances, ...

    Qu'en est-il de mon tableau de Point à 2 dimensions ??

  13. #12
    umfred

    Re : [JAVA] Constructeurs, instances, ...

    tu procèdes de la même façon; que ce soit des String, des Point, des int, ou autres, le principe reste identique

  14. #13
    SqrtNomis

    Re : [JAVA] Constructeurs, instances, ...

    Je pense que je dois manquer quelque chose dans vos explications... Ce que j'obtiens en essayant d'appliquer ce que vous me dites est ceci :
    Code:
    public class FootballScores
    {
    
        private Point[][] scores = new Point[][];
        //Il faut fournir une taille au tableau, comment obtient-on cette taille ?
    
        public FootballScores(String[] teams)
        {
            this.teams = teams;
            //Je n'ai aucune idée de ce que je dois rajouter ici par rapport à ma variable scores
        }
    }

  15. #14
    pm42

    Re : [JAVA] Constructeurs, instances, ...

    Citation Envoyé par SqrtNomis Voir le message
    Je pense que je dois manquer quelque chose dans vos explications... Ce que j'obtiens en essayant d'appliquer ce que vous me dites est ceci :
    En reprenant ce que tu avais déjà écrit plus haut pour la taille et ça devrait marcher :

    Code:
    public class FootballScores
    {
    
        private Point[][] scores;
    
        public FootballScores(String[] teams)
        {
            this.teams = teams;
            this.scores =  = new Point[teams.length][teams.length];
        }
    }

  16. #15
    SqrtNomis

    Re : [JAVA] Constructeurs, instances, ...

    D'accord, je comprends mieux, en effet j'avais un peu de difficulté à dissocier les notions de déclaration et d'instanciation ! Merci beaucoup

  17. #16
    umfred

    Re : [JAVA] Constructeurs, instances, ...

    Mais il manque encore la déclaration de teams dans la classe
    Code:
    public class FootballScores
    {
    
        private Point[][] scores;
        private String[] teams;
    
        public FootballScores(String[] teams)
        {
            this.teams = teams;
            this.scores =  new Point[teams.length][teams.length];
        }
    }

Discussions similaires

  1. '<' not supported between instances of 'dict' and 'str'
    Par invitecff8806c dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 21/03/2019, 20h06
  2. Comment ouvrir 2 instances simultanées de Pdfconverter ?
    Par invite9a0f1824 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 15/06/2015, 13h10
  3. constructeurs en java
    Par invite402e4a5a dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 18/03/2011, 15h04