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

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 283 :
dir3
 
===Exemple C#===
 
Produisant un résultat similaire à l'exemple en php, une variante en C#.
Ligne 289 :
<source lang=csharp>
abstract class Composant {
public int Level = public string Nom0;
public intstring LevelNom; = 0;
public abstract void Add(Composant composant);
public virtual void Draw() { for (var i = 0; i < Level; i++) Console.Write(" "); }
}
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 DrawAdd(Composant composant) {
Composants = Composants.Concat(new Composant[] { composant}).ToArray();
}
public override void Draw() {
 
base.Draw(); Console.WriteLine("Composite : {0}", Nom);
class Feuille : Composant {
publicforeach override void Add(Composant composant in Composants) {
throwcomposant.Level new= NotImplementedException()this.Level + 1;
} composant.Draw();
public override void Draw() {
base.Draw();
Console.WriteLine("Feuille : {0}", Nom);
}
}
}
 
class Composite : ComposantProgram {
static void Main(string[] args) {
public Composant[] Composants;
publicvar overridecadre void= Add(Composantnew composantComposite() {
Nom = "cadre",
Composants = Composants.Concat(new Composant[] { composant}).ToArray();
Composants = new Composant[] {
}
public override void Draw new Feuille() { Nom="soleil" },
base.Draw new Composite(); {
Console.WriteLine("Composite : {0}", Nom); = "mer",
foreach (Composant composant in Composants) = new Composant[] {
composant.Level = this.Level + 1; new Composite() {
composant.Draw(); Nom="bateau",
} Composants = new Composant[] {
new Feuille() { Nom="homme" },
}
new Feuille() { Nom="femme" }}}}}}};
}
basecadre.Draw();
Console.ReadLine();
}
}
</source>
 
Et le résultat est le suivant:
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();
 
<source>
Console.ReadLine();
Composite : cadre
}
Feuille : soleil
}
Composite : mer
new Composite() { : bateau
Feuille : homme
cadre.Draw();Feuille : femme
</source>