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