IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Classe Image définie comme une Forme et un tableau de Formes


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mars 2005
    Messages : 60
    Par défaut Classe Image définie comme une Forme et un tableau de Formes
    Bonjour à tous, j'espère que quelqu'un pourra éclairer ma lanterne...
    J'ai toujours eu du mal avec les concepts de la PO, et j'ai beau avoir lu et relu moult cours sur le sujet, je ne sait pas expliquer ce truc la


    Je fais donc un TP (donc je n'ai pas la correction, et pas plus d'explications sinon ça serait trop facile), dans lequel on me dit d'implémenter une classe cercle, une classe segment ainsi qu'en classe abstraite Forme, mère des 2 précédentes.
    Ensuite j'implémente une classe image, qui est une collection de forme (c'est indiqué comme ça dans l’énoncé).

    Question : Que penser ce modèle de programmation qui définit Image à la fois comme une Forme et un tableau de Formes ?

    Alors déjà quel modèle...???
    Si je suis le bazar, on fait du polymorphisme d'héritage (arrêter moi si je me trompes)

    Image à la fois comme une Forme et un tableau de Formes : C'est à dire un segment, un cercle, un ensemble de segments et de cercles
    Une image est donc constituée de formes, et/ou d'autres images constituées de formes...

    Bref, je modélise pas le truc dans ma tête. en tout cas je ne saurais pas l'expliquer, donc si une âme charitable se sent l'âme pédagogue ça serait top

  2. #2
    Membre éclairé Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 311
    Par défaut
    Précision, tu ne peut pas instancier une classe abstraite.
    (Enfin oui mais c'est pas encore de ton niveau, tu verras ça plus tard avec les lambda)

    Ça peut ressembler à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public abstract class Forme {
    	public abstract void afficher();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Cercle extends Forme{
    	@Override
    	public void afficher() { System.out.println("Cercle"); }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Segment extends Forme{
    	@Override
    	public void afficher() { System.out.println("Segment"); }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Image extends ArrayList<Forme>{ }
    Il ne te reste plus qu'a faire l’implémentation.

    Je veux bien t'expliquer ce que tu n'as pas compris mais soit plus précis.
    Tu n'as pas compris ce qu'est une classe?
    Tu n'as pas compris ce qu'est une classe abstraite?
    Tu n'as pas compris ce qu'est une implémentation?
    Tu n'as pas compris à quoi sert une classe?
    Tu n'as pas compris ce que veux dire le code?
    Tu n'as pas compris à quoi sert l'héritage?
    Tu n'as pas compris à quoi sert une classe?

    En attendant je te fait un petit débrif:

    Lorsque tu veux fabriquer un objet IRL par exemple en plâtre (code JAVA) tu fabrique un moule (une classe) que tu remplis avec ton plâtre (implémentation) puis tu démoule ton objet (ta variable).

    Pour tout ce qui est abstrait, comme les classes abstraites et les interfaces, et c'est le cas aussi pour l'héritage en général, il faut comprendre à quoi ça sert pour saisir le truc.
    Imaginons un panier de légumes (ArrayList).
    Tous ne servent pas à la même chose mais ils sont dans le même panier.
    Sans héritage, je suis obligé d’analysé le légume avant de l'utiliser.
    Exemple rapide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class Legume{
    	public static final int COURGETTE = 1;
    	public static final int PATATE = 2;
    	public int type = 0;
     
    	private void utiliser(){ 
    		if(type == COURGETTE){
    			utiliserCourgette();
    		}else if(type == PATATE){
    			utiliserPatate();
    		}
    	}
    	private void utiliserCourgette(){ 
    		System.out.println("COURGETTE");
    	}
    	private void utiliserPatate(){ 
    		System.out.println("PATATE");
    	}
    }
    Avec l'héritage... regarde le code que je t'ai envoyer au début.
    Tu fous tout dans le même panier alors que les objets sont différant et pour les utiliser tu appel la fonction mère qui est la même pour tous.
    C'est plus économe en ressources est ça compartimente le code pour le rendre plus lisible.

  3. #3
    Membre confirmé
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mars 2005
    Messages : 60
    Par défaut
    Citation Envoyé par Pecose Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Image extends ArrayList<Forme>{ }
    Alors moi je n'avais pas du tout, mais du tout fait ça !!!
    Citation Envoyé par Pecose Voir le message
    Je veux bien t'expliquer ce que tu n'as pas compris mais soit plus précis.
    Mais alors ça serait trop méga top
    Citation Envoyé par Pecose Voir le message
    Tu n'as pas compris ce qu'est une classe?
    Tu n'as pas compris ce qu'est une classe abstraite?
    Tu n'as pas compris ce qu'est une implémentation?
    Tu n'as pas compris à quoi sert une classe?
    Tu n'as pas compris ce que veux dire le code?
    Tu n'as pas compris à quoi sert l'héritage?
    Tu n'as pas compris à quoi sert une classe?
    Je n'ai a peu près tout pas compris

    Je regarde ton histoire d'ArrayList, mais en vrai le plus gros que je ne comprends pas c'est l'énoncé...
    Difficile de tout envoyer sur le forum mais je peux bien entendu apporter toutes les précisions nécessaires pour comprendre ce qu'on me demande

  4. #4
    Membre éclairé Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 311
    Par défaut
    Regarde ton discord.

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par Pecose Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Image extends ArrayList<Forme>{ }
    Il ne te reste plus qu'a faire l’implémentation.
    J'aurais pas fait ca comme ca sachant qu'il a dit:

    Image à la fois comme une Forme et un tableau de Formes : C'est à dire un segment, un cercle, un ensemble de segments et de cercles
    Une image est donc constituée de formes, et/ou d'autres images constituées de formes...
    Donc en fait c'est plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Image extends Forme {
       private final List<> formes = new ArrayList<Forme>();
     
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre confirmé
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mars 2005
    Messages : 60
    Par défaut
    Alors ça m'a l'air top vos réponses mais les arraylist c'est seulement dans le TP suivant ...
    La question c'est surtout quoi en penser ? je crois que la réponse attendue est que c'est un pattern de composition (mais je n'ai pas bien compris cette notion !)

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    La composition, c'est aussi simple que de dire qu'un objet est composé d'autres objets. La principale différence entre la composition et agrégation est que les objets de la composition ont un rôle dans le fonctionnement de l'objet principal et cessent en général d'exister en même temps que lui. L'exemple montré par wikipedia anglais :
    • Composition - une voiture a un carburateur. La voiture est détruite, le carburateur aussi.
    • Agrégation - une mare avec des canards, ceci vivent leur vide indépendamment de l'existence de la mare.



    IRL la frontière entre les 2 patrons de conception est plutôt floue en fait (ex : IRL - l'histoire du carburateur détruit en meme temps que la voiture).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  8. #8
    Membre confirmé
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mars 2005
    Messages : 60
    Par défaut
    Citation Envoyé par bouye Voir le message
    La composition, c'est aussi simple que de dire qu'un objet est composé d'autres objets.
    Mais pourquoi ce n'est pas aussi clair dans les cours de mon prof ???
    Ok en tout cas on dirait que je comprends mieux que ce qu'il me semble ce que je fais...
    J'ai rendu mon travail mais je n'ai pas eu de retour pour le moment...
    Je ne manquerais pas de vous tenir informés de ce que ça a donné.
    Je vais avancer sur le TP3 et je reviens vers vous, puis il y aura aussi les TP suivants sur les design patern... Autant laissé tout ça groupé dans un meme topic !

    Merci pour votre aide précieuse

    PS : Le carbu IRL n'est pas forcement détruit, récupérer les pièces c'est un bon moyen de ne pas trop perdre sur une épave

Discussions similaires

  1. [Toutes versions] IE Alimenter un élément et click bouton définis dans une <form>
    Par geracole dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/05/2018, 12h01
  2. [XL-2007] Récuperer le nom d'une image inserée dans une forme libre
    Par Miike dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/11/2017, 21h25
  3. [Débutant] Ajouter les images définies dans une classe à ma form
    Par MPothin dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/09/2014, 11h16
  4. afficher une image JPEG dans une forme
    Par madjid90 dans le forum Débuter
    Réponses: 5
    Dernier message: 10/07/2010, 14h58
  5. une boucle définie comme une methode
    Par scolopendra dans le forum Langage
    Réponses: 6
    Dernier message: 08/06/2007, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo