Zum Inhalt springen

Partielle Klasse

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 23. Juni 2025 um 08:37 Uhr durch imported>Siegbert v2 (Programmiersprachen: BKS aufgelöst).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Eine Partielle Klasse ist ein Begriff aus der objektorientierten Programmierung und bezeichnet eine Vorgangsweise, Klassen in mehrere Quellcodedateien aufzuteilen oder an verschiedenen Orten innerhalb einer Datei zu deklarieren.<ref></ref>

Gründe

  • Erhöhung der Lesbarkeit bei sehr großen Klassen.<ref>Understanding C# Partial Classes: A Comprehensive Guide. In: webdevtutor.net. 7. August 2024, abgerufen am 23. Juni 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Unter Umständen kann sich eine zu starke Aufteilung des Codes negativ auf das Codeverständnis auswirken, da mehrere Dateien parallel betrachtet werden müssen, um das Gesamtbild zu erhalten.<ref name="Boltsis2025">Evangelos Boltsis: Partial Classes and Methods in C#: When and Why. In: codingbolt.net. 22. Februar 2025, abgerufen am 23. Juni 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
  • Verschiedene Entwickler können an derselben Klasse arbeiten, ohne sich gegenseitig zu behindern.<ref name="MS-Learn-CS">Partial Classes and Members (C# Programming Guide). In: learn.microsoft.com. Microsoft, 15. März 2025, abgerufen am 23. Juni 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
  • Separation von Schnittstelle und Klassendefinition oder auch von public und private Bereichen.
  • Separation of Concerns, ähnlich wie in der aspektorientierten Programmierung.<ref name="Smith2023"></ref>
  • Trennung von automatisch erzeugtem Code eines Codegenerators und manuell vom Menschen geschriebenem Code.<ref name="MS-Learn-CS" /> Der generierte Code kann so einfacher jederzeit aktualisiert werden, ohne dass sich beide Stellen gegenseitig stören.

Programmiersprachen

Das Konzept der partiellen Klassen wird vor allem von Programmiersprachen der Firma Microsoft für die .NET-Plattform, das .Net-Framework und die Windows Runtime (WinRT) unterstützt. Dazu zählen C#, Visual Basic .NET, C++/CLI und C++/CX.<ref name="MS-Learn-CS" /><ref name="MS-Learn-VB">Partial (Visual Basic). In: learn.microsoft.com. Microsoft, 15. September 2021, abgerufen am 23. Juni 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref name="MS-Learn-CPP-CLI">partial (C++/CLI and C++/CX). In: learn.microsoft.com. Microsoft, 3. August 2021, abgerufen am 23. Juni 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref name="MS-Learn-CPP-CX">Partial classes (C++/CX). In: learn.microsoft.com. Microsoft, 1. Dezember 2022, abgerufen am 23. Juni 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> In diesen Programmiersprachen müssen betroffene Klassen explizit mit dem Schlüsselwort partial gekennzeichnet werden. Auch TypeScript unterstützt partielle Klassen. Die Kennzeichnung erfolgt jedoch implizit, indem Teilklassen einfach denselben Namen tragen müssen.<ref>Understanding TypeScript Partial Classes. In: webdevtutor.net. 14. Dezember 2024, abgerufen am 23. Juni 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Das Verfahren wird hier als Declaration Merging bezeichnet.<ref>Declaration Merging. In: typescriptlang.org. 19. Juni 2025, abgerufen am 23. Juni 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>

Beispiel: Separation of Concerns

Partielle Klassen unterstützen auch Separation of Concerns. Das folgende C#-Beispiel zeigt eine Klasse Bear, die verschiedene Aspekte besitzt. Diese sind in mehreren Dateien implementiert.

Bear_Hunting.cs

<syntaxhighlight lang="csharp"> public partial class Bear {

  private IEdible Hunt()
  {
      // Gibt Nahrung zurück...
  }

} </syntaxhighlight>

Bear_Eating.cs

<syntaxhighlight lang="csharp"> public partial class Bear {

  private int Eat(IEdible food)
  {
      return food.Nutrition.Value;
  }

} </syntaxhighlight>

Bear_Hunger.cs

<syntaxhighlight lang="csharp"> public partial class Bear {

  private int hunger;
  public void MonitorHunger()
  {
       // An dieser Stelle beziehen wir uns auf Methoden, die in den anderen partiellen Klassen definiert sind
       if(hunger > 50)
           hunger -= this.Eat(this.Hunt());
  }

} </syntaxhighlight>

Durch Anwendung von partiellen Klassen ist es sehr leicht möglich, Programmeigenschaften durch das Hinzufügen von Quellcodedateien zu erweitern, indem zusätzliche Dateien kompiliert werden. Es kann sich dabei beispielsweise um Features handeln, die einem Kunden gegen einen Aufpreis angeboten werden.

Siehe auch

Einzelnachweise

<references />