Commit cde4df2c authored by Uwe Wienkop's avatar Uwe Wienkop
Browse files

2020-05-13

parent 659548d9
......@@ -7,8 +7,9 @@
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Button Content="Button" HorizontalAlignment="Left" Margin="190,134,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
<Button Content="Mein bester Button" HorizontalAlignment="Left" Margin="190,134,0,0" VerticalAlignment="Top" Width="136" Click="Button_Click"/>
<Label x:Name="meinLabel" Content="Label" HorizontalAlignment="Left" Margin="208,240,0,0" VerticalAlignment="Top"/>
<TextBox HorizontalAlignment="Left" Height="23" Margin="344,190,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
</Grid>
</Window>
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "60C2A6ACD5F92BDDFE76CB95A180BD10C4ADBFF20A9F7DDB66936F56B816EBE6"
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "D57DCAC845907026F457BE8740727CDBDE7747C795BBCA7CC8A9E6E1650A5F23"
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
......
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "60C2A6ACD5F92BDDFE76CB95A180BD10C4ADBFF20A9F7DDB66936F56B816EBE6"
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "D57DCAC845907026F457BE8740727CDBDE7747C795BBCA7CC8A9E6E1650A5F23"
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
......
......@@ -19,7 +19,7 @@ namespace _03VererbungKfzIntro
//CO2-Steuer
//Zusätzlich wird die Steuer für den CO2-Ausstoß berechnet. Jedes Gramm CO2-Ausstoß pro Kilometer, das über
//dem Sockelwert liegt, kostet zwei Euro Steuern. Die Sockelwerte – „Freibeträge“ für unterschiedliche
//Zeitpunkte der Erstzulassung – können Sie der folgenden Tabelle entnehmen:
//Zeitpunkte der Erstzulassung – können Sie der folgenden Tabelle entnehmen ...
//----------
// Steuerberechnung Motorrad
......@@ -33,7 +33,12 @@ namespace _03VererbungKfzIntro
//Der Höchstsatz für die günstigste Lkw-Steuerklasse beträgt 556,00 Euro
class Kfz
{
string kennzeichen;
/* private */static int kfzZaehler = 0;
public string kennzeichen { get; private set; } // private ist die default-Einstellung
// public ~ alle Methoden aus allen Klassen dürfen darauf zugreifen
// private ~ ausschließlich die Methoden aus dieser Klasse dürfen hierauf zugreifen
// protected ~ die Methoden aus dieser Klasse UND die Methoden aus abgeleiteten Klassen dürfen
// auf dieses Property zugreifen; Methoden aus anderen Klassen nicht!
public Kfz(string kennzeichen) { this.kennzeichen = kennzeichen; }
public virtual void Ausgeben() { Console.Write($"{kennzeichen}: "); }
public virtual double SteuernBerechnen() { return -999; }
......@@ -48,7 +53,7 @@ namespace _03VererbungKfzIntro
}
class Pkw : Kfz // Vererbung, Spezialisierung, ist-ein Beziehung
{
int hubraum, CO2;
protected int hubraum, CO2;
public enum BenzinDiesel { Benzin, Diesel };
BenzinDiesel typ;
public Pkw(string kennzeichen, int hubraum, int CO2, BenzinDiesel typ) : base(kennzeichen)
......@@ -70,6 +75,21 @@ namespace _03VererbungKfzIntro
Console.WriteLine($"{typ}, Hubraum: {hubraum}");
}
}
class Oldtimer : Pkw
{
int baujahr;
public Oldtimer(string kennzeichen, int hubraum, int CO2, BenzinDiesel typ, int baujahr)
: base (kennzeichen,hubraum,CO2,typ)
{
this.baujahr = baujahr;
}
public override double SteuernBerechnen()=> 1.0 * (hubraum + 99) / 100;
public override void Ausgeben()
{
base.Ausgeben();
Console.WriteLine($"Baujahr: {baujahr}");
}
}
class Motorrad : Kfz
{
int hubraum;
......@@ -117,7 +137,7 @@ namespace _03VererbungKfzIntro
fahrzeuge[0] = new Pkw("N-XY 567", 1598, 148, Pkw.BenzinDiesel.Diesel);
fahrzeuge[1] = new Motorrad("ER-KW 123", 250);
fahrzeuge[2] = new LKW("FÜ-KL 987", 4598, 3500);
fahrzeuge[3] = new Kfz("N-AB 123");
fahrzeuge[3] = new Oldtimer("N-AB 123",1998, 250, Pkw.BenzinDiesel.Benzin, 1960);
#region Gemeinsames Feld, aber mit lästiger Typprüfung und Verzweigung
// Der statische Typ zwingt zu einer Überprüfung des Typs, einem cast zum
......@@ -133,13 +153,18 @@ namespace _03VererbungKfzIntro
for (int i = 0; i < fahrzeuge.Length; i++)
{
Console.WriteLine(fahrzeuge[i].SteuernBerechnen());
Console.WriteLine($"{fahrzeuge[i].kennzeichen}: {fahrzeuge[i].SteuernBerechnen()}");
// Methodenauswahl findet "normalerweise" auf Basis des STATISCHEN TYPS statt!
// virtual und abstract ermöglichen, die gemäß des DYNAMISCHEN TYPS gespeicherte Methode
// automatisch aufzurufen - ohne dass eine Typüberprüfung, ein cast oder eine if-Auswahl
// erfolgen muss. Weitere/spätere Klassen werden einfach in dieses Verfahren durch
// Erben von Kfz "eingeklinkt"!
}
for (int i = 0; i < fahrzeuge.Length; i++)
{
if (fahrzeuge[i].kennzeichen == "ER-KW 123")
Console.WriteLine("Gefunden!");
}
#region Alte Vorgehensweise
//for (int i = 0; i < autoanzahl; i++)
//{
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment