Legen Firmen mehr Wert auf Java, als auf C++? Generelle Fragen zu diesem Thema.
-
AndreasW schrieb:
Dann kommen die Schlaumeier an, so wie einer hier im Thread, und sagt:"Oh, die Funktion Waschen() hattet ich schon mal geschreiben. Das war in der Klasse Auto. Ich leite mal meine Klasse "Klo" von Auto ab und hab die Funktion dann ja schon implementiert. Tja, oop machts möglich".
Schlechtes Beispiel. Als ob es das nicht geben würde...
http://www.users-web.de/funpics/Auto_Verkehr_2/Seifenkisten_Klo.htm
-
löl, genau sowas kommt raus, wenn man Vererbung falsch anwendet.
-
Optimizer schrieb:
löl, genau sowas kommt raus, wenn man Vererbung falsch anwendet.
ja, aber dabei erben klassen voneinender, die wirklich nichts gemeinsam haben. bestenfalls kommt ein "motorisiertes klo mit 4 rädern" dabei raus. aber darum geht's mir nicht bzw. hatte ich nie vor. ich habe gleich zugriff auf das programm - dann stelle ich mal eine frage anhand eines konkreten beispiels...
-
hallo. wieder da....
also:
ich habe eine kleine gui-anwendung (awt). die fensterchen bestehen aus
von 'Frame' abgeleiteten klassen. diese fenster haben keine titelzeile
sind aber trotzdem mit der maus verschiebbar - dazu mussten methoden
wie 'mouseClicked' usw. überschrieben werden.
nun brauche ich noch eine von 'Dialog' abgeleitete klasse, die die gleiche
funktionalität haben soll, also keine titelzeile, aber verschiebbar.
nun wäre es doch sinnvoll, die verschiebe-operationen in eine eigene klasse
auszulagern, und beide 'Frame' und 'Dialog' -abkömmlinge von dieser erben zu lassen. das geht aber nicht weil java nur einfachvererbung erlaubt. in c++ könnte man das prima mit mehrfachvererbung lösen.ich habe es dann so gemacht:
1. eine eigene verschiebe-operations-klasse (implementiert MouseListener, MouseMotionListener) erstellt, ähnlich wie die java-adapterklassen.
2. in den beiden 'Frame'- und 'Dialog'-abkömmlingen werden instanzen davon erzeugt und mit den 'addXXXListener()'-methoden angemeldet.das funzt zwar, sieht aber komisch aus. es geht nur, weil java.awt.Component die Listeners verwalten kann d.h. ist also zufall, dass es hierbei recht einfach geht.
meine frage nun:
wie macht sowas ein 'richtiger' java-programmierer?
und bitte nicht wieder antworten 'du hast ja keine ahnung von vererbung o.ä.'
wenn ihr es besser wisst, dann erzählt es bitte....
-
Ich würde es vermutlich genauso machen.
-
Gregor schrieb:
Ich würde es vermutlich genauso machen.
danke für die antwort
...aber meines erachtens nach ist es doch ein workaround weil keine mehrfachvererbung existiert oder sehe ich das falsch?
-
net schrieb:
...aber meines erachtens nach ist es doch ein workaround weil keine mehrfachvererbung existiert oder sehe ich das falsch?
Das sehe ich anders. In deinem Fall hier wäre Mehrfachvererbung absolut unangebracht. Dadurch würdest du die öffentliche Schnittstelle mit Methoden erweitern, die einfach nicht für die Öffentlichkeit bestimmt sind. Ein Fenster ist nunmal kein Listener (auch wenn es recht populär ist, ein Fenster ein Listener-Interface implementieren zu lassen).
Würde es Sinn machen, wenn ich mir dein Fenster nehme und es einem anderen Fenster als Listener zuweise? Ich glaube nicht, oder?
-
Gregor schrieb:
...Ein Fenster ist nunmal kein Listener...
Würde es Sinn machen, wenn ich mir dein Fenster nehme und es einem anderen Fenster als Listener zuweise? Ich glaube nicht...ja, stimmt. du hast schon nicht unrecht...
einfach gut gemacht, diese java library...
-
net schrieb:
Magoon schrieb:
Surkevin schrieb:
Wie siehts mit Java vs. PHP aus?
Meinst Du für Webentwicklung? Da ist Java IMHO die mächtigste Sprache!
also ich würde für serverseitige webentwicklung lieber php nehmen als mich mit dem blöden tomcat rumzuärgern. java kann ich hier nur empfehlen, wenn man sowieso schon eine java-anwendung hat und dann noch ein webinterface dafür braucht. oder eben applets, wenn's im browser laufen soll.
Ich habe das auch mehr als Vergleich der beiden Sprachen gesehen. Für eine einfache dyn. Website ist PHP sicherlich ideal. Muss man aber große Lasten bewältigen oder eine komplexe serverseitige Anwendung entwicklen, reicht PHP sowohl von dem Sprachumfang, als auch von der Performance absolut nicht aus.
net schrieb:
ich habe es dann so gemacht:
1. eine eigene verschiebe-operations-klasse (implementiert MouseListener, MouseMotionListener) erstellt, ähnlich wie die java-adapterklassen.
2. in den beiden 'Frame'- und 'Dialog'-abkömmlingen werden instanzen davon erzeugt und mit den 'addXXXListener()'-methoden angemeldet.das funzt zwar, sieht aber komisch aus. es geht nur, weil java.awt.Component die Listeners verwalten kann d.h. ist also zufall, dass es hierbei recht einfach geht.
Das müsste IMHO aber der richtige objektorientierte Ansatz sein.
Bei Vererbung sollte man immer sagen können "is a". In Deinem Fall ist wie Gregor schon schrieb ein Listener kein Dialog.
-
Magoon schrieb:
Ich habe das auch mehr als Vergleich der beiden Sprachen gesehen. Für eine einfache dyn. Website ist PHP sicherlich ideal. Muss man aber große Lasten bewältigen oder eine komplexe serverseitige Anwendung entwicklen, reicht PHP sowohl von dem Sprachumfang, als auch von der Performance absolut nicht aus.
...immer das alte Märchen! Irgendwo muß es diesen Satz zum Copy/Paste geben!!!
Das stimmt so schlicht nicht! Wie immer ist das eine Frage der Planung. Ich betreibe hier ein Intranet, über das im Großhandel Waren verkauft/angeboten/ werden. dabei ist der gesamte Durchlauf durch die Firma abgebildet. Vom Eingang/Erfassung, über die geplanten Stationen bis zur Rechnungsstellung und Statistischen Auswertungen dazu. Komischerweise geht so was in PHP! Sogar Anbindung an externe DB's ist damit kein Problem.
Natürlich geht so was auch in Perl und es geht auch in Java! Bei Java ist der Overhead am Anfang größer, dafür hat man später einfachere Wartbarkeit/Erweiterbarkeit. Natürlich gibt es viele Argumente für Java bei so etwas, gar keine Frage! Das PHP aber für mehr als eine Hobby-Webpage nicht taugt und bei großen Lasten und umfangreichen Aufgaben schlicht unbrauchbar sei, gehört nun wirklich in den Bereich der Märchen!Gruß Karsten
-
wegus schrieb:
Wie immer ist das eine Frage der Planung. Ich betreibe hier ein Intranet, über das im Großhandel Waren verkauft/angeboten/ werden. dabei ist der gesamte Durchlauf durch die Firma abgebildet. Vom Eingang/Erfassung, über die geplanten Stationen bis zur Rechnungsstellung und Statistischen Auswertungen dazu. Komischerweise geht so was in PHP! Sogar Anbindung an externe DB's ist damit kein Problem.
Das es nicht gehen würde schrieb ich auch nicht. Es ging lediglich um den Vergleich der beiden Sprachen - und da hat numal Java die Nase vorn. Der große Vorteil von PHP ist die schnelle Entwicklungszeit. Der Vorteil von Java,dass man eine komplette objektorientierte Programmiersprache hat, die z. B. durch Objektpersistenz vieles performanter lösen kann.
Aber es ist wie bei allen Sachen in der Programmierung. Man sollte die Sprache nach der Aufgabe auswählen.
Gruss
-
Ja, das liest sich für mich schon angenehmer. Wobei ich die leidige Erfahrung machen mußte, das es manchmal nicht nur die Aufgabe ist die die Sprache definiert, sondern auch die Umstände. Etwa wenn schnelle Umsetzung von einzelnen Teilen gefragt ist, die eben eine detaillierte Planung gar nicht zuläßt ( auch wenn das in der Theorie nat besser ist), heißt es dann oft "schön - wir brauchen das nächste Woche, daß sie es in 3 Wochen viel besser realisiert haben ist egal! Time is money!"). Der Satz a la Java ist komplett Objektorientiert und mit Objekten ist man performanter ist übrigens auch ein Ammenmärchen. Objekte sind Spitze, ich möchte sie nie mehr missen! Aber wer hat denn gesagt, daß wirklich alles ein Objekt sein muß und das das ein Vorteil sei? Man muß doch nicht katholischer sein als der Papst oder ? Es gibt Lösungen da sind Objekte schlicht unnötig. Pures C ohne Objekte ist m.E. schneller als C++. Eine Lösung aus zwei Objekten zusammenzufügen, nur weil beide Eltern in der Summe die nötigen Eigenschaften und Methoden mitbringen, ist nicht immer eine sinnvolle Lösung (irgendwo hier im Forum gab's mal den Vergleich mit dem Objekt auto der Methode Waschen und dem Job ein Objekt Klo zu waschen...). Versteh mich nicht falsch, Objekt sind sehr sinnvoll, wer noch mit abstrakten Datentypen und STRUCT programmiert hat weiß das besonders zu schätzen. Aber dann zu sagen Java ist toll weil Java objektorientiert ist und Objekte sind DIE Lösung für alles ist nun wirklich etwas grob vereinfacht!
Ich schließe mich allerdings Deinem letzten Satz ausdrücklichst an.
Laß uns keinen Flame daraus machen! Java ist ne sehr gute Sprache, die nicht umsonst Ihre weite Verbreitung gefunden hat.
-
Surkevin schrieb:
Hallo!
Ich habe bei der so Suche nach Freiberufen irgendwie das Gefühl, als wäre Java gefragter. Ist das wahr?Beide Sprachen sind sehr gefragt, haben jedoch verschieden Anwendungsbereiche. Wenn du lieber Webapplikationen machen willst würd ich java lernen, interessieren dich aber mehr performanceorientierte Programme oder Elektronikzeugs würd ich bei c++ bleiben.
-
wegus schrieb:
...und mit Objekten ist man performanter ist übrigens auch ein Ammenmärchen.
Falls das auf meinen Post ausgelegt ist, ich schrieb Objektpersistenz. Sprich Du hast z. B. einen DB-Connection Pool, wo dauerhaft Connections liegen. Bei einer Clientanfrage holst Du Dir einfach aus dem Pool eine Connection und kannst Dir dadurch das relativ teure Aufbauen einer Verbindung sparen. Auf diese Weise kann man viele Objekte in versch. Pools halten, bei denen die Erzeugung relativ lange dauert. So etwas macht natürlich auch nur bei großen Lasten Sinn, da man sonst ohne Grund einen Overhead hätte.
Ansonsten sehe ich genauso... War von mir nur zuerst etwas zu knapp formuliert.
Gruss
-
cpt.oneeye schrieb:
Beide Sprachen sind sehr gefragt, haben jedoch verschieden Anwendungsbereiche. Wenn du lieber Webapplikationen machen willst würd ich java lernen, interessieren dich aber mehr performanceorientierte Programme oder Elektronikzeugs würd ich bei c++ bleiben.
Dem stimme ich im Großen und Ganzen zu, wobei ich noch hinzufüge, dass es bezüglich der Anwendungsgebiete durchaus recht große Überschneidungen gibt. Bei vielen Projekten könnte man sowohl Java als auch C++ benutzen, ohne dass man durch seine Wahl gegenüber der anderen Sprache große Vorteile oder Nachteile hat.
-
Magoon schrieb:
...Sprich Du hast z. B. einen DB-Connection Pool, wo dauerhaft Connections liegen. Bei einer Clientanfrage holst Du Dir einfach aus dem Pool eine Connection und kannst Dir dadurch das relativ teure Aufbauen einer Verbindung sparen. Auf diese Weise kann man viele Objekte in versch. Pools halten, bei denen die Erzeugung relativ lange dauert. So etwas macht natürlich auch nur bei großen Lasten Sinn, da man sonst ohne Grund einen Overhead hätte.
ist eigentlich beides übel. verbindungsaufbau und -abbau in schneller folge kostet zeit. objekte am leben erhalten, die man eventuell irgendwann einmal braucht, verbrät speicher. muss man halt abwägen, was weniger schlimm ist.
-
stimmt! Magoon wollte mich darauf hinweisen, daß es schön ist wenigstens die Wahl zu haben dieses "Feature" der Persistenz zu nutzen und damit hat er ja auch Recht!
um aber mal zum Thema zurückzukommen:
@Surkevin:
Generell schadet es nie Mehrsprachig zu sein, zumal letztenendes die selben Prinzipien immer wieder kehren. Gerade der boomende Markt für Handys läßt den java-Markt sicher wachsen (Firmenlösungen f. Außendienst, Info-Portale,...).
Wenn Du C++ gut beherrscht, dann bau das aus. Ein Schwerpunkt ist immer wichtig, sich Java anzuschauen ist sicher auch sinnvoll. Zumal die Anwengungsbereiche sich immer mehr überschneiden. PHP hat nach wie vor - zu unrecht - das Image einer Bastellösung, wird aber auch vermehrt gefragt. Da man heut zu Tage immer mehr verteilte Informationssysteme hat, die es zu verbinden gilt, ist sicher auch XML ein must have obwohl es eine andere Baustelle ist als C++/Java. Generell rate ich immer zu ein paar Schwerpunkten, die man in ausreichender Tiefe beherrschen sollte. Die heutigen Bewerbungen sind voll von 3-4 Buchstabenkürzeln die die Bewerber alle beherrschen wollen. Hinterfragt man das leicht, bröckelt die Fassade schnell ( Nur weil ich INSERT,UPDATE,SELECT schon mal gelesen habe sollte ich mich nicht als MS-SQL Profi ausgeben, das hält keine fünf Minuten!). Ein paar gut gesetzte Schwerpunkte sind da viel mehr wert!