Ich verstehe nicht, was Vererbung und include/import miteinander zu tun haben könnten. :(
Vererbung:Quote:
Ich hab nie richtig verstanden was der unterschied zwischen einer vererbung und einem include/import ist :(
public class Lebewesen{..}
public class Hund extends Lebewesen {..}
import meineTierSammlung.Hund;
public class Zoo{
public void erzeugeNeuenHund(){
Hund hund = new Hund();
...
}
}
Nein, import benutzt du, damit die importierten Namen in deiner Datei sichtbar werden.Quote:
Beide werden doch genutzt damit die Klasse die methoden und attribute einer anderen klasse kennt
Schwierig ist das eigentlich nicht. Im Zweifel zieht man die Assoziation vor.Quote:
Ob man jetzt eine Assoziation oder Vererbung nimmt ist in der Tat manchmal schwierig abzuschätzen.
Ist schon klar.Quote:
In Java dagegen hat das 0 miteinander zu tun.
Würde ich auch vorschlagen, dadurch erreicht man eine System loser Kopplung.Quote:
Schwierig ist das eigentlich nicht. Im Zweifel zieht man die Assoziation vor.
In den Diagrammen gibt es aber auch eine inherit-Beziehung zwischen Anwendungsfällen, die dann wieder nichts mit include oder extends zu tun hat.Quote:
Witzigerweise haben bei UML (um genau zu sein bei Use-Case-Diagrammen) Include und Extend tatsächlich eine starke Ähnlichkeit.
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 :DQuote:
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.
Wenn du einen Funktionspointer nullst, kann den aber auch niemand mehr aufrufen sofern du mehrere Instanzen hast die ihn speichern.Quote:
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 :D
Quote:
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ß.
Wenn du so pingelig bist, solltest du es mit .NET gleich lassen und mit Assembler programmieren.Quote:
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
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).Quote:
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.