Dziedziczenie, konstruktory java

0

Witam.
Mam do zrobienia zadanie:

Zdefiniuj klasę Punkt o polach prywatnych x, y typu całkowitego i metodach publicznych:
• konstruktor bez parametrów, który umożliwia utworzenie punktu o współrzędnych
(1,1),
• konstruktor z parametrami(int ax, int ay),
• konstruktor z parametrem klasy Punkt,
• metody zwrocX() i zwrocY()
• metodę odleglosc(Punkt p) – obliczająca odległość punktu od punktu p.
Zdefiniuj klasę PunktKolorowy dziedziczącą po klasie Punkt i mającą dodatkowo pole kolor, metodę
zwrocKolor() i konstruktory: bez parametrów , który umożliwia utworzenie punktu o współrzędnych
(1,1) i kolorze 0, i z parametrami oraz konstruktor z parametrem klasy Punkt i parametrem typu
całkowitego - wartość koloru.
Napisz aplikację, w której wczytasz z pliku współrzędne x, y, kolor punktów i promień (dane czytane
do końca pliku, w pierwszym wierszu promień, a w kolejnych wiersza oddzielone spacjami dane:x,y i
kolor) , utworzysz obiekty klasy PunktKolorowy. Sprawdź czy punkty leżą wewnątrz okręgu o środku
w punkcie (0,0) i promieniu r. Jeśli tak, wypisz na ekranie monitora współrzędne i kolor punktów.
Zastosuj obsługę wyjątków.
Zdefiniuj własna klasę Mojwyjatek dziedzicząca po Exception z dwoma konstruktorami bez
parametrów i z parametrem typu String – komunikat. Wykorzystaj tę klasę do obsługi sytuacji
wyjątkowych: ujemny promień i ujemny kolor.
Obsłuż błędy IO i błąd złego typu danych.
(6.p)

Na chwilę obecną zrobiłem tyle i nie wiem jak zrobić konstruktor z parametrem klasy oraz koloru i jak dalej to robić:

import java.util.*;

public class Punkt {

private int
x,y;
    public Punkt() {
        x=1;
        y=1;
    }
    public Punkt(int ax, int ay) {  
        ax=x;
        ay=y;
    }
    public Punkt(int Punkt){
        Punkt=Punkt;
    }
    public int ZwrocX(){
        return x;
    }
    public int ZwrocY(){
        return y;
    }

    public int odleglosc(){
        int old1=ax-x;
        int old2=ay-y;
    }

    class PunktKolorowy extends Punkt{

        int kolor;

        PunktKolorowy(){
            kolor=0;
            x=1;
            y=1;
        }
        PunktKolorowy(int ax, int ay){
            ax=x;
            ay=y;
        }
        PunktKolorowy(int Punkt){
        }
        PunktKolorowy(int kolor){
            kolor=
        }

        }
    }

    public static void main(String[] args) {

    }
}
0

Konstruktor z parametrem klasy ma przyjmować typ Punkt, nie int.
W konstruktorze przyjmującym kolor:

this.kolor = kolor;

Przypisujesz wartości pól do parametrów konstruktora zamiast odwrotnie.
Klasa PunktKolorowy z pewnością nie ma być klasą wewnętrzną Punkt.
Metoda odleglosc ma przyjmować obiekt Punkt, nie wiem skąd ci się tam wzięło ax i ay. W dodatku odległość liczymy inaczej.

Doczytaj o klasach i metodach, bo jest marnie.

0

Mam nadzieję, że teraz wygląda to już trochę lepiej. Mógłbyś wytłumaczyć jak obliczyć odległość, bądź odesłać mnie do jakiejś konkretnej literatury.

import java.util.*;

public class Punkt {

private int
x,y;
    public Punkt() {
        x=1;
        y=1;
    }
    public Punkt(int ax, int ay) {  
        x=ax;
        y=ay;
    }
    public Punkt(int Punkt){
        Punkt=Punkt;
    }
    public int ZwrocX(){
        return x;
    }
    public int ZwrocY(){
        return y;
    }

    public int odleglosc(){
        ?
    }

    class PunktKolorowy extends Punkt{

        int kolor;

        public PunktKolorowy(){
            super();
            kolor=0;

        }
        public PunktKolorowy(int ax, int ay, int akolor){
            super(ax,ay);
            kolor=akolor;
        }
                PunktKolorowy(Punkt){
                    ?
        }
        public PunktKolorowy(int kolor){
            this.kolor=kolor;
        }

        }
    }

    public static void main(String[] args) {

    }
}
0

Konstruktor przyjmujący punkt musi przekopiować wszystkie pola (analogicznie dla PunktKolorowy):

public Punkt(Punkt p) {
    x = p.x;
    y = p.y;
}

PunktKolorowy wciąż jest klasą wewnętrzną Punkt, musisz go zdefiniować na zewnątrz, w innym pliku.

odleglosc = \sqrt{\left(x_{A} - x_{B}\right)<sup>{2} + \left(y_{A} - y_{B}\right)</sup>{2}}
0

nawet jeżeli współrzędne są całkowite, odległość i tak będzie zmiennoprzecinkowa - double lub float.

Ma sens zrobić:

double odległość(int x,int y) { return ... ; }
double odległość() { return odległość(0,0); }
double odległość(punkt P) { return odległość(P.x,P.y); }

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0