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

Delphi Discussion :

Delphi 6 Programmation Objet


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 54
    Par défaut Delphi 6 Programmation Objet
    Salut tout le monde,

    Je fais un prog Objet sous Delphi sur les astres et j'ai une petite question :
    J'ai des objets Planete et des objets Satellite. Une planete possède un ou plusieurs satellites. J'ai donc une propriété dans ma classe Planete nommée 'mesSatellite' qui est une collection de satellites.
    Donc est ce que je dois mettre une propriété 'planete' dans la classe Satellite pour savoir à quelle planète est lié le satellite?

    Nb: J'enregistre tous les astres créés (planetes et satellites) dans une classe nommée CollectionAstres

    Je vous remercie d'avances pcq là, je suis vraiment pommé

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Donc est ce que je dois mettre une propriété 'planete' dans la classe Satellite pour savoir à quelle planète est lié le satellite?
    C'est possible, mais pas forcément nécessaire.
    La différence entre les 2 classes c'est que les satellites seront alloués dans leur planéte, tandis que la planète sera simplément affectée dans à la variable planète de chaque satellite.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure Planete.AddSatellite(Nom_de_satellite:string) ;
    var NewSatellite :  Satellite ;
    NewSatellite=Satelitte.Create ; 
    NewSatellite.Name=Nom_de_satellite
    NewSatellite.Planete=Self ;
    Sattellites.add(NewSattelite)

  3. #3
    Membre émérite
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    Tout dépend de ce que tu veux faire avec ta classe. La programmation objet n'est qu'un style de programmation parfois très utile, mais qui en soi ne résout rien automatiquement, et certainement pas les choix auxquels est confronté le développeur..

    Si tu veux pouvoir retrouver rapidement à quelle planète un satellite particulier appartient, alors oui, tu as intérêt à créer une variable "Planète" dans la classe Satellite, pour éviter d'avoir à utiliser dans ton programme une boucle qui, à chaque fois, devra parcourir la liste complète de toutes les planètes pour retrouver la bonne... à ta place, je créerais ce champ "Planete" quand même à toutes fins utiles.

    Par ailleurs, stocker les satellites dans CollectionAstres fait à mon avis double usage, puisque les satellites sont déjà stockés dans la collection des satellites de chaque planète. Moi je ne stockerais que les Planètes dans cette variable générale. Question de rigueur et donc de fiabilité du code.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 54
    Par défaut
    Merci beaucoup pour vos réponses! C'est vraiment sympa!
    Mais je bloque quand même car tous les astres que je créée (planètes + satellites) (ces 2 classes héritant de la classe astre) sont ajoutés à la classe CollectionAstres.
    J'ai donc ensuite, pour retrouver mes satellites, créé une propriété 'mesSatellites' dans la classe Planète afin de retrouver rapidement les satellites de la planète
    Mais là je veux faire le contraire (retrouver la planète en fonction d'un satellite) et c'est donc pour simplifier (éviter de faire des boucles) que j'ai voulu créé une propriété 'planeteAssociee' dans la classe Satellite
    Mais quand je fais ça, j'ai un 'circular unit references' qui m'embête vu que j'utilise ces 2 classes mutuellement...
    Ouf! C'est dur à expliquer mais bon je vous assure que ça veut dire qqch!
    En espérant que vous ayez compris
    Merci encore pour vos réponses

  5. #5
    Membre émérite
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    Il suffit de définir les deux classes (enfin, les trois avec Astres) dans la même unité au lieu d'utiliser des unités différentes... on n'est pas obligé d'utiliser une unité pour chaque classe.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 54
    Par défaut
    C'est ce que j'ai demandé à mon cher professeur à la science infuse qui m'a répondu catégoriquement qu'il fallait ABSOLUMENT une classe par unité Y parait que c'est indispensable pour l'exam' Bon ben si y'a vraiment pas de solution je vais pas faire de propriété planète dans la classe Satellite...Je vais encore cherché un peu mais bon
    Merci beaucoup

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 5
    Par défaut
    Bonjour,

    Tu as une autre solution, tu mets la clause Uses dans la partie implementation et hop plus de références circulaires

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débuter] Programmation objet mais conditions particulières
    Par KaptainouK dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 30/09/2005, 00h20
  2. [Débutant(e)][Conception] prob de programmation objet
    Par gregorian dans le forum Général Java
    Réponses: 3
    Dernier message: 07/07/2005, 11h20
  3. Questions sur la programmation objet en Delphi
    Par Manopower dans le forum Débuter
    Réponses: 20
    Dernier message: 15/06/2005, 15h39
  4. [ASP] Programmation objet ?
    Par Hell dans le forum ASP
    Réponses: 6
    Dernier message: 07/04/2005, 15h28
  5. Problème programmation objet
    Par Contrec dans le forum MFC
    Réponses: 54
    Dernier message: 30/03/2005, 11h30

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