[2.0][OOP] conception objet
Salut,
Je suis en train de parfaire mes connaissances en matière d'objet. En effet, venant du monde VB où les objets ne sont utilisés que pour simplifer certains tratement, je n'ai que de quelques notions de conception. Je me suis donc donné un cas pratique : la construction d'un gestionnaire de projets.
Il permet d'afficher un projet de deux façons :
- Calendrier
- Diagramme de Pert.
Le calendrier peut afficher soit
- Un jour
- Une semaine
- Un Mois
- Une Année
Au final j'aimerais avoir un composant Projet qui disposerait des deux interfaces Calendrier et Pert. Tous deux seront capables d'afficher des Taches
Pert dispose d'une seule interface
Le calendrier dispose de 4 interfaces correspondantes à chacune des périodes pouvant être affichées.
J'aimerais savoir comment je dois créer cette petite structure objet.
Dois-je utiliser une Interface pour chaque affichage et les appeler
buildYear
buidMonth
buildWeek
buildDay
?
D'avance merci
Laurent
C'est ce que j'avais prévu mais...
Salut,
Merci pour ta réponse matinale
En fait, je compte même créer un WebCustomControl qui dispose des 2 types d'affichages Calendrier et Pert qui sont eux même des composants.
Le composant Projet a une propriété displayType qui est un enum Calendar/Pert
Pert n'a qu'un mode d'affichage mais Calendar en a un par type de période (Année, Mois, Semaine, jour).
Ce que je ne sais pas faire c'est appeler la bonne methode de construction en fonction du type d'affichage:
Créer une classe builder et des interfaces IBuildYear,IBuildMonth,IBuildWeek et IBuildDay
J'aimerais pouvoir faire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
MyProject.Calendar.BuildYear()
//ou
MyProject.Pert.Build()
//Je simplifie :
class Project {
public Calendar CalendarMode = new Calendar();
public Pert PertMode = new Pert();
}
interface IBuildYear {
void build() {}
}
interface IBuildMonth {
void build() {}
}
interface IBuildWeek {
void build() {}
}
interface IBuildDay {
void build() {}
}
class IBuilder:IBuildYear,IBuildMonth,IBuildWeek,IBuildDay {
public IBuilder(enDisplayPeriods DisplayPeriod){
}
} |
Je ne connais pas la syntaxe mais j'aimerais arriver à un résultat a peu près comme ça, c'est à dire que j'implémente la bonne interface en fonction du mode d'affichage demandé ?
Pourrais-tu déjà me dire si la logique te parait juste ?
D'avance merci
Laurent