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

Langage Java Discussion :

[POO]Classe ou pas classe


Sujet :

Langage Java

Vue hybride

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 80
    Par défaut [POO]Classe ou pas classe
    Bonjour !

    J'ai un petit problème d'architecture que je voudrais vous soumettre. Je pense qu'il est tout simple mais j'arrive pas à me décider.

    J'ai deux classes Employé et Ouvrier qui ont exactement les memes comportements et les memes propriétés, la seule différence étant leur type (l'un Ouvrier et l'autre Employé).

    Je suis en fait en train d'hésiter entre deux facons différentes pour essayer d'implémenter ces classes.

    1- Soit je crée une classe Personne de laquelle hériteront les classes Employé et Ouvrier.

    2- Soit je crée une classe Personne avec une propriété en plus qui s'appelera TypePersonne et qui pourra contenir [Employé, Ouvrier], pour pouvoir distinguer une personne Employé et une personne Ouvrier.

    Quelle approche serait la mieux d'après vous?

  2. #2
    Membre éclairé Avatar de Diablo_22
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2005
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2005
    Messages : 498
    Par défaut
    je pencherais pour

    1- Soit je crée une classe Personne de laquelle hériteront les classes Employé et Ouvrier.

    c'est la meme chose que pour voiture

    ta une classe Voiture de laquelle hériteront les classes Camions, Berline, Break,..etc

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Par défaut
    Salut,

    +1 pour la solution d'héritage ..
    créer une personne et ensuite tu fais hériter ouvrier et employé

  4. #4
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    +1 aussi pour l'heritage ...

  5. #5
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Humm... Pour le coup je suis moyennement d'accord avec l'idée de l'héritage.

    Pour moi, ce qui permet de faire le choix entre les deux solutions, c'est vraiment de savoir si un Employe et un Ouvrier ont des différences autres que celles d'être un Employe et un Ouvrier, comme d'autres attributs(propriétés) ou d'autres méthodes(capacités).

    Or dans la présentation que tu fais, la seule différence est cette notion de nature. On n'est donc pas du tout dans le cas de Voiture ...

    Donc pour moi, ce serait un attribut type de Personne. Si on regarde l'API standard, on a plein de cas où cette implémentation avec un attribut type est mise en oeuvre (un exemple parmi d'autres : File, on a pas de classe Directory etc ...).

    C'est quand même beaucoup plus pratique de pouvoir avoir des méthodes isOuvrier et isEmploye que de faire des tests instanceof ....

  6. #6
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Salut, je suis d'accord avec chtig ; petit exemple pour illustré : j'ai un ouvrier - Bob - que l'on définit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ouvrier bob = new Ouvrier();
    Et Bob travaille super bien, du coup il devient employé... Ca n'est pas trivial avec de l'héritage.

    D'où mon soutien à chtig

    PS : c'est vrai que s'il n'y a pas d'évolution possible pour qu'un ouvrier devienne employé, mon exemple tombe à l'eau

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Par défaut
    +1 pour un attribut.

    Par contre vu que je ne vois pas la différence entre un employé et un ouvrier.
    Il faut peut-être uniquement une classe employés et ajouter plusieurs type d'employés: Ouvrier, Secrétaire, Ingénieur ...

    A moins qu'il y ait des personnes qui ne soient pas employés...

    Dans ce cas, il vaut mieux créer un classe personne avec une sous classe employés (Un employés il est payé ) et chaque employés à un type.

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 23/04/2012, 02h49
  2. class pour table + class pour td = class td non fonctionnelle ?
    Par supergrey dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 28/05/2009, 08h13
  3. [POO] mysql dans les autre classes ou pas?
    Par ibasticour dans le forum Langage
    Réponses: 3
    Dernier message: 06/05/2008, 14h40
  4. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 14h34
  5. [POO] projet ->soutirer les classes objets
    Par .:dev:. dans le forum C++
    Réponses: 10
    Dernier message: 14/06/2005, 23h05

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