Witzigerweise haben bei UML (um genau zu sein bei Use-Case-Diagrammen) Include und Extend tatsächlich eine starke Ähnlichkeit.
In Java dagegen hat das 0 miteinander zu tun.
Quote:
Beide werden doch genutzt damit die Klasse die methoden und attribute einer anderen klasse kennt
Nein, import benutzt du, damit die importierten Namen in deiner Datei sichtbar werden.
Du kannst z.B. immer java.util.List ausschreiben oder du importierst einmal am Anfang java.util.List (wahlweise auch java.util.*) und kannst dann List ohne voll qualifizierten Namen verwenden.
Wenn eine Klasse A von Klasse B erbt, dann kann man sagen, dass A eine Unterart von B ist. Damit erhält sie dieselben Eigenschaften und muss dieselben Erwartungen erfüllen, kann aber zusätzlich noch eigenes, spezielleres Verhalten anbieten.
Sind völlig unterschiedliche Sachverhalte. Das eine ist nur eine Abkürzung für Klassennamen, das andere eine Beziehung zwischen Klassen.
Quote:
Ob man jetzt eine Assoziation oder Vererbung nimmt ist in der Tat manchmal schwierig abzuschätzen.
Schwierig ist das eigentlich nicht. Im Zweifel zieht man die Assoziation vor.
Sehr schlechter Programmierstil. Was tust du, wenn du mehrere Handler hast die das KeyDown Event abonnieren? Und noch wichtiger: Wie kannst du wissen, dass keine internen Handler des WinForm Framework ebenfalls das Event abonniert haben?
Und das bisschen Speicher und Performance was da verloren geht, ist nun wirklich nicht maßgebend. Zumindest kommt es da auf die 1 bzw. 4 Byte(s) nun auch nicht wirklich mehr an.
Ich kenne mich nicht so gut mit .Net events aus, und bin einfach davon ausgegangen dass es sich dabei um funktionspointer handelt, aber das Beispiel kann man ja auch einfach abändern
Und 1-4 Byte würde ich nicht sagen, 1 Boolen = 1 oder 4 Byte Rücksprungaddresse = Zeiger = 4-8 Byte, Parameter = 2*Zeiger = 2*(4 bzw 8) Byte, die EventArgs Klasse ist auch noch relativ groß.
Klar macht es bei modernen PC's mit 8+ GB Ram nicht viel aus, aber wenn man sparen kann (und dazu noch einen saubereren Programmcode erhält) würde ich das schon tun
Ich kenne mich nicht so gut mit .Net events aus, und bin einfach davon ausgegangen dass es sich dabei um funktionspointer handelt, aber das Beispiel kann man ja auch einfach abändern
Wenn du einen Funktionspointer nullst, kann den aber auch niemand mehr aufrufen sofern du mehrere Instanzen hast die ihn speichern.
Quote:
Originally Posted by warfley
Und 1-4 Byte würde ich nicht sagen, 1 Boolen = 1 oder 4 Byte Rücksprungaddresse = Zeiger = 4-8 Byte, Parameter = 2*Zeiger = 2*(4 bzw 8) Byte, die EventArgs Klasse ist auch noch relativ groß.
Nur um dir das visuell nochmal vor Augen zu führen.
Quote:
Originally Posted by warfley
Klar macht es bei modernen PC's mit 8+ GB Ram nicht viel aus, aber wenn man sparen kann (und dazu noch einen saubereren Programmcode erhält) würde ich das schon tun
Wenn du so pingelig bist, solltest du es mit .NET gleich lassen und mit Assembler programmieren.
.NET hat seine Stärken nicht in der Performance und alleine die CLR ist bei jedem Programm mit mindestens 20 MB dabei.
Wenn du so pingelig bist, solltest du es mit .NET gleich lassen und mit Assembler programmieren.
.NET hat seine Stärken nicht in der Performance und alleine die CLR ist bei jedem Programm mit mindestens 20 MB dabei.
Das hat bei mir gar nicht mal was mit der Performance oder dem Speicher direkt zu tun, ich versuche immer mein Code so reduziert und sauber wie möglich zu halten, unnötige variablen und Calls wegzulassen. Es ist wie Kaugummipapiere, machen auf einem Tisch nicht viel aus, aber wenn sie weg sind ist es doch um Welten schöner (an sich recht lustig, da meine Wohnung aktuell was Papiere und Kleinmüll angeht überschwemmt ist, aber bei Programmcode habe ich es dann doch lieber sauber).
Ich habe auch gelernt je sauberer man arbeitet desto weniger Fehler passieren.
PS: Ich würde wenn ich in Assembler Programmieren würde außerdem nie solch schlanken Code hinbekommen wie der sauberer C Code mit der höchsten Optimierungsstufe des GCC.
CO 2 Chit-Chat 04/04/2013 - Conquer Online 2 - 3 Replies Hello,
You are allowed to talk in this thread about all things belonging to CO2.
It does not matter whether you want to ask something or you just want to talk about CO2.
Posts like "lol" are forbidden!