{"meta":{"title":"Vereinfachung komplexer Vererbungshierarchien","intro":"Copilot Chat kann Ihnen helfen, Code umzugestalten, um Klassen mit mehreren Vererbungsebenen zu vermeiden.","product":"GitHub Copilot","breadcrumbs":[{"href":"/de/copilot","title":"GitHub Copilot"},{"href":"/de/copilot/tutorials","title":"Anleitungen"},{"href":"/de/copilot/tutorials/copilot-cookbook","title":"GitHub Copilot Kochbuch"},{"href":"/de/copilot/tutorials/copilot-cookbook/refactor-code","title":"Umgestalten von Code"},{"href":"/de/copilot/tutorials/copilot-cookbook/refactor-code/simplify-inheritance-hierarchies","title":"Vereinfachen von Vererbungshierarchien"}],"documentType":"article"},"body":"# Vereinfachung komplexer Vererbungshierarchien\n\nCopilot Chat kann Ihnen helfen, Code umzugestalten, um Klassen mit mehreren Vererbungsebenen zu vermeiden.\n\nTiefe Vererbungshierarchien oder die unsachgemäße Verwendung von Vererbung können zu schwer wartbarem Code führen, da es schwierig ist, die Beziehungen zwischen den Klassen zu verfolgen oder sie zu erweitern, ohne dass es zu Fehlern kommt.\n\nCopilot Chat kann das Umgestalten von vererbungsbasierten Designs in flexiblere kompositionsbasierte Designs vorschlagen (die Komposition gegenüber der Vererbung bevorzugen). Es kann auch empfehlen, Muster wie Strategy oder Decorator anzuwenden, um das System erweiterbar zu machen, ohne die Vererbungsstruktur komplexer zu machen.\n\n## Beispielszenario\n\nDer folgende C# Code hat eine tiefe Vererbungshierarchie, in der jede Klasse auf der vorherigen aufbaut. Das Ergebnis ist eine lange Vererbungskette, die es schwierig macht, zu wissen, welche Eigenschaften die einzelnen Klassen haben.\n\nEine mehrstufige Vererbungshierarchie wie diese kann schwer zu verstehen, zu ändern und zu erweitern sein.\n\n```csharp id=employee-class\npublic class Employee\n{\n    public string Name { get; set; }\n    public int EmployeeID { get; set; }\n}\n\npublic class Manager : Employee\n{\n    public int NumberOfTeams { get; set; }\n}\n\npublic class SeniorManager : Manager\n{\n    public string Region { get; set; }\n}\n\npublic class Director : SeniorManager\n{\n    public int NumberOfDepartments { get; set; }\n}\n\npublic class VicePresident : Director\n{\n    public string Division { get; set; }\n}\n\npublic class President : VicePresident\n{\n    public string Company { get; set; }\n}\n```\n\n## Beispielaufforderung\n\nIn dieser Situation könntest du dich entscheiden, eine übergeordnete `Employee` Klasse zu verwenden, deren Eigenschaften andere Klassen erben sollen, aber jede andere Vererbung zu vermeiden, indem du alle anderen Eigenschaften für jede Klasse separat definierst.\n\n```copilot copy prompt ref=employee-class\nRefactor this code so that classes only inherit the properties of the Employee class. All of the other properties that each class currently inherits should instead be declared independently in each class definition.\n```\n\n## Beispielantwort\n\n> \\[!NOTE] Die folgende Antwort ist ein Beispiel. Da die Copilot Chat-Antworten nicht deterministisch sind, erhältst du möglicherweise eine andere Antwort als die hier beschriebene.\n\nCopilot schlägt den folgenden Code vor:\n\n```csharp\npublic class Employee\n{\n    public string Name { get; set; }\n    public int EmployeeID { get; set; }\n}\n\npublic class Manager : Employee\n{\n    public int NumberOfTeams { get; set; }\n}\n\npublic class SeniorManager : Employee\n{\n    public int NumberOfTeams { get; set; }\n    public string Region { get; set; }\n}\n\npublic class Director : Employee\n{\n    public int NumberOfTeams { get; set; }\n    public string Region { get; set; }\n    public int NumberOfDepartments { get; set; }\n}\n\npublic class VicePresident : Employee\n{\n    public int NumberOfTeams { get; set; }\n    public string Region { get; set; }\n    public int NumberOfDepartments { get; set; }\n    public string Division { get; set; }\n}\n\npublic class President : Employee\n{\n    public int NumberOfTeams { get; set; }\n    public string Region { get; set; }\n    public int NumberOfDepartments { get; set; }\n    public string Division { get; set; }\n    public string Company { get; set; }\n}\n```\n\n## Weiterführende Lektüre\n\n* [Prompt-Engineering für GitHub Copilot Chat](/de/copilot/concepts/prompting/prompt-engineering)\n* [Bewährte Methoden für die Verwendung von GitHub Copilot](/de/copilot/get-started/best-practices)"}