Zum Inhalt springen
  • 0

C# Zwischenklassen


Gast Kostet_Mich_Zu_Viel_Zeit
 Teilen

Frage

Gast Kostet_Mich_Zu_Viel_Zeit

Guten Tag zusammen,
danke schon mal für dieses Forum! Stehe nun wieder vor einem Problem. Möchte gerne mit ein Paar Kollegen ein Projekt starten, da wurde mir näher getragen eine Zwischenklasse ein zu führen, welches als Interface dient.
Hierzu wurden mir einige verschiedene  Gründe genannt,
z.B. Stabilität, bessere kontrolle für Garbage Collector, saubere Struktur usw.

Da würde mich interessieren, ob ich nicht die Interfaces einfach weglassen könnte. Und quasi einfach direkt im Menü die Konstruktoren auf zu rufen um damit ggf. die Methoden aus zu führen?
Hab für das verständnis einfach mal eine UML hinzu gefügt. Bin gerade erst angefangen mit meiner Ausbildung, deswegen sorry für fachliche Fehlinterpretationen!

grafik.thumb.png.16fd9461758704afeccc672454abc6f4.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

14 Antworten auf diese Frage

Empfohlene Beiträge

  • 0
vor 30 Minuten schrieb M@rku$:

da wurde mir näher getragen eine Zwischenklasse ein zu führen, welches als Interface dient.

Den Begriff "Zwischenklasse" gibt es nicht. Es gibt Klassen und es gibt Interfaces und es gibt abstrakte Klassen.

vor 30 Minuten schrieb M@rku$:

Da würde mich interessieren, ob ich nicht die Interfaces einfach weglassen könnte.

Ich verstehe nicht, was du machen möchtest. Ein Interface ist dazu da, um zu beschreiben, was eine Klasse "hat" (Attribute) bzw. kann (Methoden). Andere Klassen können das Interface implementieren und können bzw. haben dann das, was das Interface beschreibt.

Wenn du verschiedene Klassen hast, die das gleiche können bzw. haben sollen und du an der aufrufenden Stelle nicht weißt, was für eine Klasse das ist, aber weißt, welches Interface die Klasse implementiert, kannst du das Interface nicht weglassen.

vor 35 Minuten schrieb M@rku$:

Hab für das verständnis einfach mal eine UML hinzu gefügt.

Ich sehe da kein UML. Ich sehe eine Mischung aus Klassen- und Ablaufdiagramm. Wenn du Klassen, Interfaces etc. beschreiben möchtest, dann solltest du am besten das Klassendiagramm verwenden. Aus dem Mischmasch kann man nichts (sinnvolles) herauslesen. Stell das Klassendiagramm hier nochmal rein. Dann kann besser beurteilt werden, ob dein Vorhaben Sinn macht.

vor 36 Minuten schrieb M@rku$:

Bin gerade erst angefangen mit meiner Ausbildung, deswegen sorry für fachliche Fehlinterpretationen!

Vielleicht ist es noch ein wenig zu früh, dass du dich mit der Software-Architektur auseinander setzt. Die Grundlagen (OOP usw.) müssen dafür sitzen. Du musst wissen, was eine Klasse ist, warum man sie verwendet, wofür Interfaces verwendet werden können, verschiedene Entwurfsmuster, Pattern, etc. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
Gast Kostet_Mich_Zu_Viel_Zeit
vor 2 Stunden schrieb pr0gg3r:

Den Begriff "Zwischenklasse" gibt es nicht. Es gibt Klassen und es gibt Interfaces und es gibt abstrakte Klassen.

Ich verstehe nicht, was du machen möchtest. Ein Interface ist dazu da, um zu beschreiben, was eine Klasse "hat" (Attribute) bzw. kann (Methoden). Andere Klassen können das Interface implementieren und können bzw. haben dann das, was das Interface beschreibt.

Wenn du verschiedene Klassen hast, die das gleiche können bzw. haben sollen und du an der aufrufenden Stelle nicht weißt, was für eine Klasse das ist, aber weißt, welches Interface die Klasse implementiert, kannst du das Interface nicht weglassen.

Ich sehe da kein UML. Ich sehe eine Mischung aus Klassen- und Ablaufdiagramm. Wenn du Klassen, Interfaces etc. beschreiben möchtest, dann solltest du am besten das Klassendiagramm verwenden. Aus dem Mischmasch kann man nichts (sinnvolles) herauslesen. Stell das Klassendiagramm hier nochmal rein. Dann kann besser beurteilt werden, ob dein Vorhaben Sinn macht.

Vielleicht ist es noch ein wenig zu früh, dass du dich mit der Software-Architektur auseinander setzt. Die Grundlagen (OOP usw.) müssen dafür sitzen. Du musst wissen, was eine Klasse ist, warum man sie verwendet, wofür Interfaces verwendet werden können, verschiedene Entwurfsmuster, Pattern, etc. 

Danke und toll solche Aussagen,
Dachte eigentlich das man hier von Profis lernt , welche den Nachwuchs fördern wollen. Da ich kein Baby mehr bin sehe ich dein Beitrag als echt super Feedback mich weiter zu entwickeln, thx!

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
Gast Kostet_Mich_Zu_Viel_Zeit
vor 2 Stunden schrieb pr0gg3r:

Den Begriff "Zwischenklasse" gibt es nicht. Es gibt Klassen und es gibt Interfaces und es gibt abstrakte Klassen.

Ich verstehe nicht, was du machen möchtest. Ein Interface ist dazu da, um zu beschreiben, was eine Klasse "hat" (Attribute) bzw. kann (Methoden). Andere Klassen können das Interface implementieren und können bzw. haben dann das, was das Interface beschreibt.

Wenn du verschiedene Klassen hast, die das gleiche können bzw. haben sollen und du an der aufrufenden Stelle nicht weißt, was für eine Klasse das ist, aber weißt, welches Interface die Klasse implementiert, kannst du das Interface nicht weglassen.

Ich sehe da kein UML. Ich sehe eine Mischung aus Klassen- und Ablaufdiagramm. Wenn du Klassen, Interfaces etc. beschreiben möchtest, dann solltest du am besten das Klassendiagramm verwenden. Aus dem Mischmasch kann man nichts (sinnvolles) herauslesen. Stell das Klassendiagramm hier nochmal rein. Dann kann besser beurteilt werden, ob dein Vorhaben Sinn macht.

Vielleicht ist es noch ein wenig zu früh, dass du dich mit der Software-Architektur auseinander setzt. Die Grundlagen (OOP usw.) müssen dafür sitzen. Du musst wissen, was eine Klasse ist, warum man sie verwendet, wofür Interfaces verwendet werden können, verschiedene Entwurfsmuster, Pattern, etc. 

Ich bin sehr sicher dass ich weiß was Klassen sind, Danke. Aber echt solche Feedbacks verstehe ich hier nicht, gehört das hier zu dem Umgang mit Nachwuchs oder liegt es einfach dran das euer Niveau so hoch ist, sich nicht mit Lernenden zu beschäftigen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Hallo,

vor 12 Minuten schrieb M@rku$:

Aber echt solche Feedbacks verstehe ich hier nicht,

wenn du inhaltliche Fragen hast kannst du gerne weiter nachfragen.

 

vor 14 Minuten schrieb M@rku$:

gehört das hier zu dem Umgang mit Nachwuchs

Im Gegensatz zu anderen IT-Foren ist der Umgang hier grundsätzlich deutlich entspannt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 59 Minuten schrieb M@rku$:

Danke und toll solche Aussagen,
Dachte eigentlich das man hier von Profis lernt , welche den Nachwuchs fördern wollen. Da ich kein Baby mehr bin sehe ich dein Beitrag als echt super Feedback mich weiter zu entwickeln, thx!

[...]

Aber echt solche Feedbacks verstehe ich hier nicht, gehört das hier zu dem Umgang mit Nachwuchs oder liegt es einfach dran das euer Niveau so hoch ist, sich nicht mit Lernenden zu beschäftigen?

Ich habe dich in keiner weise persönlich angegriffen. Du hast selbst geschrieben, dass du Anfänger bist:

vor 3 Stunden schrieb M@rku$:

Bin gerade erst angefangen mit meiner Ausbildung, deswegen sorry für fachliche Fehlinterpretationen!

Software-Architektur ist etwas für Entwickler mit langjähriger Berufserfahrung. Das heißt nicht, dass du "blöd" bist oder ich dich nicht leiden kann oder sonst was. Wenn du das so auffasst... Na gut, kann ich nichts machen. Du hast hier aber auch die Chance, von Mitgliedern mit zig Jahren Berufserfahrung und fachlicher Qualifikation zu lernen.

Wenn ich schreibe: "mach ein UML-Klassendiagramm", dann hat das einen fachlichen Hintergrund. Hierbei sieht man, welche Klassen du hast, ob es Interfaces sind und wie sie zusammenhängen. UML ist ein Standard, den viele hier lesen und eindeutig(!) interpretieren können. Und dann(!) können wir sagen, was man verbessern könnte. Aus deinem Diagramm ist das so nicht möglich.

Wenn du dich fachlich weiter entwickeln möchtest, dann kannst du hier von uns lernen. Du möchtest das ja auch, sonst würdest du hier keine Fragen stellen. Aber dann musst du auch damit klar kommen, dass jemand sagt: "was du gemacht hast bringt erst mal nichts, ein besserer Ansatz ist jedoch dieser und jener". Wenn du das nicht kannst, solltest du deinen Umgang mit Kritik überdenken.

/Edit:

Es kann durchaus sein, dass ihr in eurem Unternehmen bzw. eurer Domäne irgendetwas als Zwischenklasse bezeichnet. Das ist jedoch kein gängiger IT-Begriff. Wenn man danach googelt, findet man irgendwas mit Hundezüchtung. Extrem wichtig ist eben auch das Wording, damit alle vom Richtigen reden. Vielleicht macht ihr ja Software für Hundezüchter? Ich weiß es nicht. Aber um sich auf fachlicher Ebene austauschen zu können, sollte man gängige Begriffe verwenden. Und damit möchte ich dich nicht angreifen, sondern einen Ratschlag geben (wer Humor findet kann es gerne als persönlichen Angriff interpretieren).

Bearbeitet von pr0gg3r
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 1 Stunde schrieb M@rku$:

Aber echt solche Feedbacks verstehe ich hier nicht, gehört das hier zu dem Umgang mit Nachwuchs oder liegt es einfach dran das euer Niveau so hoch ist, sich nicht mit Lernenden zu beschäftigen?

Wir beschäftigen uns doch mit dir. Das Problem ist lediglich, dass du nicht bereit bist die Kritik anzunehmen. 😃

---

Ansonsten ist dem von @pr0gg3r geschriebenen Textchen ist eigentlich wenig hinzuzufügen.

Insbesondere die Feststellung, dass die von dir angehängte Grafik kein UML darstellt, sondern es sich um eine Mischung aus PAP und  Klassendiagramm handelt, ist richtig und wichtig. Nicht, dass du am Ende glaubst du könntest UML bereits und müsstest dich nicht weiter damit beschäftigen. Auch an dem Umstand, dass er dir leicht auf die Finger klopft und dir vorschlägt ein richtiges Klassendiagramm nach UML zu erstellen, ist zu unterstützen. Dadurch wird dein Vorhaben nämlich lesbarer, da die Vererbung oder auch Implementierung von Interfaces abweichend dargestellt wird, so dass es - bei richtiger Ausführung - nicht zu Missverständnissen kommt. Jetzt hingegen müsste ich fast noch vermuten, dass, ich weiß auch nicht, das Interface von Menü2 erbt, obwohl Menü2 eigentlich das Interface implementieren soll. Uff.

Auch von UML abgesehen steht da nichts, was nicht irgendwie plausibel wäre. Bevor ihr mit Klassen und Interfaces hantiert, sollten die OOP-Grundlagen sitzen. Der Umstand, dass ihr ein Projekt aufziehen wollt, aber einen PAP noch mit UML verwechselt und vermutlich die Vor-/Nachteile von Interfaces gar nicht wirklich abschätzen könnt, zeigt eigentlich eher, dass ihr noch mal einen Schritt zurück machen solltet. Nicht böse gemeint, aber.. isso. 😉

---

Wenn du aber unbedingt etwas zu deiner ursprünglichen Anfrage hören möchtest:

Du möchtest eigentlich keinen Aufruf der Interfaces und du möchtest in dem Beispiel keine drei Interfaces, sondern du möchtest bestimmt ein Interface IMenu, das alle Menü-Klassen implementieren (class Menu2 implements IMenu, class Menu3 implements IMenu ...), einschließlich der übergeordneten Klasse Menü aus der program.cs. Es sollen i.d.R. schließlich alle Menüs über z.B. dieselbe Grundfunktionalität verfügen und das Interface wäre hier der erste Schritt, um am Ende wenigstens das sicherzustellen.

Wenn alle Menüs völlig unterschiedlich sind - was aber eher selten der Fall sein dürfte - denn niemand erfindet das Rad beständig neu - lässt sich über den Sinn oder Unsinn von Interfaces sicherlich streiten. Aber selbst dann helfen sie bei der Fehlersuche immer noch weiter, weil dich eine gute IDE daran erinnern wird, dass du ggf. etwas vergessen hast.

Persönlich arbeite mit Interfaces lieber in größeren Projekten.
Ein 2-Klassen-Programm hält oft nicht so viel Code, dass sich der Mehraufwand irgendwie rechnet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 6 Stunden schrieb M@rku$:

eine Zwischenklasse ein zu führen, welches als Interface dient.
Hierzu wurden mir einige verschiedene  Gründe genannt,
z.B. Stabilität, bessere kontrolle für Garbage Collector, saubere Struktur usw.

 

vor 28 Minuten schrieb _n4p_:

Wenn hier mit Interface ein UI gemeint ist statt einem Interface im OOP? (...) der Eröffnungspost ergäbe dann irgendwie mehr Sinn?

Findest du das wirklich?

Wo erfüllt denn eine UI denn solcherlei Funktionen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0

Ich wüsste auch nicht, was der Gargabe Collector damit überhaupt zu tun hat. Das einzige, was ich mir als "Zwischenklasse" vorstellen kann, wäre eine abstrakte Klasse aber sonst kann ich unter dem Begriff auch nichts vorstellen.

Was ist jetzt eigentlich die konkrete Frage bzw. das konkrete Problem? Gefühlt wird hier nicht verstanden, was Interfaces sind. Interfaces sind einfach nur Schablonen für Klassen. Sie beschreiben, welche Methoden eine Klasse bereitstellt. Das Hilft Dinge zu abstrahieren. Das prominenteste Beispiel ist IEnumerable<T>. Es ist ein Interface für eine Auflistung. Ganz gleich, ob es ein Array, HashSet, List, Stack, Queue,... ist. Sobald eine Klasse IEnumerable<T> implementiert ist, kann man mittels foreach über die Elemente iterieren und kann mittels LINQ Abfragen erstellen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
Gast Kostet_Mich_Zu_Viel_Zeit
vor 5 Stunden schrieb pr0gg3r:

Ich habe dich in keiner weise persönlich angegriffen. Du hast selbst geschrieben, dass du Anfänger bist:

Software-Architektur ist etwas für Entwickler mit langjähriger Berufserfahrung. Das heißt nicht, dass du "blöd" bist oder ich dich nicht leiden kann oder sonst was. Wenn du das so auffasst... Na gut, kann ich nichts machen. Du hast hier aber auch die Chance, von Mitgliedern mit zig Jahren Berufserfahrung und fachlicher Qualifikation zu lernen.

Wenn ich schreibe: "mach ein UML-Klassendiagramm", dann hat das einen fachlichen Hintergrund. Hierbei sieht man, welche Klassen du hast, ob es Interfaces sind und wie sie zusammenhängen. UML ist ein Standard, den viele hier lesen und eindeutig(!) interpretieren können. Und dann(!) können wir sagen, was man verbessern könnte. Aus deinem Diagramm ist das so nicht möglich.

Wenn du dich fachlich weiter entwickeln möchtest, dann kannst du hier von uns lernen. Du möchtest das ja auch, sonst würdest du hier keine Fragen stellen. Aber dann musst du auch damit klar kommen, dass jemand sagt: "was du gemacht hast bringt erst mal nichts, ein besserer Ansatz ist jedoch dieser und jener". Wenn du das nicht kannst, solltest du deinen Umgang mit Kritik überdenken.

/Edit:

Es kann durchaus sein, dass ihr in eurem Unternehmen bzw. eurer Domäne irgendetwas als Zwischenklasse bezeichnet. Das ist jedoch kein gängiger IT-Begriff. Wenn man danach googelt, findet man irgendwas mit Hundezüchtung. Extrem wichtig ist eben auch das Wording, damit alle vom Richtigen reden. Vielleicht macht ihr ja Software für Hundezüchter? Ich weiß es nicht. Aber um sich auf fachlicher Ebene austauschen zu können, sollte man gängige Begriffe verwenden. Und damit möchte ich dich nicht angreifen, sondern einen Ratschlag geben (wer Humor findet kann es gerne als persönlichen Angriff interpretieren).

Keine Sorge komm schon damit klar! Nur hättest vielleicht erst zu ende gelesen, wäre wahrscheinlich dein Text von vornerein auch anders ausgefallen!

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
Gast Kostet_Mich_Zu_Viel_Zeit

Ich fühle mich hier schon sehr wohl und lerne gerne von Profis und stelle deswegen hier die Fragen. Die Information wurden mir näher getragen und deswegen bin ich stutzig geworden.

Aber erst alle Fragen so zu beantworten, als ob ich gar nicht würdig bin zu Programmieren oder über Klassen reden dürfte, verstehe ich nicht als motivierend, wenn man neu ist. *aber muss ich mich halt dran gewöhnen*

Mir schon aufgefallen das einige Profis eine seltsame Art haben mit zwischen den Zeilen um zu gehen. Werde mich trotzdem nicht in einem Loch verziehen und bin froh hier ein tolles Netzwerk zu haben von dem man schöpfen kann. Jedes Mal bekomme ich hier mega Informationen und das hilft mir mich weiter zu entwickeln.

Trotzdem Danke für Feedback! Suche hier immer noch verzweifelt den Löschbutton, den es ja leider nicht gibt. *haha*

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 21 Minuten schrieb M@rku$:

Aber erst alle Fragen so zu beantworten, als ob ich gar nicht würdig bin zu Programmieren oder über Klassen reden dürfte,

Es wurde nie gesagt dass du unwürdig seist.

Es wurde allerdings drauf hingewiesen, dass du dich undeutlich ausdrückst. Das Programmieren lebt von EXAKTEN Bezeichnungen. Da ist es nicht hilfreich, wenn du andere Ausdrücke und Begriffe verwendest.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 0
vor 30 Minuten schrieb M@rku$:

Aber erst alle Fragen so zu beantworten, als ob ich gar nicht würdig bin zu Programmieren oder über Klassen reden dürfte, verstehe ich nicht als motivierend, wenn man neu ist

 

vor 30 Minuten schrieb M@rku$:

Mir schon aufgefallen das einige Profis eine seltsame Art haben mit zwischen den Zeilen um zu gehen.

Ich glaube, du versuchst bei @pr0gg3r mehr in den Text hinein zu interpretieren, als er geschrieben hat.

Er hat erst einmal versucht, zu verstehen, was du genau möchtest und die einzelnen Begriffe erklärt. Dein Post zeigt nunmal, wie du selber schreibst, dass du nich am Anfang bist. Gerade das Erstellen von Modellen ist in der Softwareentwicklung nicht ohne. Er hat auch nicht gesagt, dass du nicht weißt, was eine Klasse an sich ist, sondern, dass es noch am Verständnis der Zusammenhänge mangelt. All das ist konstruktiv formuliert und greift dich (für mein Verständnis) keineswegs persönlich an.

Zwischenklassen gibt es nunmal nicht. Würde mich echt interessieren, was deine Kollegen damit meinen und woher sie dieses Wissen haben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast
Dieses Thema wurde nun für weitere Antworten gesperrt.
 Teilen

Fachinformatiker.de, 2021 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung