Vererbung Übungsaufgaben
parent
bedea4caf3
commit
d296453096
|
|
@ -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 */
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -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<dynamic> 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
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -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 }
|
||||
}
|
||||
|
|
@ -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<Customer> 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<Customer> MakeCustomer()
|
||||
{
|
||||
List<Customer> 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue