Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » formale Sprachen » Bei Java Konstruktor in einem andern Konstruktor verwenden » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): [1] 2 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Bei Java Konstruktor in einem andern Konstruktor verwenden
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Lycaner
Eroberer


Dabei seit: 17.02.2013
Beiträge: 56

Bei Java Konstruktor in einem andern Konstruktor verwenden Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich muss ein Programm in Java schreiben, bei dem ich ein Konstruktor selber schreibe und später habe ich eine zweite Klasse, wo ich ein neune Konstruktor schreiben muss. Bei dem neuen muss ich den alten auch verwenden und ich weiß nicht wie das gehen soll.

z.B.

public class persönlicheDaten{

public PersönlicheDaten(String vorname, String nachname){
this.vorname=vorname;
this.nachname=nachname;
}
.............
......
...
}
/**************andere Klasse**********/
public class persönlicheDatensatz{

public persönlicheDatensatz(PersönlicheDaten(), int gebTag, int gebMonat, int gebJahr){
this.PersönlicheDaten=PersönlicheDaten;
this.gebTag=gebTag;
this.gebMonat=gebMonat;
this.gebJahr=geb.Jahr;
}
..........


Wie muss man es richtig schreiben?
28.03.2013 08:32 Lycaner ist offline Beiträge von Lycaner suchen Nehmen Sie Lycaner in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ist zwar C#, sollte aber so oder sehr ähnlich auch in Java funktionieren:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
    public class persoenlicheDaten
    {
        public string vorname, nachname;
        public persoenlicheDaten(string vorname, string nachname)
        {
            this.vorname = vorname;
            this.nachname = nachname;
        }
    }

    public class persoenlicherDatensatz
    {
        public persoenlicheDaten per;
        public int gebTag, gebMonat, gebJahr;
        public persoenlicherDatensatz(persoenlicheDaten per, int gebTag, int gebMonat, int gebJahr)
        {
            this.per = per;
            this.gebTag = gebTag;
            this.gebMonat = gebMonat;
            this.gebJahr = gebJahr;
        }

        public persoenlicherDatensatz(string vorname, string nachname, int gebTag, int gebMonat, int gebJahr)
        {
            this.per = new persoenlicheDaten(vorname,nachname);
            this.gebTag = gebTag;
            this.gebMonat = gebMonat;
            this.gebJahr = gebJahr;
        }
    }

//Und der Aufruf:
persoenlicheDaten pd = new persoenlicheDaten("Hans", "Meier");
persoenlicherDatensatz pds = new persoenlicherDatensatz(pd, 1, 1, 1970);
//bzw. mit anderem Konstruktor:
persoenlicherDatensatz pds = new persoenlicherDatensatz("Hans", "Meier", 1, 1, 1970);


__________________
Syntax Highlighting fürs Board (Link)
28.03.2013 09:37 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Lycaner
Eroberer


Dabei seit: 17.02.2013
Beiträge: 56

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

13: public persoenlicheDaten per;
14:public int gebTag, gebMonat, gebJahr;

Was sollen diese Zeilen bedeuten?
Ich dachte erst, dass die Zeile 13 die Methode aufruft aber die heißt anders.
Und wenn man du in Zeile 14 die Variabel mit dem Typ (int) deklarierst, ist das dann nicht doppelt weil in Zeile 15 wird das noch mal gemacht.
Ist ab Zeile 23, das zweite Beispiel , wie man es machen kann?
28.03.2013 11:40 Lycaner ist offline Beiträge von Lycaner suchen Nehmen Sie Lycaner in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

In Zeile 13/14 sind die in der Klasse verwendeten Variablen.

In Zeile 15-21 ist ein Konstruktor, der die Klasse persoenlicheDaten übergeben bekommt.
Aufruf ist in Zeile 33/34.

In Zeile 23-30 ist ein anderen Konstruktor, der statt persoenlicheDaten zwei strings annimmt und diese dann selbst (Zeile 25) in persoenlicheDaten umwandelt.
Aufruf dazu in Zeile 36

Und ich habe keine Variable doppelt deklariert:
In Zeile 13/14 (übrigens auch in Zeile 3) sind die nach außen sichtbaren Variablen, die man abfragen/ändern kann, z.B. mit:
string vor = pds.per.vorname;
Innerhalb der Klasse wird mit this.Variablenname darauf zugegriffen.
Mit this.gebTag = gebTag; sage ich also, dass das nach außen Sichtbare den übergebenen Wert annimmt.

__________________
Syntax Highlighting fürs Board (Link)
28.03.2013 11:56 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Lycaner
Eroberer


Dabei seit: 17.02.2013
Beiträge: 56

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ok danke.

Kannst du mir vielleicht sagen, wie ich die Felder abrufen/fühlen kann, wenn ich ein Datenfeld mit persoenlicherDatensatz erzeug habe.
z.B.
persoenlicherDatensatz Datenfeld[]=new persoenlicherDatensatz[10];

Muss ich dann sowas schreiben wie:
Datenfeld[0]=new Datenfeld("Hans", "Meier", 1, 1, 1970);
28.03.2013 13:27 Lycaner ist offline Beiträge von Lycaner suchen Nehmen Sie Lycaner in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

nicht ganz:
code:
1:
2:
persoenlicherDatensatz[] Datenfeld = new persoenlicherDatensatz[10];
Datenfeld[0] = new persoenlicherDatensatz("Hans", "Meier", 1, 1, 1970);


Datenfeld ist ja aus der Klasse persoenlicherDatensatz. Außerdem hast du beim Initialisieren das Arrays die eckigen Klammern falsch platziert.

__________________
Syntax Highlighting fürs Board (Link)
28.03.2013 13:50 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Lycaner
Eroberer


Dabei seit: 17.02.2013
Beiträge: 56

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Bei mir funktioniert das irgendwie nicht. Kommt immer ein Fehler.

cannot find symbol
28.03.2013 17:07 Lycaner ist offline Beiträge von Lycaner suchen Nehmen Sie Lycaner in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Um das ganze unter Java zum Laufen zu bringen, musste ich string zu String machen, also groß schreiben, ansonsten sollte das alles passen, bei mir läuft es zumindest.
In welcher Zeile tritt der Fehler denn bei dir auf?

__________________
Syntax Highlighting fürs Board (Link)
28.03.2013 22:39 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Lycaner
Eroberer


Dabei seit: 17.02.2013
Beiträge: 56

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

public class Test5 {


public static void main(String[] args) {

1: Test7[] datenfeld= new Test7[10];

2: datenfeld[1] = new Test7("Hans", "Meier", 1, 1, 1970);

}

Also in dem Hauptprogramm tritt der Fehler auf(Zeile 1 und Zeile 2).
Ich habe ein neues Projekt angelegt und das rein kopiert, was du geschrieben hast. Ich wollt das Programm nicht verunstalte und mehr kaputt mache als es schon so ist. Deswegen habe ich die Klassen umbenannt. In den Klassen zeigt mir kein Fehler an. Aber in der Hauptklasse funktioniert nichts.

C war in der Hinsicht viel leichter, wo man alles in ein Fenster schreiben konnte(
29.03.2013 00:05 Lycaner ist offline Beiträge von Lycaner suchen Nehmen Sie Lycaner in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Eine Ferndiagnose ist schwer.
Hast du
- Die Namen der Klassen auch nicht vertauscht
- Das richtige Package zugewiesen
- Für jede Klasse ein eigenes .java-File erstellt

Hier noch ein Screenshot, wie es bei mir aussieht:

eulerscheZahl hat dieses Bild (verkleinerte Version) angehängt:
java_Konstruktor.png



__________________
Syntax Highlighting fürs Board (Link)
29.03.2013 09:25 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Lycaner
Eroberer


Dabei seit: 17.02.2013
Beiträge: 56

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Erst mal, danke für deine Mühe.

Ich habe genauso abgetippt und das hat nur funktioniert, als ich den zweiten Konstruktor eingefügt habe.

Leider steht in der Aufgabenstellung, dass man den ersten Konstruktor verwenden soll. Und wenn ich das mache, kann ich kein Array erzeugen( zu minderst da taucht der erster Fehler auf(
29.03.2013 10:43 Lycaner ist offline Beiträge von Lycaner suchen Nehmen Sie Lycaner in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

meinst du so?
Datenfeld[0] = new persoenlicherDatensatz(new persoenlicheDaten("Hans", "Meier"), 1, 1, 1970);

falls nein, bitte ich um den genauen Wortlaut der Aufgabe, weil ich immer noch nicht weiß, was du vorhast.

__________________
Syntax Highlighting fürs Board (Link)
29.03.2013 11:06 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Lycaner
Eroberer


Dabei seit: 17.02.2013
Beiträge: 56

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Aufgabe 2b.
Entwerfen Sie einen geeigneten Konstruktor, der alle persönlichen Daten und Datensatz eines Fussbalspielers als Parameter erhält.

Unter den persönlichen Daten habe ich 7 Attribute und im dem Datensatz kommen 6 weiter Attribute hinzu.
Deswegen wollte ich den ersten Konstruktor verwenden, weil dann das Programm viel kürzer wird.
30.03.2013 16:54 Lycaner ist offline Beiträge von Lycaner suchen Nehmen Sie Lycaner in Ihre Freundesliste auf
Lycaner
Eroberer


Dabei seit: 17.02.2013
Beiträge: 56

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Aufgabe 2c.
Die Methode zeigeSpielerdaten() soll alle persönlichen und Spielerdaten
anzeigen. Zur Anzeige der persönlichen Daten soll die Methode zeigeDaten
der Klasse PersoenlicheDaten aufgerufen werden.

Die Methode zeigeDaten habe ich programmiert und dann wollte ich diese Methode in der Methode PersönlicheDaten abrufen aber es kommt immer ein Fehler vor, obwohl ich den abruf einige Programm im Internet gesehen habe(

public void zeigeDaten() {
System.out.println("Vorname und Nachname: "+vorname+" "+nachname);
}


public void zeigeSpielerdaten() {
System.out.println(zeigeDate per()); diese Zeile wird rot unterstrichen(
System.out.println("");
}

Die zweite Methode steht in der anderen Klasse als die erste Methode.
30.03.2013 17:27 Lycaner ist offline Beiträge von Lycaner suchen Nehmen Sie Lycaner in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Versuche mal per.zeigeDaten();
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
package meinPaket;
public class main {
	public static void main(String[] args) {
		persoenlicherDatensatz[] Datenfeld = new persoenlicherDatensatz[10];
		Datenfeld[0] = new persoenlicherDatensatz(new persoenlicheDaten("Hans", "Meier"), 1, 1, 1970);
		Datenfeld[0].zeigeDatensatz();
	}

}


package meinPaket;
public class persoenlicheDaten {
    public String vorname, nachname;
    public persoenlicheDaten(String vorname, String nachname)
    {
        this.vorname = vorname;
        this.nachname = nachname;
    }
    
    public void zeigeDaten(){
    	System.out.println("Vorname und Nachname: "+vorname+" "+nachname);	
    }
}


package meinPaket;
public class persoenlicherDatensatz {
    public persoenlicheDaten per;
    public int gebTag, gebMonat, gebJahr;
    public persoenlicherDatensatz(persoenlicheDaten per, int gebTag, int gebMonat, int gebJahr)
    {
        this.per = per;
        this.gebTag = gebTag;
        this.gebMonat = gebMonat;
        this.gebJahr = gebJahr;
    }

    public persoenlicherDatensatz(String vorname, String nachname, int gebTag, int gebMonat, int gebJahr)
    {
        this.per = new persoenlicheDaten(vorname,nachname);
        this.gebTag = gebTag;
        this.gebMonat = gebMonat;
        this.gebJahr = gebJahr;
    }
    
    public void zeigeDatensatz(){
    	per.zeigeDaten();
    }
}


__________________
Syntax Highlighting fürs Board (Link)
30.03.2013 17:54 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Seiten (2): [1] 2 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » formale Sprachen » Bei Java Konstruktor in einem andern Konstruktor verwenden