total academia death

This commit is contained in:
anon 2024-04-26 16:15:51 +00:00
parent 9c24fc5375
commit 0d2a941a24

77
Program.cs Normal file

@ -0,0 +1,77 @@
class Program
{
public static void Main()
{
Enekesno e1 = new Enekesno("Lady Gaga");
Enekesno e2 = new Enekesno("Nicki Minaj");
Rajongo r1 = new Rajongo("János");
Rajongo r2 = new Rajongo("Patrik");
Rajongo r3 = new Rajongo("Bogi");
e1.Subscribe(r1);
e1.Subscribe(r2);
e2.Subscribe(r2);
e2.Subscribe(r3);
e1.SetKovetkezoKoncertHelyszine("Budapest");
e2.SetKovetkezoKoncertHelyszine("Eger");
}
class Enekesno : IObservable<string>
{
List<IObserver<string>> observer = new List<IObserver<string>>();
string kovetkezoKoncertHelyszine;
string nev;
public Enekesno(string nev) { this.nev = nev; }
public string SetKovetkezoKoncertHelyszine(string varos)
{
kovetkezoKoncertHelyszine = varos;
this.notify();
return null;
}
public IDisposable Subscribe(IObserver<string> obs)
{
observer.Add(obs);
return null;
}
private void notify()
{
foreach(var item in observer)
{
try {
item.OnNext("szia");
item.OnNext("A nevem:");
item.OnNext(this.nev);
item.OnNext("következő koncert helyszíne:");
item.OnNext(this.kovetkezoKoncertHelyszine);
item.OnCompleted();
}
catch (Exception e) { item.OnError(e); }
}
}
}
class Rajongo : IObserver<string>
{
string enekesnoNeve;
bool eneksnoNeveFlag = false;
string kovetkezoKoncertHelyszine;
bool kovetkezoKoncertHelyszineFlag = false;
string nev;
public Rajongo (string nev) { this.nev = nev; }
public void OnCompleted()
{
Console.WriteLine( nev +" Nagyon boldog mert " + enekesnoNeve + " koncertet ad " + kovetkezoKoncertHelyszine + " city-ben:)");
}
public void OnError(Exception error){}
public void OnNext(string value)
{
if(eneksnoNeveFlag) { enekesnoNeve=value; }
if(kovetkezoKoncertHelyszineFlag) { kovetkezoKoncertHelyszine=value; }
if (value.Equals("A nevem:")) { eneksnoNeveFlag = true; }
else { eneksnoNeveFlag = false; }
if (value is "következő koncert helyszíne:") { kovetkezoKoncertHelyszineFlag= true; }
else { kovetkezoKoncertHelyszineFlag = false; }
}
}
}