From d296453096239a095f1949c30d3f886f20e04949 Mon Sep 17 00:00:00 2001 From: sebi Date: Wed, 17 Jul 2024 14:59:16 +0200 Subject: [PATCH] =?UTF-8?q?Vererbung=20=C3=9Cbungsaufgaben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Exercises/E40_Vererbung/Exercise_1.cs | 27 ++++++++ Exercises/E40_Vererbung/Exercise_2.cs | 32 +++++++++ Exercises/E40_Vererbung/Exercise_3.cs | 99 +++++++++++++++++++++++++++ Exercises/E40_Vererbung/Exercise_4.cs | 82 ++++++++++++++++++++++ Exercises/E40_Vererbung/dummy | 0 5 files changed, 240 insertions(+) create mode 100644 Exercises/E40_Vererbung/Exercise_1.cs create mode 100644 Exercises/E40_Vererbung/Exercise_2.cs create mode 100644 Exercises/E40_Vererbung/Exercise_3.cs create mode 100644 Exercises/E40_Vererbung/Exercise_4.cs delete mode 100644 Exercises/E40_Vererbung/dummy diff --git a/Exercises/E40_Vererbung/Exercise_1.cs b/Exercises/E40_Vererbung/Exercise_1.cs new file mode 100644 index 0000000..66e8565 --- /dev/null +++ b/Exercises/E40_Vererbung/Exercise_1.cs @@ -0,0 +1,27 @@ +namespace Exercises_C_Sharp.E40_Vererbung +{ + class Exercise_1 + { + public static void Start() + { + Second sec = new(); + + //Sorgen Sie dafür, dass dieser Aufruf funktioniert. Entkommentieren Sie ihn als Überprüfung: + //sec.SayIt(); + + } + } + + class First + { + public void SayIt() + { + Console.WriteLine("Something"); + } + } + + class Second /* CODE START */ /* CODE ENDE */ + { + + } +} \ No newline at end of file diff --git a/Exercises/E40_Vererbung/Exercise_2.cs b/Exercises/E40_Vererbung/Exercise_2.cs new file mode 100644 index 0000000..064599b --- /dev/null +++ b/Exercises/E40_Vererbung/Exercise_2.cs @@ -0,0 +1,32 @@ +namespace Exercises_C_Sharp.E40_Vererbung +{ + //Beide Klassen Luv und Lee haben die Methode GetWindSpeed(). Für eine Software ist es aber irrelevant, von wo der Wind kommt. Es ist nur wichtig, wie schnell er ist. Sie sollen also eine neue Klasse schreiben, die diese Methode anbietet und die Klassen Luv und Lee davon ableiten lassen. Ändern Sie dann auch den dynamic-Typ in der Liste ab. + + class Exercise_2 + { + public static void Start() + { + List dynList = new(){ new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee(), new Luv(), new Lee() }; + + int speed = 0; + foreach(var element in dynList) + speed += element.GetWindSpeed(); + + Console.WriteLine("Geschwindigkeit des Windes: " + speed); + } + } + + //Code START + + //Code ENDE + + class Luv + { + + } + + class Lee + { + + } +} \ No newline at end of file diff --git a/Exercises/E40_Vererbung/Exercise_3.cs b/Exercises/E40_Vererbung/Exercise_3.cs new file mode 100644 index 0000000..fc1d718 --- /dev/null +++ b/Exercises/E40_Vererbung/Exercise_3.cs @@ -0,0 +1,99 @@ +namespace Exercises_C_Sharp.E40_Vererbung +{ + class Exercise_3 + { + public static void Start() + { + // 2. Erstellen Sie eine Liste aus Tree's und befüllen Sie zufällig mit 100 unterschiedlichen Bäumen. + //Code START + + //Code ENDE + + // 3. Produzieren Sie dann mit jedem Baum zwischen 3 und 10 mal Sauerstoff + //Code START + + //Code ENDE + + //4. Zählene Sie, von wie vielen LeafKinds es wie viele gibt und geben Sie das Ergebnis auf der Konsole aus: + //Code START + + //Code ENDE + + //5. Addieren Sie den Sauerstoff aller Bäume und geben Sie den Wert auf der Konsole aus: + //Code START + + //Code ENDE + + //6. Geben Sie den Specialwert (Werte, die nicht zusammengefasst werden konnten) der verschiedenen Bäume auf der Konsole aus. + //Code START + + //Code ENDE + } + } + + // 1. Schreiben Sie eine Klasse "Tree", die alle gemeinsamen Member der unteren Klassen vereint. Leiten Sie dann von dieser ab. + //Code START + class Tree{} + //Code ENDE + + class Birch : Tree + { + public readonly string BarkColor = "White"; + public int ProducedOxygen { get; set; } + public LeafKind LeafKind { get; set; } + public void MakePhotosynthesis() + { + ProducedOxygen += 10; + } + } + + class Oak + { + public readonly string Fruit = "Acorn"; + public int ProducedOxygen { get; set; } + public LeafKind LeafKind { get; set; } + public void MakePhotosynthesis() + { + ProducedOxygen += 10; + } + + } + + class Larch + { + public readonly string SpecialAbility = "Loses Needles in Autumn"; + public int ProducedOxygen { get; set; } + public LeafKind LeafKind { get; set; } + public void MakePhotosynthesis() + { + ProducedOxygen += 10; + } + + } + + class Willow + { + public readonly string Roots = "Very strong and far-reaching"; + public int ProducedOxygen { get; set; } + public LeafKind LeafKind { get; set; } + public void MakePhotosynthesis() + { + ProducedOxygen += 10; + } + + } + + class Fir + { + public readonly string Form = "Pyramid-like"; + public int ProducedOxygen { get; set; } + public LeafKind LeafKind { get; set; } + public void MakePhotosynthesis() + { + ProducedOxygen += 10; + } + + } + + enum LeafKind { Leaf, Needle, Blank } +} \ No newline at end of file diff --git a/Exercises/E40_Vererbung/Exercise_4.cs b/Exercises/E40_Vererbung/Exercise_4.cs new file mode 100644 index 0000000..f6b46c4 --- /dev/null +++ b/Exercises/E40_Vererbung/Exercise_4.cs @@ -0,0 +1,82 @@ +using System.Runtime.InteropServices; + +namespace Exercises_C_Sharp.E40_Vererbung +{ + // Sie sind Programmierer in einem Kaufhaus. Das Kaufhaus hatte vor einiger Zeit eine Bonuskarte für Kunden eingeführt. Diese haben zwei Vorteile: Sie bekommen Bonuspunkte, die sie für Rabatte eintauschen können, und sie bekommen zum Geburtstag einen Gutschein per Mail gesendet. + // Jetzt will das Kaufhaus zwei Bonusprogramme einführen: Eins für NormalCustomer und eins für PremiumCustomer. + // Für NormalCustomer gibt es zum Geburtstag nur noch 100 Bonuspunkte, für PremiumCustomer 500 Bonuspunkte und noch einen extra Gutschein von 20% auf den nächsten Einkauf. + // PremiumCustomer bekommen pro Einkauf sogar 50 Bonuspunkte, NormalCustomer nur 5 Bonuspunkte pro Einkauf. + + //Das Kaufhaus hat sich überlegt, alle jungen Leute, die ab 01.01.2000 geboren sind, kostenlos als PremiumCustomer einzustellen. Normalerweise kostet die Mitgliedschaft 39,99 € im Jahr. + + //Ihre Aufgabe ist nun: Den Code so anzupassen, dass das obere Szenario abgebildet werden kann. + + //[In dieser Aufgabe gibt es kein Start und Ende, sie dürfen ändern was Sie wollen. Achten Sie aber bitte drauf, dass die Vererbung nutzen.] + class Exercise_4 + { + public static void Start() + { + WriteCustomerForBirthday(MakeCustomer()); + + } + + //Hier sollen Sie allen Kunden die Nachricht zukommen lassen, dass sie nun Premium für den oben genannten Preis haben können. Alle ab 2000 geborenen soll gesagt werden, dass sie nun PremiumCustomer sind. + static void WriteCustomerForPremium() + { + + } + + static void WriteCustomerForBirthday(List customers) + { + Random rand = new(); + foreach(var element in customers) + { + if(element.Birth.Month == DateTime.Now.Month && element.Birth.Day == DateTime.Now.Day) + element.SendMail("Alles Gute zum Geburtstag! Hier ist ihr Coupon für 15% Rabatt auf den Einkauf: " + rand.Next()); + } + } + + static List MakeCustomer() + { + List customers = new(){ + new(){Name = "Franz Franzner", Birth = new(1988, 1, 8)}, + new(){Name = "Hans Hansner", Birth = new(2000, 12, 7)}, + new(){Name = "Schorsch Schorschner", Birth = new(1968, 11, 15)}, + new(){Name = "Johann Johanner", Birth = new(1999, 2, 27)}, + new(){Name = "Georg Georgner", Birth = new(1952, 7, 2)}, + new(){Name = "Herman Hermanner", Birth = new(2001, 9, 24)}, + new(){Name = "Peter Peterner", Birth = new(1982, 10, 1)}, + new(){Name = "Karl Karlner", Birth = new(1977, 2, 4)}, + new(){Name = "Willy Willner", Birth = new(2003, 8, 30)} + }; + + Random rand = new(); + + for(int i = 0; i < 100; i++) + { + customers[rand.Next(customers.Count)].AddBonusPoints(); + } + + return customers; + } + } + + class Customer + { + public string Name {get; set;} + public DateOnly Birth {get; set;} + public int BonusPoints {get;set;} + + public void SendMail(string message) + { + Console.WriteLine("Wrote mail to " + Name); + } + + public void AddBonusPoints() + { + BonusPoints += 10; + } + } + + +} \ No newline at end of file diff --git a/Exercises/E40_Vererbung/dummy b/Exercises/E40_Vererbung/dummy deleted file mode 100644 index e69de29..0000000