Kompozyt wzorce projektowe

0

Witam
Zrobiłam kompozyt z wzorców projektowych który ma budować strukturę drzewiastą i wypisywać takie zdania:

Korzeń rozpoczęcie renderowania
Liść 1.1 renderowanie...
Węzeł 2 rozpoczęcie renderowania
Liść 2.1 renderowanie...
Liść 2.2 renderowanie...
Liść 2.3 renderowanie...
Węzeł 2 zakończenie renderowania
Węzeł 3 rozpoczęcie renderowania
Liść 3.1 renderowanie...
Liść 3.2 renderowanie...
Węzeł 3.3 rozpoczęcie renderowania
Liść 3.3.1 renderowanie...
Węzeł 3.3 zakończenie renderowania
Węzeł 3 zakończenie renderowania
Korzeń zakończenie renderowania

Ale zamiast tego wychodzi na to że zrobiłam pętle wypisującą takie coś

at Lisc..ctor () [0x00000] in <2618c67481744cb18f34de3c77947807>:0

Kod poniżej:

using System;
using System.Collections.Generic;

public interface Kompozyt
{
   public void Renderuj();
   void DodajElement(Kompozyt element);
   void UsunElement(Kompozyt element);
}

public class Lisc : Kompozyt
{
  
  public string nazwa { get; set; }

  public void Renderuj()
  {
    Console.WriteLine( nazwa + " renderowanie...");
  }

  Lisc lisc = new Lisc();
  
  public void DodajElement(Kompozyt element)
  {
    Console.WriteLine();
  }
 public void UsunElement(Kompozyt element)
  {
    Console.WriteLine();
  }

}


public class Wezel : Kompozyt
{

  private List<Kompozyt> Lista=new List<Kompozyt>();

  public string nazwa { get; set; }

  public void Renderuj()
  {
    
    Console.WriteLine(nazwa + "rozpoczęcie renderowania");

    foreach (var item in Lista)
    {
      item.Renderuj(); 
    }

    Console.WriteLine(nazwa + "zakończenie renderowania");

  }

  public void DodajElement(Kompozyt element)
  {
    Console.WriteLine();
  } 
  public void UsunElement(Kompozyt element)
  {
    Console.WriteLine();
  }
}


class MainClass 
{
  public static void Main (string[] args) 
  {
    Wezel korzen = new Wezel();
    korzen.nazwa = "Korzeń";

    Lisc lisc11 = new Lisc();
    lisc11.nazwa = "Liść 1.1";
    korzen.DodajElement(lisc11);

    Wezel wezel2 = new Wezel();
    wezel2.nazwa = "Węzeł 2";
    korzen.DodajElement(wezel2);

    Lisc lisc21 = new Lisc();
    lisc21.nazwa = "Liść 2.1";
    wezel2.DodajElement(lisc21);

    Lisc lisc22 = new Lisc();
    lisc22.nazwa = "Liść 2.2";
    wezel2.DodajElement(lisc22);

    Lisc lisc23 = new Lisc();
    lisc23.nazwa = "Liść 2.3";
    wezel2.DodajElement(lisc23);

    Wezel wezel3 = new Wezel();
    wezel3.nazwa = "Węzeł 3";
    korzen.DodajElement(wezel3);

    Lisc lisc31 = new Lisc();
    lisc31.nazwa = "Liść 3.1";
    wezel3.DodajElement(lisc31);

    Lisc lisc32 = new Lisc();
    lisc32.nazwa = "Liść 3.2";
    wezel3.DodajElement(lisc32);

    Wezel wezel33 = new Wezel();
    wezel33.nazwa = "Węzeł 3.3";
    korzen.DodajElement(wezel33);

    Lisc lisc33 = new Lisc();
    lisc33.nazwa = "Liść 3.3";
    wezel3.DodajElement(lisc33);
    
    korzen.Renderuj();
   
  } 
}

Prosiłabym o pomoc w rozwiązaniu problemu tak żeby wypisywało poprawne zdania`

4

Na początek usuń linię Lisc lisc = new Lisc();
Potem napraw to że nie dodajesz do listy. Brakuje linii Lista.Add(element);

0

@KamilAdam: Wszystko działa Dziękuje bardzo za pomoc

0

Dzień dobry, borykam się z podobnym problemem. W którym miejscu dokładnie powinno zastosować się Lista.Add(element) @KamilAdam ? Z góry dziękuję za odpowiedź :>

1

W metodzie DodajElement

1 użytkowników online, w tym zalogowanych: 0, gości: 1