Klassen und Objekte => richtiges Verständnis?

Status
Nicht offen für weitere Antworten.

Majin_Clodan

Mitglied
Hi Leute!
Also ich habe mich nun heute mit Klassen und Objekten beschäftigt, doch ehrlich gesagt, hatte ich keinen Plan davon. Erst bei dem selber nachrecherschieren bekam ich erstmal ein gewisses Gefühl dafür.
Ich habe mir deshalb ein Übungs-Programm genommen, z.T. abgeschrieben d.h. z.T. geändert, weil es noch anderes gab, was mir Kopfzerbrechen bereitete und das, was ich für logisch bzw. mir erklären kann, mal kommentiert. Ich würde hierbei gerne wissen, ob diese Kommentarem, die ich hinten angefügt habe, auch richtig sind. :)

Code:
class Objekt
{
	public static void main(String[] arg)
	{
		float v1, v2;
		
		
		Kegel k1 = new Kegelobjekt();				           //Definierung eines neues Objektes und Abarbeitung der Klasse "Kegelobjekt". 
																					//Das heißt k1 bekommt Werte durch das, was in der Klasse "Kegelobjekt" geschieht. 
		
		
		Kegel k2 = new Kegelobjekt();					
		
		
		k1.r = 2.7f;													//Werteübermittlung in das Objekt K1, wobei die Initialisierung der jeweiligen Variable
																					//in dem Objekt gemacht werden muss.
		
		
		k2.r = 3.4f;
		k1.h = 3.1f;
		k2.h = 2.4f;
										
										
										
			System.out.print(k1 +"\n" + k2 + "\n" + volumen); 											
	}
}



//____________________________________________________________________

class Kegelobjekt													// durch K1 und K2 wird dann die Kegelklasse 2x durchlaufen,
																			        // da 2 Objekte für diese Klasse definiert sind und da diese Werte unterschiedlich sind,
																			        // gibt es 2 verschiedene Lösungen.
{
	float r,h, volumen;											// Initialisierung der Variablen r und h.
																					// Wichtig, damit es eine Werteübergabe von k1.r auf die Variable r geht. Die Variable h ist analog.
	
	
	static float pi = 3.14;
	
	
	
	volumen = pi*r*r*h/3;							
	

}


Nebenbei bekomme ich auch einen Fehler, wenn ich das Programm ausführen will. Aber dies sei erstmal nur nebensächlich. xD
Der Fehler zeigt mir folgendes:
(identifier) expected
volumen = pi*r*r*h/3;




Vielen Dank schon einmal im vorraus. :)


MFG Majin_Clodan
 

freak4fun

Mitglied
Du solltest deiner Klasse einen Constructor verpassen. ;)
Code:
class Objekt
{
   public static void main(String[] arg)
   {
      float v1, v2;
            
      Kegelobjekt k1 = new Kegelobjekt();
      // Kegelobjekt - Typ - Name der Klasse
      // k1 - Name der Instanz
      // new - neues Objekt erzeugen
      // Kegelobjekt() - Constructor
      
      Kegelobjekt k2 = new Kegelobjekt();               
      // k2 - weitere Instanz der Klasse Gegelobjekt
      
      // Klasse = bauplan; Instanz = Hergestelltes Objekt
      
      k1.r = 2.7; // Direktzuweisung                                      
      k2.r = 3.4;
      
      k1.h = 3.1;
      k2.h = 2.4;
                              
      System.out.print(k1.berechneVolumen() +"\n" + k2.berechneVolumen() + "\n");                                  
   }
}

//____________________________________________________________________

class Kegelobjekt                                      
{
   double r,h, volumen; // Klassenvariablen                                 
   double pi = 3.14;
   // float sind allg. Gleitkommazahlen
   
   // Constructor
   public Kegelobjekt(){
     r = 0;
     h = 0;
   }
   
   // Funktion mit Rückgabewert vom Typ double
   public double berechneVolumen(){
      volumen = pi*r*r*h/3;
      return volumen;
   }
   

}
Such dir ein Anfängertutorial. ;)
 

Schandro

Top Contributor
anweisungen wie
volumen = pi*r*r*h/3;
kannst du nicht an dieser stelle schreiben, die müssen immer in einer Methode/Konstruktor/... stehen. Da wo du es geschrieben hast dürfen nur variablendeklerationen wie z.b.
int i = 8;
stehen
 
S

SlaterB

Gast
> volumen = pi*r*r*h/3;

ist Code, den man nicht direkt in eine Klasse schreiben kann, sondern in eine Methode oder in einen Konstruktor gehört

> Abarbeitung der Klasse "Kegelobjekt".
& Co

klingt etwas merkwürdig, da man Ablauf eher mit Methoden verbindet,

es werden Objekte der Klassen angelegt, dabei natürlich auch Klassenattribute in diesen Objekten angelegt (r,h, volumen usw),
evtl. wird noch ein Konstruktor ausgeführt, nicht aber die ganze Klasse,
z.B. keine weiteren Methoden, falls vorhanden
 

Schandro

Top Contributor
übrigens wird bei
System.out.print(k1 +"\n" + k2 + "\n" + volumen);
nix gescheites rauskommen. Wenn du ein komplettes Object ausgeben willst, ruft Java die toString() Methode des objectes auf. Bei deinem Code wird die toString() methode aber nicht überschrieben. Wenn du in Kegelobjekt z.b. schreibst:

public String toString(){
return String.valueOf(this.volumen);
}

dann gehts

übrigens solltest du einen Konstruktor anlegen. Wie das geht steht in jedem Java Buch

PS:
"Abarbeitung der Klasse Kegelobjekt" ist in deinem Fall im Prinzip richtig, da du ja nur variablen deklarierst (außer die eine Anweiung am schluss...). Diese deklarationen werden tatsächlich in der Reihenfolge ihres Vorkommens abgearbeitet. Wenn dazwischen aber eine Methode steht, wird diese natürlich NICHT aufgerufen. Nur der entsprechende Konstruktor wird noch bei der Anweisung
new Kegelobjekt()
aufgerufen, da du aber keinen Konstruktor hast, hat der Compiler intern deine Klasse mit einem leeren Konstruktor ergänzt.
 

Majin_Clodan

Mitglied
Ahso ist das. :)

Ich fasse mal nach meiner Logik zusammen:

Man erstellt ein neues Objekt, welcher Teil einer anderen Klasse ist(bei der selben wäre es ja sinnlos). In dieser neuen Klasse laufen dann verschiedene Prozesse ab, wo es u.a. auch Methoden und Konstruktoren gibt. Ich kann hierbei nur Berechnungen in einem Konstruktor oder einer Methode machen und dessen Werte als Rückgabewerte definieren. Außerhalb davon kann ich aber nur Variablen initialisieren.
Nun zur ausgabe: Sagen wir mal, ich berechnete von der KlasseA die Werte:
WertB
WertC

Will ich nun diese Werte ausgeben oder diese sollen Teil einer Rechnung sein, muss man das folgende schreiben:
KlasseA.Methode/KonstruktorB
Es ist sozusagen eine Art Weg, wie man zu dem WertB kommen kann. Bei WertC würde es dann auch folgendermaßen aussehen:
KlasseA.Methode/KonstruktorC

Das einzigste, was jetzt noch konfus ist, sind die Konstruktoren und Methoden. Hierbei danke ich freak4fun für diese Seite. :applaus:
Bei dieser Seite steht jeweils, sofern ich das als Anfänger las, dass beide ein Objekt konstruieren bzw. ihm Werte übermitteln. Doch so weit ich das feststellte, gab es für mich als Anfänger keinen so großen Unterschied zwischen beiden. o_O Könnt ihr mir diesen nennen? Dann kann ich bestimmt auch nachvollziehen, wieso bei dem Java-Programm von freak4fun die Variablen r und h den Wert 0 bekommen. :)


MFG Majin_Clodan
 

Fu3L

Top Contributor
Ich hab zwar selbst erst vor einigen Monaten mit Java angefangen und hatte selbst auch die größten Probleme beim Thema Objektorientierte Programmierung, aber ich versuchs trotzdem mal zu erklären :wink:

Bei dieser Seite steht jeweils, sofern ich das als Anfänger las, dass beide ein Objekt konstruieren bzw. ihm Werte übermitteln. Doch so weit ich das feststellte, gab es für mich als Anfänger keinen so großen Unterschied zwischen beiden. o_O Könnt ihr mir diesen nennen? Dann kann ich bestimmt auch nachvollziehen, wieso bei dem Java-Programm von freak4fun die Variablen r und h den Wert 0 bekommen. icon_smile.gif

Du hast bei deinem Beispiel den Variablen erst nachträglich Werte zugewiesen:

Code:
k1.r = 2.4

Normalerweise würde man solche Zahlen dem Konstruktor übergeben, also etwas so:

Code:
class Objekt {

   public static void main(String[] arg) {
      float v1, v2; //<--- Was solln die da eigentlich?
      
    
      Kegelobjekt k1 = new Kegelobjekt(2.7f, 3.4f);

      
      
      Kegelobjekt k2 = new Kegelobjekt(3.1f, 2.4f);
	  
	  //Je eine Zeile mit dem jeweiligen Volumen ausgeben
	  System.out.println(k1.berechneVolumen());
	  System.out.println(k2.berechneVolumen());

	
   }
}




class Kegelobjekt {

	float r;
	float h;

	Kegelobjekt(float radius, float hoehe) {
		
		r = radius;
		h = hoehe;
	
	}
	
	float berechneVolumen() {
	
//Hier das Volumen mithilfe der Konstanten PI der Klasse Math berechnen
		float volumen = Math.PI*r*r*h/3;  
		
		return  volumen; 
	
	}
   
}

Damit steht für deinen Kegel direkt nach dem Erschaffen schon eine Höhe und ein Radius fest (r und h erhalten die Werte die dem Konstruktor beim Erzeugen des Objekts übergeben worden sind).

Möchtest du dann das Volumen ausgeben, rufst du die Methode berechneVolumen() für das jeweilige Objekt mit obj.methodenAufruf() auf (wie du das ja auch schon richtig geschrieben hast) und diese gibt dann einen float-wert zurück (deswegen:

Code:
float berechneVolumen() {

)

Edit: Ich les grad im Quelltext dashier:

// Klasse = bauplan; Instanz = Hergestelltes Objekt

Damit lässt sich der Konstruktor gut verbildlichen: Das was du dem Konstruktor nämlich übergibst, ist sozusagen das, was du von deinem speziellen Kegel unbedingt wissen musst, damit du den überhaupt erst bauen kannst...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
G Klassen und Objekte Java Basics - Anfänger-Themen 2
M Klassen und Objekte Java Basics - Anfänger-Themen 2
J Objekte und Abstrakte Klassen Java Basics - Anfänger-Themen 2
Orkanson Objekte und Klassen Java Basics - Anfänger-Themen 8
S Objekte mit gleichem Namen in unterschiedlichen Klassen Java Basics - Anfänger-Themen 3
Z OOP Objekte einer Klasse weiteren Klassen zur Verfügung stellen Java Basics - Anfänger-Themen 17
D Methoden Wie können Klassen auf Klassenfremde Objekte zugreifen? Java Basics - Anfänger-Themen 7
C Klassen/Objekte Verständnis Java Basics - Anfänger-Themen 8
Z Wie Objekte anderer Klassen ansprechen? Java Basics - Anfänger-Themen 2
K JUnit: Objekte von eigenen Klassen vergleichen...geht nicht Java Basics - Anfänger-Themen 5
T Klassen Referenzen auf Klassen / Objekte Java Basics - Anfänger-Themen 5
K Methoden Uhr als Übungsaufgabe Klassen/Objekte Java Basics - Anfänger-Themen 3
A OOP Klassen und Objekte - Diagramme Java Basics - Anfänger-Themen 2
K Best Practice In Klassen auf andere Objekte mit variablen Namen zugreifen Java Basics - Anfänger-Themen 6
A Objekte aus 2 Klassen mit compareTo() vergleichen Java Basics - Anfänger-Themen 7
V Objekte/Klassen erstellen - Erklärung anhand Beispiel Java Basics - Anfänger-Themen 4
D Klassen Klassen, Objekte, Konstruktor - einfach erklärt Java Basics - Anfänger-Themen 12
U Objekte in Array erstellen und Methode in verschiedenen klassen aufrufen Java Basics - Anfänger-Themen 5
S Vererbung Objekte in verwandten Klassen (Kovarianz, Polymorphie) Java Basics - Anfänger-Themen 4
B Objekte aus einer anderen Klasse(in der sich weitere Klassen befinden) erzeugen Java Basics - Anfänger-Themen 24
B Klassen und Objekte Java Basics - Anfänger-Themen 10
J Objekte und Klassen Java Basics - Anfänger-Themen 8
I Objekte an andere Klassen/Methoden übergeben? Java Basics - Anfänger-Themen 5
L Vererbung - Wie Objekte verschiedener Klassen unterscheiden Java Basics - Anfänger-Themen 3
T Klassen, Objekte, Methoden Java Basics - Anfänger-Themen 9
X Klassen & Objekte Java Basics - Anfänger-Themen 6
J Verständniss Frage zu Klassen, Objekte und Methoden Java Basics - Anfänger-Themen 8
J Objekte und Klassen? Java Basics - Anfänger-Themen 12
G Objekte von Klassen die erst zur Laufzeit bekannt sind erstellen Java Basics - Anfänger-Themen 6
B Uni (Klassen und Objekte) verwenden Java Basics - Anfänger-Themen 2
D Objekte und Klassen Java Basics - Anfänger-Themen 15
muchodrinko Auf Objekte anderer Klassen zugreifen? Java Basics - Anfänger-Themen 16
T Klassen und Objekte externer Aufruf. Java Basics - Anfänger-Themen 8
A Objekte von abstrakten Klassen? Java Basics - Anfänger-Themen 6
K Objekte/Klassen erweitern ~ Javascript Prototyp Java Basics - Anfänger-Themen 5
M Objekte zwischen Klassen "handeln" Java Basics - Anfänger-Themen 4
K Objekte erstellen, wenn der Klassen-Name als String vorliegt Java Basics - Anfänger-Themen 4
M Klassen und Objekte (kopieren) Java Basics - Anfänger-Themen 7
L Zusammenhang Methoden, Klassen, Objekte, static - sun doku Java Basics - Anfänger-Themen 4
K Programm in Klassen/Objekte zerlegen - wie? Java Basics - Anfänger-Themen 3
G Was sind Klassen, Objekte und Methoden? Java Basics - Anfänger-Themen 3
N Zugriff auf Objekte von fremden Klassen aus? Java Basics - Anfänger-Themen 4
M Klassen, Objekte, Konstruktor Java Basics - Anfänger-Themen 5
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
C Array von Klassen Java Basics - Anfänger-Themen 2
monsterherz 2 Klassen daher Probs mit dem Dateinamen Java Basics - Anfänger-Themen 9
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
D Klassen Klassen Kommunikation Java Basics - Anfänger-Themen 12
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
Speedrunner klassen aufrufen Java Basics - Anfänger-Themen 41
M Log4J (v2) nachträglich in allen Klassen hinzufügen Java Basics - Anfänger-Themen 9
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
W Wo ist der Wurm in meinem Grundverständnis von Klassen? Java Basics - Anfänger-Themen 22
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Z Mehtode bei Start des Programms ausführen (Klassen übergreifend) Java Basics - Anfänger-Themen 12
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
TimoN11 Java Klassen Global einbinden Java Basics - Anfänger-Themen 1
B Inventar als einzelne Klassen anlegen? Java Basics - Anfänger-Themen 12
G Java Klassen und Instanzmethoden Java Basics - Anfänger-Themen 15
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
S Klassen instanziieren und verwenden von Getter und Setter Java Basics - Anfänger-Themen 4
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
H Methoden in großen Klassen gruppieren oder auslagern? Java Basics - Anfänger-Themen 10
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
A Generischen Klassen Java Basics - Anfänger-Themen 8
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
J 2 klassen benutzen Java Basics - Anfänger-Themen 5
A Klassen und methoden Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben