[Java] Probleme mit Konstruktoren

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Lucky009, 16. Juni 2008 .

Schlagworte:
  1. 16. Juni 2008
    Probleme mit Konstruktoren

    Grüße an die Gemeinde,

    ich bin derzeit Abiturient und werde im Oktober anfangen, Informatik zu studieren. Im Augenblick erarbeite ich mir Java in Eigenregie. Zur Unterstützung gibt mir mein befreundeter Informatikstudent immer die Übungsserien der Uni, die die Studenten, die angefangen haben, lösen müssen.

    http://home.arcor.de/vwunkx23/aufgaben.pdf

    Bitte ein mal durchlesen. Ich beschäftige mich gerade mit dem Aufgabenblatt3, das ich schon größtenteils gelöst habe.

    http://home.arcor.de/vwunkx23/raidrush/GeoObj.html
    http://home.arcor.de/vwunkx23/raidrush/Punkt.html
    http://home.arcor.de/vwunkx23/raidrush/Kreis.html
    http://home.arcor.de/vwunkx23/raidrush/Rechteck.html
    http://home.arcor.de/vwunkx23/raidrush/Quadrat.html

    Mein Problem sind, wie gesagt, die in der Aufgabenstellung verlangten Konstruktoren. Die Nummer 2 (Aufgabenblatt3) habe ich, denke ich mal, richtig interpretiert. Aber bei den Konstruktoren in den abgeleiteten Klassen hapert es noch.

    Meine Frage ist jetzt, ob es entweder die Möglichkeit gibt, den vorhandenen Konstruktor individuell zu erweitern (das z.B. in der Klasse Kreis neben der ID, dem Punkt noch der Radius übergeben wird/in der Klasse Rechteck neben ID und Punkt die Seitenlänge a und b übergeben wird) oder ob es geht, in den abgeleiteten Klassen einen weiteren Konstruktor einzufügen, der dann die für die weiteren Berechnungen nötigen Werte beinhaltet.

    Bei meiner jetzigen Variante mit 2 Konstruktoren gibt mir aber Netbeans folgende Fehlermeldung aus.

    Muss ich dann den 2. Konstruktor auch noch mal in der Oberklasse schreiben?
    Das Hauptprogramm soll dann folgende Form haben:

    Mit dem Konstruktor möchte ich eben die nötigen Größen vorinitialisieren wenn ich ein Objekt von Kreis, Rechteck bzw. Quadrat instanziere. Wie wirds gemacht?


    mfg lucky
     
  2. 16. Juni 2008
    AW: Probleme mit Konstruktoren

    Kannst du vielleicht deine Klassendefinition (Punkt) als Anlage mit anfügen?

    Würde vielleicht mir und einigen anderen helfen.

    - - -
    tanya
     
  3. 16. Juni 2008
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Probleme mit Konstruktoren

    Jo kein Problem...
    hier also mal alle Quelldateien:

    No File | xup.in
    Download: DSC_4952.jpg | xup.in
    No File | xup.in
    No File | xup.in
    No File | xup.in
    No File | xup.in
     
  4. 17. Juni 2008
    AW: Probleme mit Konstruktoren

    Tipp:
    Verwende am besten sprechende Namen für deine Variablen. Du machst es dir einfacher! r z.B. ist so gut wie nicht aussagekräftig. Verwende doch einfach "radius".

    Abstrakte Klasse:
    Eine Abstrakte Klasse (bei dir GeoObj) kannst du nicht instanziieren, d.h. es muss eine Klasse geben (z.B. Kreis), die diese Klasse erweitert. Dabei musst du alle abstrakten Methoden der Abstrakten Klasse implementieren und kannst beliebige Konstruktoren und Funktionen erstellen.

    Beispiel:
    Klasse GeoObj:
    Code:
    public abstract class GeoObj {
     protected GeoObj(int id, Punkt M)
     {
     this.id=id;
     this.M=M;
     }
    }
    Klasse Kreis:
    Code:
    public class Kreis extends GeoObj {
     private int radius
    public Kreis(int id, Punkt M, int radius)
     {
     super(id,M);
     this.radius = radius;
     }
    }
    Du kannst nun in diesem Beispiel einen Kreis mit diesen 3 Parametern erstellen (obwohl GeoOjb nur 2 Parameter will). Dadurch, dass du dann super(id,M) aufrufst, wird auch der Konstruktor von GeoObj angesprochen, welcher allerdings nur 2 Parameter benötigt.

    Weiteres:
    • Du kannst keine Instanz von GeoObj erstellen. Was schon geht ist folgendes:
      Code:
      GeoObj geoObj = new Kreis( 1, new Punkt( 1,1 ), 10);
    • Wenn du folgendes schreibst:
      Code:
      Kreis b = new Kreis(r);
      dann hat dein Kreis ja gar keine Koordinaten.


    Konnte ich dir ein wenig weiterhelfen?

    - - -
    Tanya
     
  5. 17. Juni 2008
    AW: Probleme mit Konstruktoren

    ja!! war genau das richtige ;-) Bewertung ist schon mal raus.

    Ist es überhaupt möglich, dass in einer Klasse gleich 2 Konstruktoren existieren? Oder kann man eben nur einen Konstruktor haben und den dann beliebig erweitern?
     
  6. 17. Juni 2008
    AW: Probleme mit Konstruktoren

    Konstruktorenanzahl:

    Du kannst beliebig viele Konstruktoren haben. Dabei sollte nur immer eindeutig sein, welcher Konstruktor angesprochen werden soll.

    D.h. folgende 2 Konstruktoren würden in einer Klasse nicht gehen:
    Code:
    public MeineKlasse(int id)
    {
     //mache dies
    }
    public MeineKlasse(int bezeichner)
    { 
     //mache das 
    }
    Funktionstüchtiges Beispiel:
    Code:
    public Kreis( int radius, Punkt M )
    {
     // blabla
    }
    pulbic Kreis( Kreis alterKreis )
    {
     // meine attribute = alterKreise-seine-Attribute
    }
    
    Das ganze wird auch Überladen von Funktionen/Konstruktoren genannt (geht bei Funktionen genauso).


    - - -
    Tanya
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.