Objektorientiertes Programmieren

Status
Nicht offen für weitere Antworten.
S

SGAdler

Gast
Morgen,

wir haben vor kurzem mit dem objektorientierten Programmieren begonnen und dazu hätte ich mal ein paar Fragen:

1. Ich habe im Editor eine Übungsaufgabe geöffnet, wo die main() fehlt. Wie kann das sein? Wenn ich das Programm starten will, dann funktioniert es auch nicht ..

2. Wie kann es sein, dass es zwei Methoden mit gleichem Namen gibt?

3. Was ist eine Methodensignatur?

Fragen über Frage.. und nur ihr kennt die Antworten. :lol:
 

Wildcard

Top Contributor
1. Nur Programme mit einer main Methode lassen sich ausführen. Das bedeutet aber nicht das jede Klasse eine main braucht. Die main ist nur der Einstiegspunkt.

2. Wenn deren Methodensignatur unterschiedlich ist, ist das kein Problem.

3- Die Kombination aus Methodenname und Parameterlist nennt man die Signatur.
 

JFeel-x

Mitglied
Mittag,

Warum liest eigentlich keiner die [Wichtig!]Threads?
Da steht, wir machen keine Hausaufgaben! :meld:

Aber ich bin auch nicht grade Meister,... :D

1.: Also, ein JavaProgramm wird normalerweise (Applets sind was anderes) durch eine static void main(String args) gestartet, die erkennt der compiler und legt los...

2.: Wenn mehrere Methoden den gleichen namen haben, dann nennt man sie überladen, sie unterscheiden sich aber immer entweder durch Parameter oder Returntyp.

3.: Du hast bestimmt google, wenn nicht, dann sieh einfach im Tutorial-Thread dieses Forums nach...

Es kann sein, dass du 2 nicht verstehst, das kommt später, mach erstmal ein (paar) Tutorials

EDIT: Sorry, zu spät
 

Wildcard

Top Contributor
Ich back mir nen Kakao hat gesagt.:
2.: Wenn mehrere Methoden den gleichen namen haben, dann nennt man sie überladen, sie unterscheiden sich aber immer entweder durch Parameter oder Returntyp.
Nope. Der returntyp hat damit nichts zu tun.
 

JFeel-x

Mitglied
Aber man kann doch auch
Code:
int max(int a,int b){
if(a<b)return b;
return a;
}
und
Code:
void max(int a,int b){
if(a<b)System.out.println(b);
else   System.out.println(a);
}

schreiben?
 
S

SGAdler

Gast
Danke erstmal. :)

Wenn ich das richtig verstanden hab, dann brauche ich eine Klasse mit der Methode main(), damit mein Programm läuft?
Muss diese Klasse den gleichen Namen haben, wie die Klasse meines Programms ohne main?
 

JFeel-x

Mitglied
Nein, die main kommt in deine Klasse rein

z. Bsp so:

Code:
class deineKlasse{
public static void main(String[] args){
//.
//.
// .
}
}
 

CiD

Mitglied
Ich back mir nen Kakao hat gesagt.:
Aber man kann doch auch
Code:
int max(int a,int b){
if(a<b)return b;
return a;
}
und
Code:
void max(int a,int b){
if(a<b)System.out.println(b);
else   System.out.println(a);
}

schreiben?

Nein kann man nicht, jedenfalls nicht in der gleichen Klasse ! Das Resultat ist ein Compilerfehler ala "Duplicate method max(int, int) in type ...." ;)
 
S

SGAdler

Gast
Ich back mir nen Kakao hat gesagt.:
Nein, die main kommt in deine Klasse rein

Code:
public class Vektor3D {
//- Wieso hat diese Klasse kein main()?

Also ist es beabsichtigt, dass hier keine main zu finden ist. Daher wäre es wohl falsch, sie hier reinzuschreiben, oder?
 

CiD

Mitglied
Es kommt darauf an ob du diese Klasse ausführen möchtest oder eben nicht ;)
Wenn du dein Programm mit dieser Klasse startest dann sollte sie eine main() enthalten bzw. verpasst bekommen sonnt startet eben dein Programm nicht.

Ob es nun beabsichtigt ist das diese Klasse keine main() besitzt kann ich von hier aus nicht sagen, dein Programmcode der Übungsaufgabe würde mehr helfen ;)
 
S

SGAdler

Gast
Code:
public class Vektor3D {
//- Wieso hat diese Klasse kein main()?
//- erklären der Datentypen!
 private double x;
 private double y;
 private double z;
 private double betrag;
 private boolean einheitsvektor; //- wieso ist es sinnvoll einen boolean Wert zu nehmen?
 
 //- Was ist das Besondere an dieser Methode?
 //- Was macht sie?
 //- Was bedeutet this?

 public Vektor3D(){
   this.x = 0.0;
   this.y = 0.0;
   this.z = 0.0;
   this.betrag = 0.0;
   this.einheitsvektor = false; //- Wieso mit Falsch belegen?
 }

//- Wie kann es sein, dass es zwei Methoden mit gleichem Namen gibt?
  public Vektor3D(double x, double y, double z){
   this.x = x;
   this.y = y;
   this.z = z;
   this.betrag = 0.0;
   this.einheitsvektor = false;
 }

//- was bedeuten die einzelnen Wörter in der Methodensignatur?
 public void einlesen(){
    System.out.println("Hallo, ich bin ein Vektor! ");
    System.out.println("x-Komponente eingeben: ");
    x = Keyboard.readDouble();
    System.out.println("y-Komponente eingeben: ");
    y = Keyboard.readDouble();
    System.out.println("z-Komponente eingeben: ");
    z = Keyboard.readDouble();
 }
 public void ausgeben(){
    System.out.println("Hallo, ich bin ein Vektor");
    System.out.println("x-Komponente: " + x); //- was macht das +?
    System.out.println("y-Komponente: " + y);
    System.out.println("z-Komponente: " + z);
 }
 
 public void berechneBetrag(){
    betrag = Math.sqrt(x*x + y*y + z*z); //- Was ist Math.?
    if(betrag == 1.0){ //- zwei Gleichheitszeichen?
      einheitsvektor = true;
    }
 }
 
 public double holeBetrag(){
   return betrag; //- was macht das return?
 }
 
 public boolean istEinheitsvektor(){
   return einheitsvektor; //- Kann jeder Datentyp mit return übergeben werden?
 }
}
 

CiD

Mitglied
Schöne Hausaufgabe :lol:

Warum hat die Klasse keine main() ? Weil von der Klasse Instanzen gebildet werden um ihre Methoden zu verwenden, sie selbst wird nicht ausgeführt bzw. gestartet im sinne von "anklick->Programmstart".

Den Rest kannst du dir doch aus >>> LINK <<< erlesen, dort ist vieles echt gut erklärt, ich selbst nutze es zum lernen, habs mir sogar gekauft ;)
 
S

SGAdler

Gast
Nochmal eine Frage zu der von mir geposteten Klasse:

Dort gibt es ja zwei Methoden mit dem gleichen Namen (Vektor3D()).
Mir ist schon klar, dass sie sich in ihrer Signatur unterscheiden, aber was ist jetzt der Unterschied in der Ausführung der Methoden?
Wäre nett, wenn mir das noch jemand erklären könnte. :)
 
G

Gast

Gast
Dazu noch ein anderes Beispiel:

Code:
class Kreis {
 double r;
 Kreis(){
   setzeR(1.0);
}
Kreis(double r){
  setzeR(r);
}

Was ist in diesen Methoden der entscheidende Unterschied?
 

tfa

Top Contributor
Was meinst du? Es wird jeweils das ausgeführt, was zwischen dem { und dem } steht, und wenn da was verschiedenes steht, wird auch was unterschiedliches ausgeführt.
 
G

Guest

Gast
Code:
public Vektor3D(){
   this.x = 0.0;
   this.y = 0.0;
   this.z = 0.0;
   this.betrag = 0.0;
   this.einheitsvektor = false;

Was macht denn zum Beispiel diese Methode?
 

Murray

Top Contributor
Diese Methode ist der Standardkonstruktor der Klasse Vektor3D und initialisiert diverse Membervariablen; dieser Konstruktor wird immer dann durchlaufen, wenn irgendwo mit new Vektor3D() eine Instanz dieser Klasse erzeugt wird.
 
S

SGAdler

Gast
Ah, soweit so gut. Danke. :)

Aber was ist, wenn es so aussieht:

Code:
public Vektor3D(){
   this.x = 0.0;
   this.y = 0.0;
   this.z = 0.0;
   this.betrag = 0.0;
   this.einheitsvektor = false; //- Wieso mit Falsch belegen?
}

//- Wie kann es sein, dass es zwei Methoden mit gleichem Namen gibt?
  public Vektor3D(double x, double y, double z){
   this.x = x;
   this.y = y;
   this.z = z;
   this.betrag = 0.0;
   this.einheitsvektor = false;

Wenn jetzt irgendwo eine Instanz der Klasse Vektor3D gebildet wird, welche Konstruktor wird dann durchlaufen?
 

Templon

Bekanntes Mitglied
Kommt darauf an, wie du die Instanz erzeugst.

mit "new Vector3D()" wird der obere aufgerufen.
mit "new Vector3D(x,y,z)" wird der untere aufgerufen.
 

CiD

Mitglied
Hallo,
Code:
public Vektor3D(){
   this.x = 0.0;
   this.y = 0.0;
   this.z = 0.0;
   this.betrag = 0.0;
   this.einheitsvektor = false;
}

public Vektor3D(double x, double y, double z){
   this.x = x;
   this.y = y;
   this.z = z;
   this.betrag = 0.0;
   this.einheitsvektor = false;
}

Diese 2 Konstrukte sind keine Methoden in dem sinne, es sind Konstruktoren dieser Klasse. Mit deren hilfe eine Instanz dieser Klasse gebildet werden kann. Der erstere Konstruktor ("Vektor3D()") ist der Standardkonstruktor, was er bewirkt steht im Konstruktorblock, nämlich alle Instanzvariablen auf einen Standardwert setzten. Der 2. Konstuktor bietet die Möglichkeit beim Instanzieren des Objektes, individuelle Werte mitzugeben. Bei der Verwendung dieses Konstruktor MUSS man alle Parameter mitgeben !

Jedes Objekt hat von Haus aus einen Standardkonstruktor der nicht unbedingt im Klassencode aufgeführt werden muss.
Dieser sieht so aus (speziell für die Klasse "Vektor3D"):
Code:
public Vektor3D(){
   super();
}
Dieser Konstruktor wird automatisch von der VM angelegt und zur verfügung gestellt, weshalb es eben nicht nötig ist ihn selbst zu deklarieren.

Weiteres kannst du hier unter Konstruktoren nachlesen ;)


mist zu lang gebraucht ^^
 

tfa

Top Contributor
Man sollte noch erwähnen, dass hier Konstruktor-Verkettung angebracht wäre:

Code:
public Vektor3D(){
    this(0.0, 0.0, 0.0);
}

public Vektor3D(double x, double y, double z){
   this.x = x;
   this.y = y;
   this.z = z;
   this.betrag = 0.0;
   this.einheitsvektor = false;
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
H Objektorientiertes Programmieren Java Basics - Anfänger-Themen 4
T objektorientiertes Programmieren Java Basics - Anfänger-Themen 16
F Objektorientiertes Programmieren Java Basics - Anfänger-Themen 6
StupidAttack Objektorientiertes Gui Java Basics - Anfänger-Themen 9
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
laxla123 Rechteck programmieren Java Basics - Anfänger-Themen 4
A Erste Schritte Dynamische Stempel im PDF Exchange programmieren Java Basics - Anfänger-Themen 0
D Programmieren nach UML Java Basics - Anfänger-Themen 2
Y Taschenrechner programmieren Java Basics - Anfänger-Themen 3
B Überweisung programmieren Java Basics - Anfänger-Themen 7
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
D Ampel Programmieren die jede 10 sekunden ihre farbe wechselt Java Basics - Anfänger-Themen 6
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
thor_norsk Fernseher programmieren mit Java Java Basics - Anfänger-Themen 4
M Jenga Regeln Java Programmieren Java Basics - Anfänger-Themen 1
M Ressourcensparend programmieren Java Basics - Anfänger-Themen 3
brypa Wie Programmieren lernen? Java Basics - Anfänger-Themen 15
G Spielerwechsel programmieren Java Basics - Anfänger-Themen 1
J Solitär (Brettspiel) programmieren Java Basics - Anfänger-Themen 3
K 12- Stunden Konverter Programmieren Java Basics - Anfänger-Themen 1
WAB9703-04 Programm zum automatischen Ausfüllen von Formularen programmieren Java Basics - Anfänger-Themen 3
L Zahlenspiel programmieren Java Basics - Anfänger-Themen 1
TimoN11 Automat programmieren Java Basics - Anfänger-Themen 4
G Erste Schritte Array Mittelwert Methode Programmieren Java Basics - Anfänger-Themen 5
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
N Ufospiel programmieren Java Basics - Anfänger-Themen 13
KogoroMori21 Vorbereitung auf die Programmieren Klausur vom ersten Semester Java Basics - Anfänger-Themen 4
Drinkerbell Erste Schritte Zu blöd zum Programmieren? Java Basics - Anfänger-Themen 9
G Stack programmieren Java Basics - Anfänger-Themen 6
I Brauche Hilfe bei Objektorientiertem programmieren Java Basics - Anfänger-Themen 23
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
G Bruchrechner programmieren Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
D Schachbrett (8x8) programmieren Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
J Hilfe beim Programmieren Java Basics - Anfänger-Themen 5
S Kreisberechnung3 Buch: Programmieren lernen mit Java von Hans-Peter Habelitz Java Basics - Anfänger-Themen 39
M Quiz in Java programmieren mit Array Java Basics - Anfänger-Themen 8
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
K Java programmieren Java Basics - Anfänger-Themen 6
V_Fynn03 Kontrolle des Quelltextes (Bank programmieren)(GUI) Java Basics - Anfänger-Themen 6
D Was tun gegen zu komplzierten Denken beim Programmieren Java Basics - Anfänger-Themen 27
V_Fynn03 Bruchrechner programmieren (2 Klassen) Java Basics - Anfänger-Themen 9
N Ticketautomat programmieren Java Basics - Anfänger-Themen 63
M Rechner programmieren Java Basics - Anfänger-Themen 3
V_Fynn03 Java Bruchrechner programmieren Java Basics - Anfänger-Themen 13
J Java Suchfunktion Programmieren Java Basics - Anfänger-Themen 1
L Erste Schritte Bin ich "zu dumm" oder nicht geeignet zum Programmieren? Java Basics - Anfänger-Themen 3
U Ist jemad gut in programmieren (JAVA) und kann mir helfen? Java Basics - Anfänger-Themen 1
H Uhr programmieren Java Basics - Anfänger-Themen 10
T Schalter programmieren Java Basics - Anfänger-Themen 17
S Ampel Programmieren Java Basics - Anfänger-Themen 5
P Erste Schritte Probleme mit dem Programmieren Java Basics - Anfänger-Themen 12
D Richtig für Programmieren an der UNI lernen Java Basics - Anfänger-Themen 8
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
D Beim Programmieren auf die Logisch einfache Lösung kommen. Java Basics - Anfänger-Themen 17
B UML Klassen Diagramm zu Java Code Programmieren und ausführen Java Basics - Anfänger-Themen 21
steven789hjk543 Kann man mit Java und Eclipse einen Virus programmieren? Java Basics - Anfänger-Themen 13
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
A Kalender programmieren, ich finde meinen Fehler nicht. Java Basics - Anfänger-Themen 9
S Erste Schritte Hilfe beim lernen von Programmieren Java Basics - Anfänger-Themen 2
V Zeichenkette programmieren Java Basics - Anfänger-Themen 20
O Fenster programmieren Java Basics - Anfänger-Themen 2
R Uebersichtlicher bzw. besser Programmieren Java Basics - Anfänger-Themen 13
N Dynamisches Programmieren/Fibonacci Java Basics - Anfänger-Themen 1
B Spielfiguren für ein Beute-Jägerspiel programmieren Java Basics - Anfänger-Themen 12
A Programmieren lernen Java Basics - Anfänger-Themen 28
F ArrayListe manuell programmieren? Java Basics - Anfänger-Themen 24
X Erste Schritte Einstieg ins Programmieren Java Java Basics - Anfänger-Themen 2
O Erste Schritte ln(1+x) Reihe Programmieren Java Basics - Anfänger-Themen 6
Ellachen55 Weihnachtsbaum in Eclipse programmieren Java Basics - Anfänger-Themen 6
L Klassen Geldrückgabe - Aufgabe Programmieren Java Basics - Anfänger-Themen 23
H Stern Dreieck (Buch: Grundkurs Programmieren) Java Basics - Anfänger-Themen 2
V Variablen Vorkommen programmieren Java Basics - Anfänger-Themen 18
S Dreieckssignal programmieren Java Basics - Anfänger-Themen 5
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
M Spiel programmieren Java Basics - Anfänger-Themen 16
A Fenster programmieren Java Basics - Anfänger-Themen 1
V OOP Kassensystem objektorientiert programmieren Java Basics - Anfänger-Themen 15
A Erste Schritte DoodleJump programmieren: Kollisionsabfrage Java Basics - Anfänger-Themen 4
CT9288 Kleine Simulation programmieren, denkanstöße erbeten Java Basics - Anfänger-Themen 19
H Welche IDE zum Buch "Programmieren mit Java" von Reinhard Schiedermeier des Verlags Pearson Studium Java Basics - Anfänger-Themen 19
D Könnt ihr mir helfen beim Programmieren eines Ping Pong Spieles? Java Basics - Anfänger-Themen 9
M Rekursive Methode Programmieren Java Basics - Anfänger-Themen 3
I Spielbrett programmieren: Datenstruktur Java Basics - Anfänger-Themen 3
G Rekursives Programmieren --> harmonische Reihe Java Basics - Anfänger-Themen 3
A Endlich anfangen mit Programmieren ! Java Basics - Anfänger-Themen 8
L Karawane programmieren Java Basics - Anfänger-Themen 0
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
E Mastermind programmieren, wie den falschen Platz aber richtige Farbe schecken? Java Basics - Anfänger-Themen 23
steven789hjk543 Erste Schritte java programmieren/ Schritt für Schritt Java Basics - Anfänger-Themen 14
I Spiel programmieren. Java Basics - Anfänger-Themen 16
H [Studium] Mäxchenspiel programmieren Java Basics - Anfänger-Themen 10
C BlueJ Zahlenschloss programmieren Java Basics - Anfänger-Themen 5
steven789hjk543 mit dem Smartphone java programmieren Java Basics - Anfänger-Themen 44
F Okjektorientiert programmieren Java Basics - Anfänger-Themen 2
S OOP Ticketsystem programmieren Java Basics - Anfänger-Themen 6
P Selber Programmieren lernen oder Uni? Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben