|
|
| Zeile 1: |
Zeile 1: |
| == Aufbau einer modernen C#-Klasse == | | == Frontend Frameworks – Reifegrade == |
|
| |
|
| Eine Klasse bündelt Daten (Eigenschaften) und Verhalten (Methoden). Modernes C# nutzt file-scoped Namespaces, Auto-Properties, required/init, Expression-bodied Members, Events und optional Primärkonstruktoren (C# 12).
| | ; Tier-Definition (Kurzfassung) |
| | * Tier 1: Weit verbreitet, stabil, Langzeitpflege, starkes Ökosystem |
|
| |
|
| === Minimales Gerüst ===
| |
|
| |
|
| <syntaxhighlight lang="csharp">
| | {| class="wikitable sortable" |
| namespace MeineApp;
| | ! Tier !! Framework !! Kategorie !! Erstveröffentlichung !! Governance/Backing !! Release-/LTS-Kadenz !! Kurzbewertung |
| | |- |
| | | 1 || React || Bibliothek || 2013 || Meta + Community || regelmäßig || Dominantes Ökosystem, sehr stabil |
| | |- |
| | | 1 || Angular || Framework || 2016 || Google || LTS || Enterprise‑fokussiert, integrierter Stack |
| | |- |
| | | 1 || Vue.js || Framework || 2014 || Core‑Team + Community || regelmäßig || Reif, breite Adoption |
| | |- |
| | | 1 || Next.js || Meta‑Framework (React) || 2016 || Vercel || schnell || Produktionsreif, SSR/ISR/RSC |
|
| |
|
| public class Person
| | |} |
| {
| |
| public required string Name { get; init; }
| |
| public int Alter { get; set; }
| |
| | |
| public void Begruessen() => Console.WriteLine($"Hallo, mein Name ist {Name}.");
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| === Maximales Gerüst ===
| |
| | |
| <syntaxhighlight lang="csharp">
| |
| namespace MeineApp.Models;
| |
| | |
| public class Person
| |
| {
| |
| // Primärkonstruktor (ab C# 12)
| |
| public Person(string name, int alter)
| |
| {
| |
| Name = name;
| |
| Alter = alter;
| |
| }
| |
| | |
| // Auto-Properties mit required und init
| |
| public required string Name { get; init; }
| |
| public int Alter { get; set; }
| |
| | |
| // Event
| |
| public event EventHandler? Begruesst;
| |
| | |
| // Expression-bodied Member
| |
| public string Info => $"{Name} ({Alter} Jahre)";
| |
| | |
| // Methode mit Event-Auslösung
| |
| public void Begruessen()
| |
| {
| |
| Console.WriteLine($"Hallo, mein Name ist {Name}.");
| |
| Begruesst?.Invoke(this, EventArgs.Empty);
| |
| }
| |
| | |
| // Statische Factory-Methode
| |
| public static Person Erstellen(string name) => new(name, 0);
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| === Klassisches Klassen-Formular ===
| |
| | |
| <syntaxhighlight lang="csharp">
| |
| namespace MeineApp.Classic
| |
| {
| |
| public class Person
| |
| {
| |
| private string _name;
| |
| private int _alter;
| |
| | |
| public Person(string name, int alter)
| |
| {
| |
| _name = name;
| |
| _alter = alter;
| |
| }
| |
| | |
| public string Name
| |
| {
| |
| get { return _name; }
| |
| set { _name = value; }
| |
| }
| |
| | |
| public int Alter
| |
| {
| |
| get { return _alter; }
| |
| set { _alter = value; }
| |
| }
| |
| | |
| public void Begruessen()
| |
| {
| |
| Console.WriteLine("Hallo, mein Name ist " + _name + ".");
| |
| }
| |
| }
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| === Praxis: Gemachte Form ===
| |
| | |
| <syntaxhighlight lang="csharp">
| |
| namespace MeineApp.Praxis;
| |
| | |
| public class Person
| |
| {
| |
| public required string Name { get; init; }
| |
| public int Alter { get; set; }
| |
| public string Beruf { get; set; } = "Unbekannt";
| |
| | |
| public void Begruessen()
| |
| {
| |
| Console.WriteLine($"Hallo, ich bin {Name}, {Alter} Jahre alt und arbeite als {Beruf}.");
| |
| }
| |
| | |
| public void GeburtstagFeiern()
| |
| {
| |
| Alter++;
| |
| Console.WriteLine($"Alles Gute zum Geburtstag, {Name}! Du bist jetzt {Alter}.");
| |
| }
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| | |
| | |
| # 20 einfache Praxis-Übungen für moderne C#-Klassen (für Einsteiger)
| |
| | |
| 1. Eine Klasse für einen Hund mit Name und Alter.
| |
| 2. Eine Klasse für ein Auto mit Marke und Baujahr.
| |
| 3. Eine Klasse für ein Buch mit Titel und Autor.
| |
| 4. Eine Klasse für einen Schüler mit Name und Note.
| |
| 5. Eine Klasse für einen Ball mit Farbe und Größe.
| |
| 6. Eine Klasse für eine Lampe mit An/Aus-Status.
| |
| 7. Eine Klasse für ein Rechteck mit Breite und Höhe.
| |
| 8. Eine Klasse für einen Würfel mit Methode zum Würfeln.
| |
| 9. Eine Klasse für eine Einkaufsliste mit Produkten.
| |
| 10. Eine Klasse für einen Timer mit Start/Stop.
| |
| 11. Eine Klasse für einen Musik-Track mit Titel und Dauer.
| |
| 12. Eine Klasse für eine Adresse mit Straße und Stadt.
| |
| 13. Eine Klasse für einen Film mit Titel und Bewertung.
| |
| 14. Eine Klasse für ein Konto mit Kontostand.
| |
| 15. Eine Klasse für eine Nachricht mit Text und Absender.
| |
| 16. Eine Klasse für eine Temperatur mit Umrechnung Celsius/Fahrenheit.
| |
| 17. Eine Klasse für einen Kalender-Eintrag mit Datum und Beschreibung.
| |
| 18. Eine Klasse für eine Aufgabe mit Erledigt-Status.
| |
| 19. Eine Klasse für einen Kontakt mit Name und Telefonnummer.
| |
| 20. Eine Klasse für eine Ampel mit Status (Rot/Gelb/Grün).
| |
Frontend Frameworks – Reifegrade
- Tier-Definition (Kurzfassung)
- Tier 1: Weit verbreitet, stabil, Langzeitpflege, starkes Ökosystem
| Tier |
Framework |
Kategorie |
Erstveröffentlichung |
Governance/Backing |
Release-/LTS-Kadenz |
Kurzbewertung
|
| 1 |
React |
Bibliothek |
2013 |
Meta + Community |
regelmäßig |
Dominantes Ökosystem, sehr stabil
|
| 1 |
Angular |
Framework |
2016 |
Google |
LTS |
Enterprise‑fokussiert, integrierter Stack
|
| 1 |
Vue.js |
Framework |
2014 |
Core‑Team + Community |
regelmäßig |
Reif, breite Adoption
|
| 1 |
Next.js |
Meta‑Framework (React) |
2016 |
Vercel |
schnell |
Produktionsreif, SSR/ISR/RSC
|