[Java] Problem z referencją


(zaku) #1

Witam!

Mam problem z konstruktorami w klasie Trojkat, a przez to i w klasie głównej. Kompilator wyrzuca "constructor Wspolrzedne in class Wspolrzene cannot be applied to given types"

Klasa główna

/*

1. Prosze utworzyc klase umozliwiajaca przechowanie informacji o punkcie na plaszczyznie. 

Prosze utworzyc odpowiedznie konstruktory. Zachowac hermetyzacje danych


2. Prosze utworzyc klase trojkat zawierajaca trzy punkty(obiekty klasy wczesniejszej) uwzwglednic 

kapsulkowanie pol.Prosze utworzyc metode wyliczajaca obwod, trojkata, oraz metode wyswietlajaca dane

 */

package punkty;


public class Punkty {


    public static void main(String[] args) {

       Trojkat tr = new Trojkat();

       tr.bok1.setX(2);

       tr.bok1.setY(2);

       tr.bok2.setX(1);

       tr.bok2.setY(3);

       tr.bok3.setX(4);

       tr.bok3.setY(5);

       tr.ShowInfo();

    }

}

Klasa Wspołrzędne

package punkty;


public class Wspolrzedne {

    private double x;

    private double y;


    public double getX()

    {

        return x;

    }

    public double getY ()

    {

        return y;

    }

    public void setX(double x)

    {

        this.x=x;

    }

    public void setY (double y)

    {

        this.y=y;

    }


    public Wspolrzedne (double x, double y)

    {

        this.x=x;

        this.y=y;

    }

}

Klasa Trojkat

package punkty;


public class Trojkat /* extends Wspolrzedne */ {


    public double bokA;

    public double bokB;

    public double bokC;


    Wspolrzedne bok1 = new Wspolrzedne();

    Wspolrzedne bok2 = new Wspolrzedne();

    Wspolrzedne bok3 = new Wspolrzedne();


    public double obw ()

    {

        bokA = Math.sqrt(Math.pow (bok2.getX()- bok1.getX(),2) + Math.pow (bok2.getX()- bok1.getX(),2));

        bokB = Math.sqrt(Math.pow (bok3.getX()- bok2.getX(),2) + Math.pow (bok3.getX()- bok2.getX(),2));

        bokC = Math.sqrt(Math.pow (bok1.getX()- bok3.getX(),2) + Math.pow (bok1.getX()- bok3.getX(),2));

        return bokA+bokB+bokC;

    }

    public void ShowInfo ()

    {

        System.out.println("A = "+bok1.getX()+" "+bok1.getY());

        System.out.println("B = "+bok2.getX()+" "+bok2.getY());

        System.out.println("C = "+bok3.getX()+" "+bok3.getY());

    }

}

PS. Miałem zastosować w tym programie jeszcze dziedziczenie, ale nie wiem jak i po co.


(Frankfurterium) #2

Stworzyłeś konstruktor przyjmujący dwa argumenty, a wywołujesz bezparametrowy, którego po prostu nie masz.


(zaku) #3

Ok to już w miarę rozumiem, ale do czego mam się odwołać?


(Frankfurterium) #4

Stwórz konstruktor bezparametrowy, choćby

Wspolrzedne() {


}

i / lub wyrzuć konstruktor z parametrami

public Wspolrzedne (double x, double y)

    {

        this.x=x;

        this.y=y;

    }

(nnick) #5

Dopisz do klasy Wspolrzedne konstruktor bezparametrowy.

Masz w komentarzu klasy trójkąt jak się robi dziedziczenie, przy czym ono w tym momencie jest bez sensu. Stwórz klasę Ksztalt z kilkoma funkcjami abstrakcyjnymi a następnie zaimplementuj je w klasach dziedziczących - np. Trojkat.