Interface et classe abstraite

stealon Messages postés 17 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 20 mai 2018 - 28 août 2014 à 21:59
stealon Messages postés 17 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 20 mai 2018 - 2 sept. 2014 à 08:43
Bonjour,
je reviens peut-être tard sur le sujet. Classe abstraite et interface je connais un peu. Mais je reviens avec une difficulté d'implémentation.
j'ai une classe personne, et une classe personnel qui hérite de personne vue qu'un personnel est forcément une personne. La difficulté se trouve sur le fait que le personnel est constitué d'enseignant et de personnel administratif. Et ce personnel administratif joue deux rôles. Il sont chargés de cours tout en ayant un poste administratif dans l' établissement. Étant donné que je doit faire un DefaultTableModel qui doit contenir une collection (List) de personnel je me melle un peu les pédales sur ce qui doit être une classe abstraite et ce qui doit être une interface. J'ai eu l'idée de rendre abstraite la classe Personnel qui étend la classe Personne et dont hériteront les classes Professeur et PAdministratif et ces deux classes implémentent l'interface Enseignement. Mais je me trouve coincé au du DefaulTableModel. J'espère avoir été claire et j'ai urgemment besoin de vos contributions. Merci à ceux qui voudront bien m'éclairer.

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
28 août 2014 à 22:24
Bonsoir,

"ce personnel administratif joue deux rôles"
La notion de rôle devrait plutôt tendre vers l'utilisation d'un attribut. On distinguerait ainsi la personne (ce qu'elle est) de ses fonctions (ce qu'elle fait).

En gros : tu as ta classe Personne avec comme attribut une liste de Role (une interface). Un professeur/administratif c'est un objet de la classe Personne qui a dans sa liste de Role une instance de la classe Professeur/Administratif (qui implémentent Role).

interface Role {}

class Personne {
    List<Role> roles;
}

class Professeur implements Role {
    static boolean isProfesseur(Personne);
    static void faireCours(Personne);
}

class Test
{
    Personne p;
    if (Professeur.isProfesseur(p))
        Professeur.faireCours(p);
}
0
stealon Messages postés 17 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 20 mai 2018
Modifié par stealon le 2/09/2014 à 08:46
Merci à KX pour sa prompte réaction à mon problème. J'avoue que j'ai pas pensé à façon de faire. J'ai plutôt pensé à créer une classe enum (Role) qui serait un attribut de la classe personne et faire héritier la classe Professeur de Personne et dans ce cas, PersonnelAdministratif héritera de Professeur pour qu'enfin la classe Personne contienne trois listes genre:

class Personnel {


Private java.util.List<CadreAdministratif>listeCadreAdmin;
Private java.util.List<Professeur>listeProfesseur;

private java.util.Liste<AxiliaireAdmin>listePersonnelAuxil;

public Personnel(){

. }
}
pour que ces listes soit facilement manipulable dans un JTable. Néanmoins j'applique ta proposition et je réagis après. N'histes pas à en dire plus et merci encore.
0
Rejoignez-nous