diff --git a/07-1 Intro Interfaces/Classes.cs b/07-1 Intro Interfaces/Classes.cs index b3a19843debce469b2a6aa1f4d4185b050cadbfa..1fbc29ad6336b41ba6e3b647b94b1a50d49e5820 100644 --- a/07-1 Intro Interfaces/Classes.cs +++ b/07-1 Intro Interfaces/Classes.cs @@ -6,8 +6,7 @@ namespace _07_1_Intro_Interfaces { interface IBesteuerbar { - /* public abstract */ - double Steuern(); + /* public abstract */ double Steuern(); } // Interface ist eine abstrakte Klasse // alle Methoden sind public und abstract diff --git a/07-1 Intro Interfaces/Program.cs b/07-1 Intro Interfaces/Program.cs index 2c639645139dbc5f1c789172616e00f1995b372e..28400c9213a6b82a184eb966d847b19edb79f60b 100644 --- a/07-1 Intro Interfaces/Program.cs +++ b/07-1 Intro Interfaces/Program.cs @@ -22,7 +22,11 @@ namespace _07_1_Intro_Interfaces verkObj[2] = new Immobilien(); foreach (var item in verkObj) + { + Console.WriteLine(item); item.Verkaufen(); + Console.WriteLine($"Steuern: {(item as Pkw).Steuern()}"); + } IBesteuerbar[] bestObj = new IBesteuerbar[2]; //int ind = 0; diff --git a/07-2 Intro Exceptions/Program.cs b/07-2 Intro Exceptions/Program.cs index 0f2fc741d96e44b586ec4f160d23f0845bc6cd87..7df86bd40daee3cb383ac6e9e435393934f4660d 100644 --- a/07-2 Intro Exceptions/Program.cs +++ b/07-2 Intro Exceptions/Program.cs @@ -10,6 +10,7 @@ namespace _07_2_Intro_Exceptions FehlerCode = fehlercode; } } + class Program { static void funktion1(int x) @@ -34,39 +35,46 @@ namespace _07_2_Intro_Exceptions { try { - Console.WriteLine("Vor Funktion1"); - funktion1(1); - funktion2(2); - funktion3(0); - Console.WriteLine("Nach Funktion1"); - } - catch (ArgumentOutOfRangeException e) // catch fängt FehlerTYPEN - { - Console.WriteLine("Es ist eine ArgumentOutOfRangeException aufgetreten"); - Console.WriteLine($"Fehler: {e.Message}"); - } - catch (ArithmeticException) // catch fängt FehlerTYPEN - { - Console.WriteLine("Es ist ein Arithmetikfehler aufgetreten"); - } - catch (MeinFehler mf) // catch fängt FehlerTYPEN - { - Console.WriteLine($"{mf.Message} | {mf.FehlerCode}"); - throw new ArgumentException(); - throw; - } - catch (Exception) // Zuerst die spezifischen Fehler fangen, dann die allgemeineren!!! - { - Console.WriteLine("Es ist ein allgemeiner Fehler aufgetreten"); + try + { + Console.WriteLine("Vor Funktion1"); + funktion1(1); + funktion2(2); + funktion3(0); + Console.WriteLine("Nach Funktion1"); + } + catch (ArgumentOutOfRangeException e) // catch fängt FehlerTYPEN + { + Console.WriteLine("Es ist eine ArgumentOutOfRangeException aufgetreten"); + Console.WriteLine($"Fehler: {e.Message}"); + } + catch (ArithmeticException) // catch fängt FehlerTYPEN + { + Console.WriteLine("Es ist ein Arithmetikfehler aufgetreten"); + } + catch (MeinFehler mf) // catch fängt FehlerTYPEN + { + Console.WriteLine($"{mf.Message} | {mf.FehlerCode}"); + throw new ArgumentException(); + throw; // Weiterwerfen des Fehlerobjekts + } + catch (Exception) // Zuerst die spezifischen Fehler fangen, dann die allgemeineren!!! + { + Console.WriteLine("Es ist ein allgemeiner Fehler aufgetreten"); + } + finally + { + Console.WriteLine("Wird immer ausgeführt"); + // Zum Beispiel Dateien schließen, Ressourcen freigeben + // Bei ... + // Fehlerfreier Ausführung des try-Blocks + // Fehlerhafter Ausführung des try-Blocks mit und ohne catch + // (auch mit weiterem throw [mit und ohne Parameter] ) + } } - finally + catch (ArgumentException) { - Console.WriteLine("Wird immer ausgeführt"); - // Zum Beispiel Dateien schließen, Ressourcen freigeben - // Bei ... - // Fehlerfreier Ausführung des try-Blocks - // Fehlerhafter Ausführung des try-Blocks mit und ohne catch - // (auch mit weiterem throw [mit und ohne Parameter] ) + Console.WriteLine("Hab Dich!"); } } } diff --git a/08-2 Generics Intro/Program.cs b/08-2 Generics Intro/Program.cs index 5c15309098cd932bcfc8118c311deb67f2f8db97..2a8c4a9a0177c4f6226935e4a4c0569129f14bf8 100644 --- a/08-2 Generics Intro/Program.cs +++ b/08-2 Generics Intro/Program.cs @@ -3,7 +3,7 @@ using System.Diagnostics.CodeAnalysis; namespace _08_2_Generics_Intro { - class Person : IComparable<Person> + class Person : IComparable<Person> { string name, vorname; public Person(string Name, string Vorname) { name = Name;vorname = Vorname; } @@ -74,6 +74,11 @@ namespace _08_2_Generics_Intro Console.WriteLine($"Minimum von 7.5 und 7.3: {Min(7.5, 7)}"); Console.WriteLine($"Minimum von Berta und Anton: {Min("Berta", "Anton")}"); Console.WriteLine($"Minimum von zwei Person-Objekten: {Min(new Person("Meier","Anton"), new Person ("Meier","Berta"))}"); + + bool gleich = new Person("Meier", "Anton").Equals(new Person("Meier", "Berta")); + // Equals ist bereits in der Klasse Object definiert, damit in allen Klassen verfügbar, + // enthält aber nur die "Basis-Implementierung" eines Referenzvergleichs. + // MUSS für ein richtiges Equals in der jeweiligen Klasse neu definiert werden. } } } diff --git a/09-1 KeyValueList/KeyValueList.cs b/09-1 KeyValueList/KeyValueList.cs index 88f24a9a80bdc19fb5493a058bf57613fa6e52e9..39bdecf619603aaea233015c7fb89c74445cca61 100644 --- a/09-1 KeyValueList/KeyValueList.cs +++ b/09-1 KeyValueList/KeyValueList.cs @@ -5,9 +5,9 @@ using System.Text; namespace _09_1_KeyValueList { - class KeyValueList<K,V>:IComparable<KeyValueList<K,V>> where K:IComparable<K> + class KeyValueList<K, V> : IComparable<KeyValueList<K, V>> where K : IComparable<K> { - private class KVItem + private class KVItem { public K key; public V val; @@ -31,15 +31,15 @@ namespace _09_1_KeyValueList last = last.next; } } - public IEnumerator<KeyValuePaar<K,V>> GetEnumerator() + public IEnumerator<KeyValuePaar<K, V>> GetEnumerator() { - for (KVItem item = first; item!=null;item=item.next) + for (KVItem item = first; item != null; item = item.next) yield return new KeyValuePaar<K, V>(item.key, item.val); } private KVItem ItemSearch(K searchKey) { for (KVItem item = first; item != null; item = item.next) - if (item.key.CompareTo(searchKey)==0) + if (item.key.CompareTo(searchKey) == 0) return item; return null; } @@ -61,9 +61,9 @@ namespace _09_1_KeyValueList AddEnd(key, value); } } - public KeyValueList<K,V> Copy() + public KeyValueList<K, V> Copy() { - KeyValueList<K,V> res = new KeyValueList<K, V>(); + KeyValueList<K, V> res = new KeyValueList<K, V>(); // ... return res; } diff --git a/09-Ubg GenericStack-Di/GenericStack.cs b/09-Ubg GenericStack-Di/GenericStack.cs index 1cd211fe74e98aa81fca34c913c71908a5f1f922..e9458aaf500ef605d5090f500bd0d278e0a8f5dd 100644 --- a/09-Ubg GenericStack-Di/GenericStack.cs +++ b/09-Ubg GenericStack-Di/GenericStack.cs @@ -64,7 +64,7 @@ namespace _09_Ubg_GenericStack_Di public bool Contains(T searchData) { for (StackItem item = first; item != null; item = item.next) - { + { // Equals ~ Test auf Gleichheit if (item.data.Equals(searchData)) return true; } diff --git "a/0\303\2378-3 GenericList/GenericList.cs" "b/0\303\2378-3 GenericList/GenericList.cs" index 29e0b533247c67d40e9e89c01aef56f7e40be8c0..e0347ba6b6ec3ea631887b1f146615414f7924a0 100644 --- "a/0\303\2378-3 GenericList/GenericList.cs" +++ "b/0\303\2378-3 GenericList/GenericList.cs" @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections; using System.Text; namespace _08_3_GenericList { @@ -25,7 +26,7 @@ namespace _08_3_GenericList LItem first = null, last = null; public int Count { get; private set; } public Liste() { Count = 0; } - public int CompareTo(Liste<T> other) => Count - other.Count; + public int CompareTo(Liste<T> other) => this.Count - other.Count; public void AddEnd(T Data) { diff --git "a/0\303\2378-3 GenericList/Program.cs" "b/0\303\2378-3 GenericList/Program.cs" index 050993e2edb1ff5ab6fef2288e3a1839b55e8615..365c56bf362dd54a89d1f5e4fabe7dbcf56cccce 100644 --- "a/0\303\2378-3 GenericList/Program.cs" +++ "b/0\303\2378-3 GenericList/Program.cs" @@ -32,6 +32,10 @@ namespace _08_3_GenericList sl.AddSorted("Claudia"); sl.AddSorted("Anton"); sl.Print(); + foreach (var item in sl) + { + Console.WriteLine(); + } //Liste<object> ol = new Liste<object>(); //ol.AddEnd(1); @@ -57,7 +61,7 @@ namespace _08_3_GenericList kl.AddSorted(new LKW("FÜ-MN 543", 20000, 5000)); kl.Print(); - // foreach (var item in kl) + //foreach (var item in kl) foreach (var item in kl.Reverse()) { Console.WriteLine(item); diff --git a/13-2 VererbungWdhlg/Program.cs b/13-2 VererbungWdhlg/Program.cs index 173ab78c10fa158ed4fc3145b2a5aad0ac9f06fd..7cb17453b2093cc661f5d2f9d9105daa96b58f58 100644 --- a/13-2 VererbungWdhlg/Program.cs +++ b/13-2 VererbungWdhlg/Program.cs @@ -2,67 +2,110 @@ namespace _13_2_VererbungWdhlg { - interface IBetankbar { + class Program + { + static void Main(string[] args) + { + /*[1]*/ + IBetankbar[] fuhrpark = { new DieselFZ(), new BenzinFZ(), new ElektrischesFZ() }; + foreach (/*2*/IBetankbar fz in fuhrpark) + macheFahrbereit(/*3:nix*/fz); + } + public static void macheFahrbereit(IBetankbar/*4*/ fz) + { + fz.tanke(); // für 4 auf tanke() schauen! + } + } + + interface IBetankbar /*[5]*/ + { void tanke(); } - interface IBefuellbar : IBetankbar + interface IBefuellbar /*[6]*/ : IBetankbar { double Fuellstand { get; set; } void befuelle(); } - interface ILadbar : IBetankbar + interface ILadbar /*[7]*/ : IBetankbar { double Ladestand { get; set; } void lade(); } + abstract class FossilerAntrieb : IBefuellbar + { + /*[8]*/ + protected double fuellstand; + public double Fuellstand /*[9]*/ + { + get { return fuellstand; } + set + { + if (value >= 0.0 && value <= 1.0) + fuellstand = value; + } + } + /*[10]*/ + public abstract void befuelle(); + /*[11]*/ + public void tanke() + { + if (fuellstand < 0.5) + befuelle(); + else + Console.WriteLine("Noch fahrbereit"); + } + } - - -abstract class FossilerAntrieb : IBefuellbar -{ - [8] double fuellstand; - public double[9] { - get { return fuellstand; } -set -{ if (value >= 0.0 && value <= 1.0) fuellstand = value; } - } - [10] void befuelle(); -[11] () { - if (fuellstand < 0.5) befuelle(); - else Console.WriteLine("Noch fahrbereit"); -} -} - -abstract class ElektrischerAntrieb : ILadbar -{ - [14] double ladestand; - public double[15] { - get { return ladestand; } -set -{ - if (value >= 0.0 && value <= 1.0) ladestand = value; -} -[16] void lade(); -[17] () { - if (ladestand < 0.5) lade(); - else Console.WriteLine("Noch fahrbereit"); -} -} -class ElektrischesFZ : ElektrischerAntrieb -{ - [18] - void lade() + class DieselFZ : FossilerAntrieb { - Console.WriteLine("Ladestecker entnehmen, warten, Ladestecker in Halterung."); - ladestand = 1.0; + /*12*/ + public override void befuelle() + { + Console.WriteLine("Dieselhandschuhe anziehen, Zapfpistole entnehmen, tanken, Zapfpistole in Halterung."); + fuellstand = 1.0; + } + } + class BenzinFZ : FossilerAntrieb + { + /*13*/ + public override void befuelle() + { + Console.WriteLine("Zapfpistole entnehmen, tanken, Zapfpistole in Halterung."); + fuellstand = 1.0; + } } -} -class Program + abstract class ElektrischerAntrieb : ILadbar { - static void Main(string[] args) + /*[14]*/ + protected double ladestand; + public double Ladestand/*[15]*/ + { + get { return ladestand; } + set + { + if (value >= 0.0 && value <= 1.0) ladestand = value; + } + } + + /*[16]*/ + public abstract void lade(); + /*[17]*/ + public void tanke() + { + if (ladestand < 0.5) + lade(); + else + Console.WriteLine("Noch fahrbereit"); + } + } + class ElektrischesFZ : ElektrischerAntrieb + { + /*[18]*/ + public override void lade() { - Console.WriteLine("Hello World!"); + Console.WriteLine("Ladestecker entnehmen, warten, Ladestecker in Halterung."); + ladestand = 1.0; } } -} +} \ No newline at end of file