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

2020-05-13

parent 659548d9
...@@ -7,8 +7,9 @@ ...@@ -7,8 +7,9 @@
mc:Ignorable="d" mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800"> Title="MainWindow" Height="450" Width="800">
<Grid> <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"/> <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> </Grid>
</Window> </Window>
#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "60C2A6ACD5F92BDDFE76CB95A180BD10C4ADBFF20A9F7DDB66936F56B816EBE6" #pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "D57DCAC845907026F457BE8740727CDBDE7747C795BBCA7CC8A9E6E1650A5F23"
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// Dieser Code wurde von einem Tool generiert. // 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> // <auto-generated>
// Dieser Code wurde von einem Tool generiert. // Dieser Code wurde von einem Tool generiert.
......
...@@ -19,7 +19,7 @@ namespace _03VererbungKfzIntro ...@@ -19,7 +19,7 @@ namespace _03VererbungKfzIntro
//CO2-Steuer //CO2-Steuer
//Zusätzlich wird die Steuer für den CO2-Ausstoß berechnet. Jedes Gramm CO2-Ausstoß pro Kilometer, das über //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 //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 // Steuerberechnung Motorrad
...@@ -33,7 +33,12 @@ namespace _03VererbungKfzIntro ...@@ -33,7 +33,12 @@ namespace _03VererbungKfzIntro
//Der Höchstsatz für die günstigste Lkw-Steuerklasse beträgt 556,00 Euro //Der Höchstsatz für die günstigste Lkw-Steuerklasse beträgt 556,00 Euro
class Kfz 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 Kfz(string kennzeichen) { this.kennzeichen = kennzeichen; }
public virtual void Ausgeben() { Console.Write($"{kennzeichen}: "); } public virtual void Ausgeben() { Console.Write($"{kennzeichen}: "); }
public virtual double SteuernBerechnen() { return -999; } public virtual double SteuernBerechnen() { return -999; }
...@@ -48,7 +53,7 @@ namespace _03VererbungKfzIntro ...@@ -48,7 +53,7 @@ namespace _03VererbungKfzIntro
} }
class Pkw : Kfz // Vererbung, Spezialisierung, ist-ein Beziehung class Pkw : Kfz // Vererbung, Spezialisierung, ist-ein Beziehung
{ {
int hubraum, CO2; protected int hubraum, CO2;
public enum BenzinDiesel { Benzin, Diesel }; public enum BenzinDiesel { Benzin, Diesel };
BenzinDiesel typ; BenzinDiesel typ;
public Pkw(string kennzeichen, int hubraum, int CO2, BenzinDiesel typ) : base(kennzeichen) public Pkw(string kennzeichen, int hubraum, int CO2, BenzinDiesel typ) : base(kennzeichen)
...@@ -70,6 +75,21 @@ namespace _03VererbungKfzIntro ...@@ -70,6 +75,21 @@ namespace _03VererbungKfzIntro
Console.WriteLine($"{typ}, Hubraum: {hubraum}"); 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 class Motorrad : Kfz
{ {
int hubraum; int hubraum;
...@@ -117,7 +137,7 @@ namespace _03VererbungKfzIntro ...@@ -117,7 +137,7 @@ namespace _03VererbungKfzIntro
fahrzeuge[0] = new Pkw("N-XY 567", 1598, 148, Pkw.BenzinDiesel.Diesel); fahrzeuge[0] = new Pkw("N-XY 567", 1598, 148, Pkw.BenzinDiesel.Diesel);
fahrzeuge[1] = new Motorrad("ER-KW 123", 250); fahrzeuge[1] = new Motorrad("ER-KW 123", 250);
fahrzeuge[2] = new LKW("FÜ-KL 987", 4598, 3500); 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 #region Gemeinsames Feld, aber mit lästiger Typprüfung und Verzweigung
// Der statische Typ zwingt zu einer Überprüfung des Typs, einem cast zum // Der statische Typ zwingt zu einer Überprüfung des Typs, einem cast zum
...@@ -133,13 +153,18 @@ namespace _03VererbungKfzIntro ...@@ -133,13 +153,18 @@ namespace _03VererbungKfzIntro
for (int i = 0; i < fahrzeuge.Length; i++) 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! // Methodenauswahl findet "normalerweise" auf Basis des STATISCHEN TYPS statt!
// virtual und abstract ermöglichen, die gemäß des DYNAMISCHEN TYPS gespeicherte Methode // 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 // 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 // erfolgen muss. Weitere/spätere Klassen werden einfach in dieses Verfahren durch
// Erben von Kfz "eingeklinkt"! // 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 #region Alte Vorgehensweise
//for (int i = 0; i < autoanzahl; i++) //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