Coders Chit-Chat

07/14/2015 19:26 algernong#31
Ich verstehe nicht, was Vererbung und include/import miteinander zu tun haben könnten. :(
07/14/2015 19:28 .StarSplash#32
Quote:
Originally Posted by Moneypulation View Post
Ich hab nie richtig verstanden was der unterschied zwischen einer vererbung und einem include/import ist :(
Wo liegen denn in deinen Augen die Überschneidungen? Das sind nun wirklich völlig verschiedene Sachen.
07/14/2015 22:38 ლʕಠᴥಠʔლ#33
Quote:
Originally Posted by Moneypulation View Post
Ich hab nie richtig verstanden was der unterschied zwischen einer vererbung und einem include/import ist :(
Vererbung:
Code:
public class Lebewesen{..}

public class Hund extends Lebewesen {..}


---

Import:
Code:
import  meineTierSammlung.Hund;

public class Zoo{

   public void erzeugeNeuenHund(){

      Hund hund = new Hund();
      ...
   }
}
07/15/2015 05:36 Moneypulation#34
Quote:
Originally Posted by .StarSplash View Post
Wo liegen denn in deinen Augen die Überschneidungen? Das sind nun wirklich völlig verschiedene Sachen.
Beide werden doch genutzt damit die Klasse die methoden und attribute einer anderen klasse kennt
07/15/2015 08:19 ლʕಠᴥಠʔლ#35
Ob man jetzt eine Assoziation oder Vererbung nimmt ist in der Tat manchmal schwierig abzuschätzen.

Kennst du schon abstrakte Klassen (und Interfaces)?
07/15/2015 08:59 Moneypulation#36
Quote:
Originally Posted by ლʕಠᴥಠʔლ View Post
Ob man jetzt eine Assoziation oder Vererbung nimmt ist in der Tat manchmal schwierig abzuschätzen.

Kennst du schon abstrakte Klassen (und Interfaces)?
Ne kenn ich noch nicht
07/15/2015 10:05 MrSm!th#37
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.
07/15/2015 10:46 ლʕಠᴥಠʔლ#38
Quote:
Originally Posted by MrSm!th View Post
In Java dagegen hat das 0 miteinander zu tun.
Ist schon klar.

Quote:
Originally Posted by MrSm!th View Post
Schwierig ist das eigentlich nicht. Im Zweifel zieht man die Assoziation vor.
Würde ich auch vorschlagen, dadurch erreicht man eine System loser Kopplung.
Das sehen andere natürlich anders.
07/15/2015 11:48 algernong#39
Quote:
Originally Posted by MrSm!th View Post
Witzigerweise haben bei UML (um genau zu sein bei Use-Case-Diagrammen) Include und Extend tatsächlich eine starke Ähnlichkeit.
In den Diagrammen gibt es aber auch eine inherit-Beziehung zwischen Anwendungsfällen, die dann wieder nichts mit include oder extends zu tun hat.
07/15/2015 17:55 Mostey#40
Quote:
Originally Posted by ლʕಠᴥಠʔლ View Post
Würde ich auch vorschlagen, dadurch erreicht man eine System loser Kopplung.
Das sehen andere natürlich anders.
Assoziation bindet in statischen Sprachen genauso stark wie Vererbung.
07/15/2015 18:08 warfley#41
Quote:
Originally Posted by Mostey View Post
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 :D

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

PS I Know im late mit diesem Post
07/15/2015 18:23 Mostey#42
Quote:
Originally Posted by warfley View Post
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
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 View Post
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ß.

4 + 8 + 2*8 = 28 Bytes
8589934592 / 100 * 28 = 0000000,32596


Nur um dir das visuell nochmal vor Augen zu führen.

Quote:
Originally Posted by warfley View Post
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.
07/15/2015 18:39 warfley#43
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.
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.
07/15/2015 21:54 snow#44
Hat jemand von euch schonmal mit Pandas und IPython Notebook gearbeitet?
07/16/2015 11:59 MrSm!th#45
Quote:
Originally Posted by Mostey View Post
Assoziation bindet in statischen Sprachen genauso stark wie Vererbung.
Was ist denn eine "statische Sprache"?