From 9fc44895594bff0833a849de42c69b8e88b7a1bd Mon Sep 17 00:00:00 2001 From: sebi Date: Tue, 23 Jul 2024 08:27:59 +0200 Subject: [PATCH] Interfaces + Bugfix Klassen --- Exercises/E28_Classes/Exercise_2.cs | 16 ++--- Exercises/E28_Classes/Exercise_3.cs | 10 ++- Exercises/E28_Classes/Exercise_7.cs | 6 +- Exercises/E42_Interfaces/Exercise_1.cs | 15 ++++- Exercises/E42_Interfaces/Exercise_2.cs | 10 ++- Exercises/E42_Interfaces/Exercise_3.cs | 40 +++++++++++- Exercises/E42_Interfaces/Exercise_4.cs | 85 ++++++++++++++++++++++++++ 7 files changed, 166 insertions(+), 16 deletions(-) create mode 100644 Exercises/E42_Interfaces/Exercise_4.cs diff --git a/Exercises/E28_Classes/Exercise_2.cs b/Exercises/E28_Classes/Exercise_2.cs index 8d9eac9..b12a745 100644 --- a/Exercises/E28_Classes/Exercise_2.cs +++ b/Exercises/E28_Classes/Exercise_2.cs @@ -8,7 +8,7 @@ namespace Exercises_C_Sharp.E28_Classes { public static void Start() { - List listList = new List(); + List listList = new(); //Erstellen Sie fünf neue Instanzen der Klasse Lists und fügen Sie diese der oberen Liste hinzu. //Code START @@ -21,12 +21,14 @@ namespace Exercises_C_Sharp.E28_Classes //Sollte sich das Element in einer Liste befinden, dann geben Sie den Wert davor und den Wert danach aus. Sollte es keinen Wert davor bzw. danach geben, nehmen Sie den letzten oder den ersten Wert. while(true) { - + //Code START + + //Code ENDE } } static void fillListsWithRandomValues(Lists lis) { - Random rand = new Random(); + Random rand = new(); //Fill Integer for(int i = 0; i < rand.Next(5, 21); i++) lis.IntegerList.Add(rand.Next()); @@ -53,9 +55,9 @@ namespace Exercises_C_Sharp.E28_Classes } class Lists { - public List IntegerList = new List(); - public List StringList = new List(); - public List CharList = new List(); - public List DecimalList = new List(); + public List IntegerList = new(); + public List StringList = new(); + public List CharList = new(); + public List DecimalList = new(); } } \ No newline at end of file diff --git a/Exercises/E28_Classes/Exercise_3.cs b/Exercises/E28_Classes/Exercise_3.cs index 740e06e..edaeafa 100644 --- a/Exercises/E28_Classes/Exercise_3.cs +++ b/Exercises/E28_Classes/Exercise_3.cs @@ -27,10 +27,15 @@ namespace Exercises_C_Sharp.E28_Classes //Geben Sie in diser Methode alle Ausweise optisch ansprechend auf der Konsole aus. static void ShowIDs(List idList) { - + //Code START + + //Code ENDE } //Sorgen Sie dafür, dass der Anwender hier einen validen Ausweis erstellen kann. Setzen Sie die IDNumber selber. Achten Sie darauf, dass eine IDNumber mindesten 5 Zahlen beinhaltet und eindeutig sein muss. + //Code START + + //Code ENDE static ID UserCreateID() { //Code START @@ -39,6 +44,9 @@ namespace Exercises_C_Sharp.E28_Classes } + //Code START + + //Code ENDE } class ID diff --git a/Exercises/E28_Classes/Exercise_7.cs b/Exercises/E28_Classes/Exercise_7.cs index 8659dcb..d57d0c6 100644 --- a/Exercises/E28_Classes/Exercise_7.cs +++ b/Exercises/E28_Classes/Exercise_7.cs @@ -6,9 +6,9 @@ namespace Exercises_C_Sharp.E28_Classes { class Exercise_7 { - static List CustomerList = new List(); - static List ProductList = new List(); - static List InvoiceList = new List(); + static List CustomerList = new(); + static List ProductList = new(); + static List InvoiceList = new(); public static void Start() { while(true) diff --git a/Exercises/E42_Interfaces/Exercise_1.cs b/Exercises/E42_Interfaces/Exercise_1.cs index 97a4088..30a2b65 100644 --- a/Exercises/E42_Interfaces/Exercise_1.cs +++ b/Exercises/E42_Interfaces/Exercise_1.cs @@ -18,28 +18,37 @@ namespace Exercises_C_Sharp.E42_Interfaces //Code ENDE - class Person{ + class Person /*Code START*//*Code ENDE*/{ string _personName; public Person(string name) { _personName = name; } + //Code START + + //Code ENDE } - class Customer{ + class Customer /*Code START*//*Code ENDE*/{ string _customerName; public Customer(string name) { _customerName = name; } + //Code START + + //Code ENDE } - class Human{ + class Human /*Code START*//*Code ENDE*/{ string _humanName; public Human(string name) { _humanName = name; } + //Code START + + //Code ENDE } } \ No newline at end of file diff --git a/Exercises/E42_Interfaces/Exercise_2.cs b/Exercises/E42_Interfaces/Exercise_2.cs index 6c114b0..08b1921 100644 --- a/Exercises/E42_Interfaces/Exercise_2.cs +++ b/Exercises/E42_Interfaces/Exercise_2.cs @@ -26,7 +26,15 @@ namespace Exercises_C_Sharp.E42_Interfaces } } - //ToDo!!!! + foreach(var element in byteList) + { + // 0 0 0 0 0 0 0 0 + // 1 1 1 1 1 1 1 1 + int frequency = element | 0b00001111; + int duration = element | 0b11110000; + Console.Beep(frequency, duration); + Task.Delay(500); + } } } diff --git a/Exercises/E42_Interfaces/Exercise_3.cs b/Exercises/E42_Interfaces/Exercise_3.cs index cd76402..cbb9640 100644 --- a/Exercises/E42_Interfaces/Exercise_3.cs +++ b/Exercises/E42_Interfaces/Exercise_3.cs @@ -1,10 +1,48 @@ namespace Exercises_C_Sharp.E42_Interfaces { + //Sie sehen unten drei Methoden, die alle drei zu verschiedenen Schnittstellen von der Software führen. Die Schnittstellen haben alle drei fest definierte Interfaces. + //Sie sollen nun eine Klasse schreiben, die von allen drei Interfaces ableitet. Erstellen Sie dann in der Start-Methode ein neues Objekt Ihrer Klasse und rufen Sie die drei Methoden mit dem Objekt auf. class Exercise_3 { public static void Start() { - //ToDo!!!! + //Code START + + //Code ENDE + } + + static void BringerMeth(IBringer bring) + { + bring.Bring("Stuff"); + } + static void GetIt(IGetter getter) + { + Console.WriteLine(getter.Get()); + } + static void Receiver(IReceiver receiver) + { + Console.WriteLine(receiver.Receive()); } } + + interface IBringer + { + void Bring(string val); + } + + interface IGetter + { + string Get(); + } + + interface IReceiver + { + string Receive(); + } + + + //Code START + + //Code ENDE + } \ No newline at end of file diff --git a/Exercises/E42_Interfaces/Exercise_4.cs b/Exercises/E42_Interfaces/Exercise_4.cs new file mode 100644 index 0000000..4e2edfe --- /dev/null +++ b/Exercises/E42_Interfaces/Exercise_4.cs @@ -0,0 +1,85 @@ +using System.Reflection.Metadata.Ecma335; + +namespace Exercises_C_Sharp.E42_Interfaces +{ + //Sie sollen eine Aufgabe übernehmen, die eine nicht ganz so begabter Praktikant angefangen hat. + //Diese bestand darin, für jede Wortart eine Klasse zu erstellen, was dieser auch gemacht hat. Jetzt gibt es eine Methode SentenceMaker(), die die Wörter zusammensetzt und einen Text zurück gibt. Leider ist es dort nicht möglich, mehrere Sätze erzeugen zu lassen. + //Ihre Aufgabe ist nun, dass mehrere Wörter übergeben werden können, woraus mehrere Sätze gemacht und zurück gegeben werden sollen. Erstellen Sie dafür ein Interface, von dem alle Klassen ableiten. + + class Exercise_4 + { + public static void Start() + { + //Zum Schluss: Erstellen Sie hier mehrere Objekte der Klassen und rufen Sie die SentenceMaker()-Methode damit auf. + //Code START + + //Code ENDE + } + + //Code START + static string SentenceMaker(Article article, Nomen nomen, Verb verb, Adjective adjective) + { + return string.Format("{0} {1} {2} {3}.", article.BackArticle(), nomen.GiveNomen(), verb.GetVerb(), adjective.ReturnAdjective()); + + } + //Code ENDE + } + + //Hier können Sie das Interface definieren, welches die unteren Klassen implementieren sollen + //Code START + + //Code ENDE + + class Verb + { + string _verb {get;set;} + public Verb(string val) + { + _verb = val; + } + + //Code START + public string GetVerb() => _verb; + //Code ENDE + + } + class Nomen + { + string _nomen {get;set;} + public Nomen(string val) + { + _nomen = val; + } + + //Code START + public string GiveNomen() => _nomen; + //Code ENDE + + } + class Adjective + { + string _adjective {get;set;} + public Adjective(string val) + { + _adjective = val; + } + + //Code START + public string ReturnAdjective() => _adjective; + //Code ENDE + + } + class Article + { + string _article {get;set;} + public Article(string val) + { + _article = val; + } + + //Code START + public string BackArticle() => _article; + //Code ENDE + + } +} \ No newline at end of file