3.1k Aufrufe
Gefragt in Anwendungen(Java,C++...) von bumbum Einsteiger_in (39 Punkte)
Hallo und guten Abend,
ich schreibe am Donnerstag eine Informatikklausur, bin 10.Klasse Gymnasium aber das ist egal.Wir schreiben über das Thema Greenfoot und haben vor einem Monat erst angefangen (zuvor Java gemacht). Mit Greenfoot komme ich soweit klar und verstehe es auch, jedoch bleiben mir noch ein paar Fragen:

1.
Ist der Konstruktor der Teil, (ich nenne es mal die Console) in dem/der man eingibt was Objekt x machen soll?Kann man mehr damit machen, als befehlen geheSchritt oder, wenn auf blatt, setze baby ab etc.?Oder ist das alles?(Wir haben mit Karas mal sogesehen "babys" produziert wobei sie sich immer dupliziert haben wenn sie aufeinander trafen...).

2.
Mein Lehrer meinte es käme "Casting" vor, das haben wir nur kurz besprochen, in der letzten Stunde habe ich ihn erneut gefragt was das sei, jedoch glaube ich es nicht wirklich verstanden zu haben (Man kann den typ einer Datei z.B. int in double oder umgekehrt ändern?).
Könnte mir einer von euch vielleicht dabei helfen und mir die zwei drei Dinge erläutern?

Bedanke mich schonmal im Vorraus für die Antworten.

MfG

BumBum

3 Antworten

0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
Ich kann Java nicht gut, aber:

1.
siehe: de.wikipedia.org/wiki/Konstruktoren_und_Destruktoren

Um Konstruktoren zu verstehen, empfehle ich, sich zunächst mal vorzustellen, dass es sie nicht gäbe.
Du würdest Deine Klasse bauen mit Methoden und Eigenschaften und fertig.
Dann erzeugst Du die Instanz und erhältst das Objekt, das die vorher definierten Methoden und Eigenschaften enthält.
Vielleicht würde das noch kein Problem darstellen.
Dann willst Du aber viele Instanzen der Klasse haben, und es nervt Dich, dass Du jedesmal nach dem erzeugen einer Instanz ersmal alle Objekteigenschaften auf bestimmte Werte setzen musst, obwohl es immer die selben sind.

Genau da hilft der Konstruktor. In den Konstruktor schreibst Du alle Variablenzuweisungen (und ggf. sonstige Operationen, die immer bei der erzeugung einer Instanz ausgeführt werden sollen), und die Eigenschaften jeder Instanz werden die gewünschten Werte haben.

2.
siehe: de.wikipedia.org/wiki/Typumwandlung
0 Punkte
Beantwortet von bumbum Einsteiger_in (39 Punkte)
Danke kicia,
also in dem Konstruktor "spiele ich Gott" und sage jedem Objekt was es machen soll, wie es es machen soll und wie es dabei aussehen soll.

Und das Casting ist einfach dazu da, dass man jetzt wie in dem Beispiel auf Wikipedia anstatt '2' (integer); '2.0' schreibt also double? Ist das so richtig?Und wofür sollte ich das dann benutzen, denn ich finde es ist wesentlich schwieriger das gesamte zu "casten" als es einfach so zu schreiben???Kannst du mir vielleicht ein Besipiel nennen?

MfG

BumBum
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
1.
also in dem Konstruktor "spiele ich Gott" und sage jedem Objekt was es machen soll, wie es es machen soll und wie es dabei aussehen soll.

Das würde ich so nicht sagen.
Wie das (später erzeugte) Objekt aussehen soll, wird ja schon durch die Klassendefinition festgelegt. Der Konstruktor ist nicht notwendig, um ein Objekt zu erzeugen.
Probier mal, eine Klasse zu schreiben, dessen Konstruktor gar nichts macht (einfach eine leere funktion).
(Ich weiss nicht, ob man in Java den Konstruktor auch ganz weglassen kann, statt ihn leer zu lassen).
Hab mal oberflächlich recherchiert, und fand folgende Seite ganz anschaulich:
FH München, Prof. Dr. R. Schiedermeier - Vorlesung "Programmieren I"

2.
Es ist sicher besser, Typumwandlung zu vermeiden, wenn möglich.

Aber stell Dir vor, Du hast zB ein Objekt "Auto", mit einer Eigenschaft "AnzahlRaeder".
AnzahlRaeder ist ein integer mit dem Wert 4.
Jetzt möchtest Du vielleicht ausrechnen, wieviel Luft Du brauchst, um alle vier Räder aufzupumpen, weißt aber schon, wieviel Luft in einen Reifen muss. Ich hab keine Ahnung, was da realistische Werte wären, aber es wird mit Sicherheit ein Wert vom Typ float sein.
Jetzt musst Du rechnen:
Volumen in einem Rad (float) mal 4 Räder (integer).
Für viele Programmiersprachen ist das wie Äpfel mit Birnen multiplizieren, das geht also nicht.
Du musst also, um das berechnen zu können, zuerst entweder den float in integer oder den integer in float 'casten'.

Für Computer sind Float und Interger etwa so verschieden wie ein Buchstabe und eine Zahl (die man theoretisch auch casten könnte, wenn man vorher festlegt, auf welche Weise das passieren soll).
...