# Java Basics - Teil 1 "Hello World"



## javatutor (4. Jun 2011)

Hallo liebes java-forum,

neulich habe ich ein nettes einstiegs Tutorial in Youtube hochgeladen. Wer mit Java anfangen möchte und nicht weiß wie, kann sich das Video angucken. Wenns euch gefallen hat bitte abonnieren , Daumen hoch und ne nette commi schreiben.

Hier der Link zu meinem Kanal: YouTube - ‪Kanal von javatutor‬&rlm;

Wenn ich gute Feedbacks bekomme werde ich noch mehr solcher Videos von den Basics drehen.


----------



## XHelp (4. Jun 2011)

Natürlich schön, dass du versuchst ein Tutorial auf die Beine zu stellen, aber ein paar Anmerkungen habe ich dennoch:
- Man sollte sich an die CodeConventions halten: 
	
	
	
	





```
JavaTuT
```
 als Package-Name ist schlecht
- Einige dich auf *eine* Art der geschweiften Klammern: entweder direkt hinter dem Statement oder auf der nächsten Zeile. Aber nicht beides abwechselnd
- 
	
	
	
	





```
string
```
 und 
	
	
	
	





```
system
```
 in einem Tutorial-Video klein schreiben ist auch schlecht
- Ich hatte so ein wenig das Gefühl, dass du nach dem 
	
	
	
	





```
public
```
 das 
	
	
	
	





```
static
```
 der Main-Methode erstmal nachgucken musstest :bahnhof:

Für ein Tutorial vermittelst du ziemlich wenig Wissen: "main?", "args?", die Erklärung von "Klasse" ist auch... ungünstig, z.B. Attribut "Sprache" beim Pferd???
Darüber hinaus solltest du dir vor der Aufnahme ein Stichpunktzettel machen, was du überhaupt sagen willst, dann kommt es auch nicht so oft zu Pausen und Ähhhmmms.


----------



## Tomate_Salat (4. Jun 2011)

Hatte finde ich, mehr etwas von Nachhilfe-unterricht. Du solltest dir für weitere Tutorials unbedingt Notizen machen:


> String benutzt man häufig für Textausgaben



In Java redet man nicht von Funktionen, sondern von Methoden. Das was eine Funktion bedeutet, gibt es in Java nicht. Das gäbe es in C++ oder PHP. Denn eine Funktion hat *keine* Zugehörigkeit zu einem Objekt.


----------



## thorstenthor (4. Jun 2011)

Vergiss das lieber ganz schnell wieder, was Tomate_Salat gesagt hat, Methode oder auch Prozedur sind Synonyme für Funktion und bedeuten alle dasselbe.

@javatutor: Eine Klasse ist eine Zusammenfassung von Daten und Operationen darauf, das sollte aber nicht an der Stelle gesagt werden, wo noch die IDE vorgestellt wird, sonst kommt man durcheinander. Besser ist es, für diese zwei Paar Schuhe jeweils ein eigenes Video zu machen. Außerdem gibt es schon jemanden, der sich vornehmlich damit beschäftigt, Videos über die Basics zu machen.


----------



## XHelp (4. Jun 2011)

thorstenthor hat gesagt.:


> Vergiss das lieber ganz schnell wieder, was Tomate_Salat gesagt hat, Methode oder auch Prozedur sind Synonyme für Funktion und bedeuten alle dasselbe.



???:L Es sind keine Synonyme


----------



## javatutor (4. Jun 2011)

danke für euer feedback. werde alles nochmal überarbeiten und ein neues video erstellen =). in erster linie geht es mir nur darum leuten zu helfen die damit anfangen wollen . und ja ich beherrsche mehrere sprachen wie c  und c++ deshalb komme ich beim reden manchmal durcheinander. weiß aber was ihr meint mit "methoden"


----------



## thorstenthor (4. Jun 2011)

XHelp hat gesagt.:


> ???:L Es sind keine Synonyme



Nein, natürlich nicht, weil du ein Gegenbeispiel hast oder es einfach aus einer authentischeren Quelle als ich weißt... Oder einfach nur, weil jemand eine andere Meinung hat?


----------



## Tomate_Salat (4. Jun 2011)

thorstenthor hat gesagt.:


> Vergiss das lieber ganz schnell wieder, was Tomate_Salat gesagt hat, Methode oder auch Prozedur sind Synonyme für Funktion und bedeuten alle dasselbe.



Nein. Du solltest dich vllt mal besser informieren. In Java redet man von Methoden, der Grund steht oben. Eine Funktion kann ohne Objekt existieren, eine Methode nicht. Es ist also nicht alles das selbe!


----------



## XHelp (4. Jun 2011)

thorstenthor hat gesagt.:


> Nein, natürlich nicht, weil du ein Gegenbeispiel hast oder es einfach aus einer authentischeren Quelle als ich weißt... Oder einfach nur, weil jemand eine andere Meinung hat?



Du hast doch selber keine einzige Quelle gebracht :bahnhof: Aber jeder, der z.B. Pascal/Delphi programmiert hat, kann schon behaupten, dass Funktion, Prozedur und Methode nicht das gleiche ist.


----------



## L-ectron-X (4. Jun 2011)

Tomate_Salat hat gesagt.:


> Eine Funktion kann ohne Objekt existieren, eine Methode nicht.


Was ist dann mit statischen Methoden? Die sind auch nicht an ein Objekt gebunden, sondern an die Klasse, in der sie definiert wurden.


----------



## thorstenthor (4. Jun 2011)

L-ectron-X hat gesagt.:


> Was ist dann mit statischen Methoden? Die sind auch nicht an ein Objekt gebunden, sondern an die Klasse, in der sie definiert wurden.



Danke, wenigsten einer, der nicht blind alles glaubt.

Weitere Argumentationen: Funktionen müssen immer eine Rückgabe haben, Methoden nicht.

Natürlich auch unsinn.


----------



## XHelp (4. Jun 2011)

thorstenthor hat gesagt.:


> Weitere Argumentationen: Funktionen müssen immer eine Rückgabe haben, Methoden nicht.
> 
> Natürlich auch unsinn.



Auf was beziehst du dich überhaupt? Von welchen "Funktionen" sprichst du?
Wenn du schon eine sachliche und ernste Diskussion willst, dann ist es ziemlich unschlau andere Meinungen einfach so als "unsinnig" zu bezeichnen ohne irgendwelche Belege für deinen Standpunkt zu bringen.

Und generell sollte vlt ein Mod das Ganze abschneiden, den mit dem Youtube-Tutorial hat das wenig zu tun.

P.S. Es wird eh schwer sein im Java-Umfeld über den Unterschied von Prozeduren, Funktionen und Methoden zu diskutieren, weil es nun mal keine Prozeduren und Funktionen in Java gibt. Die Wörter haben auch dementsprechend nichts bei Java zu suchen.


----------



## thorstenthor (4. Jun 2011)

Ja, schneidet der Kritik ruhig die Luft durch Schließung des Themas ab, denn die eigene Meinung könnte ja falsch sein... oder noch schlimmer, ein Fremder könnte etwas besser wissen.

Vielleicht ist es für dich unüblich, von Funktionen zu sprechen, einen sachlichen Unterschied gibt es aber nicht.


----------



## freak_007 (4. Jun 2011)

In Java haben Methoden auch immer ein Rückgabewert void oder etc. In meinen PHP-kenntnissen bestimmt man eine Funktion mit function. In der Klasse beginnt man sie genauso, aber trotzdem Methoden gennant. 





> Funktionen ("Methoden" genannt)


 Quelle: PHP: Die Grundlagen - Manual


----------



## XHelp (4. Jun 2011)

thorstenthor hat gesagt.:


> Ja, schneidet der Kritik ruhig die Luft durch Schließung des Themas ab, denn die eigene Meinung könnte ja falsch sein... oder noch schlimmer, ein Fremder könnte etwas besser wissen.


Hat hier wer was von Schließung erzählt? :bahnhof: Ich meinte man sollte es in einen neuen Thread abschneiden, denn mit diesem hier hat es ja nichts zu tun.



> Vielleicht ist es für dich unüblich, von Funktionen zu sprechen, einen sachlichen Unterschied gibt es aber nicht.


Belege doch deine Meinung. Ich habe meine Belegt, wobei du es aus irgendwelchen Gründen ignorierst.


freak_007 hat gesagt.:


> In Java haben Methoden auch immer ein Rückgabewert void oder etc.



Laut JLS ist void kein Rückgabe-Typ in Java:


> A method declaration either specifies the type of value that the method returns or uses the keyword void to indicate that the method does not return a value


----------



## Moch (4. Jun 2011)

Also ich habe Funktionen und Prozeduren in Ada95 kennengelernt und da war die Unterscheidung definitiv dadurch, dass eine Funktion eine Rückgabe über "return" haben musste und eine Prozedur ohne selbiges daherkam.
Als wir dann ein Trimester später mit Java angefangen haben, hat unsere Prof. beides einmal als Vergleich rangezogen, um die Bedeutung von "void" erklären.
Er meinte hierbei, dass ein void ÄHNLICH einer procedure und die übrigen ähnlich einer function in Ada seien. Er betonte aber auch mehrfach, dass sie nicht direkt vergleichbar seien.

Für mich ist es aber ein Fakt, dass zumindest Prozeduren und Funktionen keine Synonyme sein können (zumindest im Kontext Ada95 und Delphi). Da Methoden ein wenig die Eigenschaften von Beiden haben, aber doch wieder verschieden davon sind, halte ich die Aussage, dass alles Synonyme seien, für falsch.


----------



## thorstenthor (4. Jun 2011)

Ok, dann hat euer Prof von der Bedeutung von void gesprochen, unabhängig von der Bedeutung von "Funktion". Es ist auch klar, dass in verschiedenen Kontexten üblicherweise verschiedene Begriffe (Methode, Funktion, Prozedur) verwendet werden. Ich bleibe aber dabei, dass es keinen per Definition festgelegten Unterschied gibt.


----------



## thorstenthor (4. Jun 2011)

Achja, Routine und Subroutine werden auch noch synonym verwendet! Das Gebiet wird also immer weiter...


----------



## Final_Striker (4. Jun 2011)

Methode (Programmierung) ? Wikipedia


----------



## awda23ws23 (5. Jun 2011)

Wie kann einem ein Video beim erlernen einer Programmiersprache (hier BASISCS von JAVA) helfen? Gut, um mal ein Feature der IDE zu präsentieren oder verdeutlichen, aber programmieren lernen per Video?
2 Bildschirme auf einem das Video, auf dem anderen die IDE?
Schnell mal zurückspulen...wie war das....ähhh kann das nicht erkennen?
Das Kopieren von Quellcode ist aus einem Video recht umständlich
M.E. ist wohl ein Buch oder Tutorial besser....


----------



## Tomate_Salat (5. Jun 2011)

L-ectron-X hat gesagt.:


> Was ist dann mit statischen Methoden? Die sind auch nicht an ein Objekt gebunden, sondern an die Klasse, in der sie definiert wurden.



Und mit import static braucht man nicht einmal die Klasse mit anzugeben. Trotzdem existiert hier eine Zugehörigkeit. Ob das hier die Grauzone ist, in der man sagen könnte, ab hier ist es eine Funktion. Dafür habe ich mich zu wenig damit beschäftigt. Dennoch würde ich es aufgrund der Zugehörigkeit zu einer Klasse noch als Methode bezeichnen (man kann diese ja auch von einer Objekt-Referenz aufrufen).


----------



## Marco13 (5. Jun 2011)

Das Video ist ja jetzt ohnehin weg? 
Und wenn die einzige Frage, die ausführlich diskutiert wird, die ist, ob es Methode, Funktion oder Prozedur heißt, muss der Rest ja perfekt gewesen sein  Mein subjektiver Senf: "Prozdur" klingt zu sehr nach "Prozedural", und in einem Tutorial sollte man die Nomenklatur verwenden, die für die Sprache üblich ist (und bei Java ist das "Methode"), aber sonst, Methode, Membermethode, Funktion, Memberfunktion, statische Funktion, ... solange jeder weiß, was gemeint ist, das ist das doch nicht so wichtig... :bahnhof:


----------



## jgh (6. Jun 2011)

L-ectron-X hat gesagt.:


> Was ist dann mit statischen Methoden? Die sind auch nicht an ein Objekt gebunden, sondern an die Klasse, in der sie definiert wurden.



Aber eine Klasse ist auch ein Objekt, zwar keine Instanz...aber ein Object


----------



## L-ectron-X (6. Jun 2011)

???:L Hast du das jetzt ernst gemeint?


----------



## jgh (6. Jun 2011)

hmmm...aufgrund deiner Frage sage ich mal .... nein, Ironie :lol:

Ist eine Klasse kein Objekt?


----------



## L-ectron-X (6. Jun 2011)

Nein, eine Klasse ist ein Bauplan für ein Objekt. 
Stell dir das so vor: Die Klasse ist das, was auf dem Reißbrett liegt, ein Objekt quasi ein produziertes und in die "reale Welt" geholtes Exemplar der Klasse.
Also: Klasse != Objekt == Instanz


----------



## jgh (6. Jun 2011)

habe gerade kein Bsp gefunden...aber gut, wir benutzen eine unterschiedliche Terminologie.

Alles sind Objekte...auch Klassen. 

Instanz ist imho ein Unterschied zu einem Objekt. Jede Instanz ist ein Objekt, aber nicht jedes Objekt ist eine Instanz. Die Klasse Math ist auch ein Objekt und definitiv keine Instanz...oder sind wir da auch unterschiedlicher Meinung?

Deswegen halte ich pers. deine Definition von _Klasse != Objekt == Instanz _ für nicht korrekt.
Mir ist schon klar, wie Klassen und Instanzen zusammenhängen, wobei ich "Schablone" als bildliche Beschreibung für eine Klasse schöner finde.

Aber gut...irgenwie ist das Wortglauberei. Ich finde "meine" Terminologie exakter...aber wenn ich weiß, dass bei dir  (Objekt==Instanz) true liefert, dann ist natürlich eine Klasse kein Objekt.


----------



## L-ectron-X (6. Jun 2011)

Ja... wenn du meinst... Ich bin da anderer Meinung.
Aber vielleicht solltest du doch noch mal das Kapitel Klassen und Objekte vollständig durchlesen: Galileo Computing :: Java ist auch eine Insel – 3 Klassen und Objekte


----------



## Final_Striker (6. Jun 2011)

jgh hat gesagt.:


> Die Klasse Math ist auch ein Objekt und definitiv keine Instanz...oder sind wir da auch unterschiedlicher Meinung?



Hast du schon mal von der Klasse Math ein Objekt erzeugt???
Math hat doch nur statische Methoden.


----------



## jgh (6. Jun 2011)

Final_Striker hat gesagt.:


> Hast du schon mal von der Klasse Math ein Objekt erzeugt???
> Math hat doch nur statische Methoden.




```
Math.class instanceof Object	//liefert true^^
```

Nein, nur sagte ich: _*Die Klasse Math ist auch ein Objekt und definitiv keine Instanz*_
Den ersten Teil meiner Aussage, lässt sich mich dem obigen Code-Fragment nachvollziehen.

Wenn also 
	
	
	
	





```
Instanz==Objekt
```
auch 
	
	
	
	





```
true
```
liefert und wir uns einig sind, dass man kein Objekt oder Instanz von der Klasse Math erzeugen kann...haben wir doch einen Widerspruch:
Der obige Ausdruck liefert 
	
	
	
	





```
true
```
, aber ich kann kein Objekt/Instanz davon erzeugen. => nach meiner Auffassung schreit es doch danach, dass man zwischen Objekt und Instanz unterscheidet.


----------



## eRaaaa (6. Jun 2011)

.class ist aber nicht die Klasse an sich, sondern verweist eben auf das Class-Objekt!



			
				http://openbook.galileodesign.de/javainsel5/javainsel21_001.htm#Rxx747java21001040008AB1F049100 hat gesagt.:
			
		

> Jede Klasse enthält eine Klassenvariable mit Namen .class vom Typ Class, die auf das zugehörige Class-Exemplar verweist. Auch auf primitiven Datentypen ist das Ende .class erlaubt. Genauso ist es mit dem Zugriff auf die statische Variable TYPE der Wrapper-Klassen.


----------



## jgh (6. Jun 2011)

eRaaaa hat gesagt.:


> .class ist aber nicht die Klasse an sich, sondern verweist eben auf das Class-Objekt!



mmmh, widerwilliges ok.
Trotzdem bleibe ich dabei, dass es sinnvoll ist Instanz und Objekt zu unterscheiden.


----------



## eRaaaa (6. Jun 2011)

jgh hat gesagt.:


> mmmh, widerwilliges ok.


Mhm? Was soll das heißen? 


> Trotzdem bleibe ich dabei, dass es sinnvoll ist Instanz und Objekt zu unterscheiden.



Wie/wo unterscheidest du denn zwischen diesen beiden Begriffen? :autsch:


----------



## L-ectron-X (6. Jun 2011)

Es gibt meiner Auffassung nach keinen Unterschied. Hinter dem Begriff Instanz steht das gleiche wie hinter dem Begriff Objekt. Ergo Instanz == Objekt.
Aber von Klassen können Objekte bzw. Instanzen erzeugt werden.

Möglicherweise verwechselst du hier auch was mit Referenzen. Referenzen sind eine Art Zeiger oder Verknüpfung auf Objekte im Speicher der VM.
Referenzen != Objekte


----------



## Marco13 (6. Jun 2011)

jgh hat gesagt.:


> ```
> Math.class instanceof Object	//liefert true^^
> ```



Schade, das wollte ich eigentlich, mit einem :joke: versehen, als Antwort auf L-ectron-X's entsetzte Nachfrage posten


----------



## jgh (7. Jun 2011)

gegen soviel geballte Kompetenz, sollte ich eigentlich den Rückzug antreten und euch Recht geben...aber solange ich nicht davon überzeugt (worden) bin, werde ich es nicht machen  



eRaaaa hat gesagt.:


> Wie/wo unterscheidest du denn zwischen diesen beiden Begriffen? :autsch:


Nach _meiner_ Terminologie ist eine Instanz ein Objekt, dass mit dem [c]new[/c] Operator erzeugt worden ist. Synonyme für Instanz sind in diesem(meinem) Kontext: Exemplare, Ausprägung

Die Klasse System erbt von Object, gleiches gilt für die Klasse Math => beides sind -da sie Object extenden- also auch Objekte, oder ist das falsch?

Wenn ich mit [c]Point p1 = new Point(1,1)[/c] ein(e) (Objekt) Instanz/Exemplar der Klasse erzeuge, wird neben dem "Bauplan(Methoden/Felder)" der Klasse Point, auch zusätzlich Speicherplatz für die konkrete Ausprägung der Instanz [c]p1 mit x=1 und y=1[/c] belegt.

Diesen Unterschied, zwischen einem Zugriff auf ein konkretes mit dem Operator [c]new[/c] erzeugtem Objekt und dem Zugriff auf ein Objekt über den Klassennamen(statische Klassenmethoden), versuche ich mit der Differenzierung von Objekt und Instanz zu berücksichtigen.

Frei nach dem Motto von Java Alles ist ein Objekt ist eine *.java-Datei genauso ein Objekt, wie eine *.class Datei, oder auch eine *.html Seite. Dieser Definiton nach ist auch eine Klasse ein Objekt...

Mit ist schon bewusst, dass eigentlich (fast) überall die Ansicht von euch (Objekt==Instanz) gelehrt wird...aber nicht weil alle das so machen, muss es richtig, oder optimal sein.
Ich meine in einem Script eines Profs  diese von mir vertretende Aufassung gelesen und übernommen zu haben, weil ich diese Unterscheidung für nachvollziehbar und sinnvoll halte.

Und nun will ich mich gerne eines besseren Belehren lassen...


----------



## Sonecc (7. Jun 2011)

> Die Begriffe instance, class instance und Exemplar werden synonym
> für den Begriff Objekt gebraucht


Quelle: Balzert, Heide - Lehrbuch der Objektmodellierung Seite 21, Letzter Abschnitt vor Kapitel 2.2




> Man sagt auch: Ein Objekt ist eine Instanz
> einer Klasse


http://www.math.tu-berlin.de/Vorlesungen/WS03/Programmiermethoden/oo.pdf Seite 2


In der Objektorientierten Entwicklung ist ein Objekt also mit einer Instanz gleichzusetzen.
Dass man bei Sun eine unglückliche Namenswahl getroffen hat ändert rein gar nichts an dieser Definition


----------



## Andi_CH (7. Jun 2011)

Sonecc hat gesagt.:


> http://www.math.tu-berlin.de/Vorlesungen/WS03/Programmiermethoden/oo.pdf Seite 2



Auch auf Seite 2: 
... Operationen (oder Methoden, Elementfunktionen) beschreiben das Verhalten der Objekte
einer Klasse. Operationen können über Parameter verfügen...

Hm, und wie sagen die zu statischen Methoden, Funktionen, Prozeduren?
Hier werden als die Begriffe synonym verwendet, was ich sehr häufig auch so höre und selbst mache.

Bei Pascal gab es einen Unterschied. (function und procedure sind keywors) Da ist eine Prozedur schlicht eine Funktion mit dem Rückgabetyp "void" den es aber nicht gibt. Es ist eine Funktion ohne Rückgabewert.

"Methode" ist ein Begriff aus der OO Welt - Java hat den übernommen und ich kenne Leute die "Methode" für nicht statische Methoden verwenden und den statischen "Funktion" oder "Prozedur" sagen. Ich selbst verwende die alle drei synonym und wer meint dass es da echte Unterschiede zwischen den Begriffen gibt, soll die bitte ausführen.

Bevor jetzt wieder der Verriss kommt ich wüsste gar nichts - ich kann ja das nächste mal auch anonym posten oder ein Fakeprofil einrichten ;-)


----------



## jgh (7. Jun 2011)

Sonecc hat gesagt.:


> In der Objektorientierten Entwicklung ist ein Objekt also mit einer Instanz gleichzusetzen.
> Dass man bei Sun eine unglückliche Namenswahl getroffen hat ändert rein gar nichts an dieser Definition



Ich bestreite doch gar nicht, dass es auch in den meisten Lehrbüchern so Praxis ist...bezweifel allerdings die Sinnhaftigkeit dieser Definitonen. 
Du sagst, dass Sun eine unglückliche Namenwahl mit der Klasse Object gewählt hat...mmmh, ich meine eher dass die Definiton von deinen zitierten Quellen unglücklich ist, oder von mir aus auch die allgemein gültige Meinung zur Definition eines Objektes. 

Scheinbar stehe ich alleine mit meiner Meinung...und muss mich da wohl oder übel anpassen.

Trotzdem bleibe ich bei meiner (rudimentären) Einschätzung, dass so eine Unterscheidung nicht falsch ist. Und bis jetzt hat mir hier keiner das Gegenteil bewiesen, oder meine "beweisführung" als falsch identifiziert. 

Es ist natürlich schön einfach, sich auf allgemein gültige und anerkannte Definitonen zu berufen...das heißt aber noch lange nicht, dass diese Definitonen richtig, umfassend und präzise sind.

Es glaubten auch viele große Persönlichkeiten (u.a. Platon) daran, dass die Erde der Mittelpunkt des Weltalls ist und haben damit u.a. die kugelförmigkeit der Erde begründet.

Zu behaupten, dass Sun eine unglückliche Namenswahl getroffen hat...interpretiere ich, als kleines Zugeständnis^^

Aber sei es drum...ich bezweifel ja nicht das die allgemein anerkannte Terminologie so ist, wie es von dem Gros der User hier dargestellt worden ist, nämlich (Objekt==Instanz), halte aber eine Unterscheidung von Objekt und Instanz weiterhin für sinnvoll!


----------



## Sonecc (7. Jun 2011)

Eine allgemein gültige Definition als falsch zu bezeichnen ist nunmal an sich falsch. Das wäre als würdest du sagen dass die Definition der Inversen (x * -1 = -x) falsch ist. Das ist sie nicht. Eine Definition ist eine Vereinbarung über eine gewisse Begrifflichkeit. In diesem Fall ist die Definition von Objekt und Instanz eindeutig.
Diese Definition bestand auch schon bevor Java entstand. Umso unverständlicher ist es meiner Meinung nach, dass man dort den Begriff Object so missverständlich verwendet.
Ob du diese Argumentation nun annimmst oder weiterhin bei deinem Standpunkt bleibst ist natürlich dir überlassen. Per Definition ist dein Standpunkt jedoch leider falsch.



> Es glaubten auch viele große Persönlichkeiten (u.a. Platon) daran, dass die Erde der Mittelpunkt des Weltalls ist und haben damit u.a. die kugelförmigkeit der Erde begründet.



Das ist keine Definition!


----------



## jgh (7. Jun 2011)

Sonecc hat gesagt.:


> Das wäre als würdest du sagen dass die Definition der Inversen (x * -1 = -x) falsch ist. Das ist sie nicht.


Nein, aber diese Definition lässt sich auch beweisen. 
Die falsche Definiton eines Objekt==Instanz habe ich durch die Klassen Math und System bewiesen. Meine "Beweisführung" hast du mit dem Argument einer _unglückliche Namenswahl_ von Sun widerlegt. Die Frage die sich dann stellt ist doch die folgende: Sollten man evtl. die Definiton eines Objektes im Kontext der Sprache Java verändern, oder nimmt man diesen Widerspruch aufgrund der _unglückliche Namenswahl_ von Sun einfach hin?
Ich tendiere zu ersterem.



Sonecc hat gesagt.:


> Diese Definition bestand auch schon bevor Java entstand.


ok, wusste ich nicht. Trotzdem ist diese Definition dann in Zeiten wo in Java ein Objekt auch eine Klasse ist und jede Klasse von Objekt erbt...nicht (mehr)richtig, zweideutig oder zumindest absolut fehleranfällig.



Sonecc hat gesagt.:


> Per Definition ist dein Standpunkt jedoch leider falsch.


und das ist so, weil es so ist^^

Ich habe versucht, die Vorteile einer Differenzierung zwischen Objekt und Instanz aufzuzeigen und habe eine klare Abtrennung zwischen einem Objekt und einer Instanz "definiert".
Bis jetzt habe ich allerdings keinen Grund gefunden, warum das falsch sein soll! 
Außer die unglückliche Namenwahl von Sun :toll:
Das sich keiner auf meine Seite schlägt und wenigstens sagt, eigentlich hast du ja Recht, aber es wird anders gehandhabt...stimmt mich ein wenig traurig und nachdenklich 

Also habe ich meine Meinung exklusiv...zum Glück nicht das einzige, was ich exklusiv habe :lol:


----------



## Sonecc (7. Jun 2011)

Man kann eine Definition nicht beweisen...

Übrigens war das oben erwähnte gar nicht die Inverse *schäm*
Das Multiplikativ Inverse einer Zahl x ist natürlich die Zahl, welche mit x multipliziert 1 ergibt.


----------



## schalentier (7. Jun 2011)

Nene, du bist nicht alleine ;-)

Ich wuerde das nur anders formulieren:

Ein Objekt ist eine Instanz einer Klasse. Eine Klasse kann aber auch ein Objekt sein (z.B. ist das bei Ruby so). Allerdings sind Objekte ja auch veraenderlich (haben Zustand usw). Veraendert man dann eine Klasse, hat das direkt Auswirkungen auf alle Instanzen dieser Klasse. Das geht aber in Java nicht, deshalb gilt fuer Java: Da Klassen keine Objekte sind, sind Objekte nur Instanzen von Klassen. Ergo: Objekte == Instanzen (in Java).

Haha. Endverwirrung! ;-)


----------



## jgh (7. Jun 2011)

naja scheinbar doch, sonst würdest du Objekte == Instanzen nicht am Ende deiner Ausführung haben.



> Allerdings sind Objekte ja auch veraenderlich


da sind wir doch wieder beim Problem. Die Klasse String ist auch ein Objekt und ist nicht veränderlich!
Klar, man kann das damit begründen dass Sun eine unglückliche Namenswahl getroffen hat...ansonsten habe ich objektiv Recht!

Ob es die Inverse, oder die Multiplikativ-Inverse ist... x * (-1) = -x und x * (1/x) = 1 beide Aussagen sind wahr.

Aber gut...wann macht ein Mod hier endlich wegen Off-Topic dicht. 
Aus Mitleid will ich keine Zustimmung


----------



## Tomate_Salat (7. Jun 2011)

OG was habe ich angerichtet 

ich denke, so langsam ist der Punkt erreicht, wo man dieses Thema in 2 oder sogar 3 Themen splitten könnte.


----------



## Andi_CH (7. Jun 2011)

Der Zauberlehrling sagte :
"Die ich rief, die Geister werd ich nun nicht los."


----------



## schlingel (7. Jun 2011)

In OOP Sprachen wie Javascript oder Smalltalk gibt es gar keine Klassen sondern nur Objekte. Dort wird kopiert und nicht instanziert. 

Die übliche Definition von Objekt, Klassen usw. trifft also vor allem bei Java zu und die Unterscheidung von Instanz und Objekt und deren Vorteil in Java will sich mir auch bei mehrfachen Lesen nicht so recht eröffnen. Gerade hier ist doch der Bauplan vorhanden, davon wird beim VM-Start eine Instanz angelegt und die ist für alle Objekte erreichbar. Also ist das nicht nur ein Objekt sondern auch eine Instanz.

Wie erklärst du dir sonst (statische) Klassenkonstrukturen?

In Bezug auf die Terminologie: Der ursprüngliche Schöpfer von OOP Alan Key hatte da tatsächlich anderes im Sinn aber auf diese Definition hat sich die Industrie und Wissenschaft geeinigt. 

Du kannst z.B. natürlich auch neben der Zahl 0 eine Ziffer & mit dem Namen Quarlifunsen einführen wenn dir das besser gefällt und damit eine Unterscheidung zwischen dem Ergebnis 4 - 4 und der Zahl 0 einführen. Macht ja Sinn, weil das eine beschreibt ein Ergebnis einer auszuführenden Aktion und das andere einen Status. 

Und nachher enttäuscht dazu schreiben wenn es keiner verwendet: Ich finde es traurig, dass die anderen nicht so sehen.


----------



## thorstenthor (8. Jun 2011)

schlingel hat gesagt.:


> Die übliche Definition von Objekt, Klassen usw. trifft also vor allem bei Java zu und die Unterscheidung von Instanz und Objekt und deren Vorteil in Java will sich mir auch bei mehrfachen Lesen nicht so recht eröffnen.



ein Objekt sei alles und Instanz nur eine Ausprägung der Klasse. Dann wäre Objekt eine Obermenge von Instanz und ein allumfassender nicht viel aussagender Begriff.

Es könnte natürlich auch so definiert sein, und woanders ist es das wohl auch, allerdings hätte man dadurch ja nichts gewonnen.

Die Existenz des neutralen Elements lässt sich doch nicht beweisen (weil Definition), sondern nur dessen Eindeutigkeit oder wie war das?

Thema zu splitten halte ich nicht für sinnvoll, denn alle Antworten beziehen sich ja auf die im Video erwähnten "Nomenklatur"
Außerdem ist es nicht schlecht, längere ausufernde Threads zu haben, welche die zu lesen man überdrüssig ist


----------



## schlingel (8. Jun 2011)

> ein Objekt sei alles und Instanz nur eine Ausprägung der Klasse. Dann wäre Objekt eine Obermenge von Instanz und ein allumfassender nicht viel aussagender Begriff.


Darauf habe ich Bezug genommen oben. Auch eine statische Klasse wie z.B. Math wird ja instanziert - einmal, beim Start der VM. Also enthalten beide Begriffsmengen im Falle von Java die selben Elemente.



> Die Existenz des neutralen Elements lässt sich doch nicht beweisen (weil Definition), sondern nur dessen Eindeutigkeit oder wie war das?


Ich weiß jetzt nicht so ganz auf was du hinaus willst mit der Aussage.


----------



## Tomate_Salat (8. Jun 2011)

thorstenthor hat gesagt.:


> Thema zu splitten halte ich nicht für sinnvoll, denn alle Antworten beziehen sich ja auf die im Video erwähnten "Nomenklatur"
> Außerdem ist es nicht schlecht, längere ausufernde Threads zu haben, welche die zu lesen man überdrüssig ist



Da das Video nicht mehr existiert, ists wahrscheinlich eh egal. Dennoch ist in dem Thread nunmal das Video kein Thema mehr (so seit gefühlten 3 Seiten :joke, weswegen ein Splitten eigentl. nicht verkehrt wäre. Letztendlich ists mir egal, ich wollte nur darauf hinweisen.


----------



## thorstenthor (8. Jun 2011)

Dann wäre die Klasse, die als .classDatei vorliegt (oder als Quelltext), Klasse, die von der VM beim Start erstellte wäre Objekt, die während der Laufzeit angelegte wäre Instanz. Die vorhandenen Definitionen könnten beibehalten werden und im Zweifelsfall Objekt der statischen Klasse nehmen. Kenne aber auch, dass eine "statische Methode", "Klassenmethode" oder "Methode der Klasse" (nicht Methode des Objekts) aufgerufen wird. SEhe keine Notwendigkeit:bahnhof:


----------



## schlingel (8. Jun 2011)

> Dann wäre die Klasse, die als .classDatei vorliegt (oder als Quelltext), Klasse, die von der VM beim Start erstellte wäre Objekt, die während der Laufzeit angelegte wäre Instanz.



Erinnert mich jetzt sehr an meine oben getroffene Definition von Quarlifunsen ;-)


----------



## thorstenthor (8. Jun 2011)

Wenn du doch das Streitthema schon verstanden hast, warum fragst du dann noch, um was es eigentlich geht???:L
Dahingehende Änderungen würden außerdem weitere Verwirrung mit sich ziehen:bahnhof:


----------

