Zum Inhalt

📘 Lernziele C# – Kompakte, aber detaillierte Zusammenfassung


1. kennen die primitiven Datentypen in C#

Erklärung:
Primitive Datentypen sind die grundlegenden Datentypen in C#. Sie speichern einfache Werte.

  • int = ganze Zahl

  • float = Kommazahl (mit f am Ende)

  • double = Kommazahl (doppelte Genauigkeit)

  • char = einzelnes Zeichen (in ')

  • string = Zeichenkette (in ")

  • bool = wahr/falsch

Codebeispiel:

int alter = 18;
float note = 5.5f;
double pi = 3.14159;
char buchstabe = 'A';
string name = "Timo";
bool istVolljaehrig = true;

Quiz: Welcher Typ für Temperatur? Ja/Nein-Frage? Alter?
Antwort: Temperatur = float/double, Ja/Nein = bool, Alter = int.


2. implementieren in eigenen Programmen eindimensionale Arrays

Erklärung:
Ein Array speichert mehrere Werte vom gleichen Typ. Der Index beginnt bei 0.

Codebeispiel:

int[] zahlen = {10, 20, 30};
Console.WriteLine(zahlen[0]); // 10

Quiz: Wie greifst du auf das 3. Element von zahlen zu?
Antwort: zahlen[2].


3. wenden Kontrollstrukturen (Sequenz, Iteration, Selektion) korrekt in eigenen Programmen an

Erklärung:

  • Sequenz: Code läuft Schritt für Schritt.

  • Iteration: Schleifen (for, while).

  • Selektion: Bedingungen (if, switch).

Codebeispiel:

for (int i = 0; i < 3; i++) {
    if (i % 2 == 0) Console.WriteLine("Gerade");
    else Console.WriteLine("Ungerade");
}

Quiz: Was gibt die Schleife für i = 0..2 aus?
Antwort: „Gerade“, „Ungerade“, „Gerade“.


4. erläutern den Unterschied zwischen Wertübergabe und Referenzübergabe (Call by value und Call by reference)

Erklärung:

  • Call by Value: Es wird nur eine Kopie übergeben.

  • Call by Reference: Adresse wird übergeben → Methode kann Original verändern.

Codebeispiel:

void MachZehn(int x) { x = 10; }
void MachZehnRef(ref int x) { x = 10; }

int a = 5;
MachZehn(a);        // a bleibt 5
MachZehnRef(ref a); // a wird 10

Quiz: Warum braucht ref ein Schlüsselwort?
Antwort: Damit klar ist, dass Original verändert werden darf.


5. erläutern die Bestandteile der Main-Methode in C#

Erklärung:

  • static: gehört Klasse, kein Objekt nötig.

  • void: keine Rückgabe.

  • string[] args: Kommandozeilenargumente.

Codebeispiel:

class Program {
    static void Main(string[] args) {
        Console.WriteLine("Start!");
    }
}

Quiz: Was bedeutet static?
Antwort: Main-Methode kann ohne Objekt aufgerufen werden.


6. lesen Daten von der Konsole ein und geben diese formatiert auf der Konsole aus

Erklärung:

  • Eingabe mit Console.ReadLine().

  • Ausgabe mit Console.WriteLine().

Codebeispiel:

Console.Write("Gib dein Alter ein: ");
int alter = int.Parse(Console.ReadLine());
Console.WriteLine($"Du bist {alter} Jahre alt.");

Quiz: Was macht int.Parse(Console.ReadLine())?
Antwort: Wandelt die Eingabe in eine ganze Zahl um.


7. erklären die Überladung von Methoden anhand der Methodensignatur und können dieses Konzept anwenden

Erklärung:
Gleicher Name, unterschiedliche Parameter.

Codebeispiel:

int Add(int a, int b) => a+b;
double Add(double a, double b) => a+b;

Quiz: Welche Methode bei Add(2.5, 3.5)?
Antwort: Die mit double.


8. kennen das Paradigma des objektorientierten Ansatzes und erläutern an Beispielen, welche prinzipiellen Unterschiede gegenüber dem prozeduralen Ansatz bestehen

Erklärung:

  • Prozedural: Daten + Funktionen getrennt.

  • OOP: Daten + Methoden in Objekten.

Beispiel:
Prozedural: double KreisFlaeche(double r)
OOP: kreis.Radius = 5; kreis.Flaeche();

Quiz: Vorteil von OOP?
Antwort: Strukturierter, wiederverwendbar, leichter erweiterbar.


9. erläutern das Schlüsselwort "this" und wenden dieses korrekt an

Erklärung:
this = aktuelles Objekt.

Codebeispiel:

class Auto {
    string marke;
    public Auto(string marke) {
        this.marke = marke; // unterscheidet Feld von Parameter
    }
}

Quiz: Wozu dient this?
Antwort: Um Felder vom Parameter mit gleichem Namen zu unterscheiden.


10. erläutern die Bedeutung und die Kernidee der Datenkapselung und des Geheimnisprinzips

Erklärung:

  • Daten werden private.

  • Zugriff nur über public Methoden/Eigenschaften.

Codebeispiel:

class Konto {
    private double saldo;
    public void Einzahlen(double betrag) { saldo += betrag; }
}

Quiz: Warum ist saldo privat?
Antwort: Schutz → niemand kann direkt ändern.


11. erläutern die Unterschiede zwischen Instanz- und Klassenvariablen

Erklärung:

  • Instanzvariablen: jedes Objekt hat eigene.

  • Klassenvariablen: mit static, für alle gleich.

Codebeispiel:

class Person {
    public string name;
    public static int anzahl;
}

Quiz: Was passiert mit anzahl, wenn 3 Personen erzeugt werden?
Antwort: Es wird 3 → zählt alle Objekte.


12. kennen den Aufbau und die Syntax eines UML-Klassendiagramms

Erklärung:

  • + = public, - = private.

  • Attribute: - name: string.

  • Methoden: + Add(x:int):int.

Quiz: Was bedeutet +?
Antwort: public.


13. interpretieren Attribute und Operationen eines Klassendiagramms

Erklärung:

  • Attribute = Eigenschaften (Felder).

  • Operationen = Methoden (Funktionen).

Quiz: Was ist + Alter: int?
Antwort: Öffentliches Attribut „Alter“ vom Typ int.


14. erklären die Bedeutung von Klassenattributen und Klassenmethoden

Erklärung:
Mit static → gehören der Klasse.

Codebeispiel:

class Mathe {
    public static double Pi = 3.14;
}
Console.WriteLine(Mathe.Pi);

Quiz: Muss man für Pi ein Objekt erstellen?
Antwort: Nein.


15. implementieren Klassendiagramme (Attribute und Operationen ohne Beziehungen) als C#-Programm mit Feldern, Eigenschaften und Methoden sowie korrekter Sichtbarkeit

Codebeispiel (UML → Code):

+ Marke: string
+ Fahren(): void
class Auto {
    public string Marke { get; set; }
    public void Fahren() { Console.WriteLine("Brumm"); }
}

Quiz: Unterschied Feld vs. Property?
Antwort: Property = kontrollierter Zugriff.


16. erläutern die Bedeutung sowie Anwendung von Konstruktoren und setzen diese Konzepte in C# um

Erklärung:
Konstruktor = spezielle Methode, wird beim Erstellen eines Objekts ausgeführt.

Codebeispiel:

class Auto {
    public string Marke { get; set; }
    public Auto(string m) { Marke = m; }
}

Quiz: Wann wird Konstruktor aufgerufen?
Antwort: Beim new.


17. wenden Konstruktoren-Verkettung sowie -Überladung sinnvoll an

Codebeispiel:

class Auto {
    public string Marke { get; set; }
    public Auto() : this("Unbekannt") {}
    public Auto(string m) { Marke = m; }
}

Quiz: Was macht : this("Unbekannt")?
Antwort: Ruft anderen Konstruktor auf.


18. initialisieren Objekte mittels Objekt-Initialisierer

Codebeispiel:

Auto a = new Auto { Marke = "BMW" };

Quiz: Vorteil?
Antwort: Schnelle Initialisierung ohne extra Konstruktor.