« Patrons de conception/Objet composite » : différence entre les versions

Contenu supprimé Contenu ajouté
VolkovBot (discussion | contributions)
Aucun résumé des modifications
Ligne 282 :
doc.pdf
dir3
 
===Exemple C#===
 
Produisant un résultat similaire à l'exemple en php, une variante en C#.
 
<source lang=csharp>
abstract class Composant {
public string Nom;
public int Level = 0;
public abstract void Add(Composant composant);
public virtual void Draw() {
for (var i = 0; i < Level; i++) Console.Write(" ");
}
}
 
class Feuille : Composant {
public override void Add(Composant composant) {
throw new NotImplementedException();
}
public override void Draw() {
base.Draw();
Console.WriteLine("Feuille : {0}", Nom);
}
}
 
class Composite : Composant {
public Composant[] Composants;
public override void Add(Composant composant) {
Composants = Composants.Concat(new Composant[] { composant}).ToArray();
}
public override void Draw() {
base.Draw();
Console.WriteLine("Composite : {0}", Nom);
foreach (Composant composant in Composants) {
composant.Level = this.Level + 1;
composant.Draw();
}
}
}
 
class Program {
static void Main(string[] args) {
var cadre = new Composite() {
Nom = "cadre",
Composants = new Composant[] {
new Feuille() { Nom="soleil" },
new Composite() {
Nom = "mer",
Composants = new Composant[] {
new Composite() {
Nom="bateau",
Composants = new Composant[] {
new Feuille() { Nom="homme" },
new Feuille() { Nom="femme" }}}}}}};
cadre.Draw();
 
Console.ReadLine();
}
}
</source>
 
[[Catégorie:Patron de conception]]