Programowanie obiektowe - dziedziczenie

0

Treść zadania:
Zaprojektuj klasę Punkt3D reprezentującą punkt w przestrzeni 3D.
Klasa powinna umożliwiać wczytanie punktu od użytkownika oraz zainicjowanie
punktu za pomocą konstruktora z parametrami. Powinna mieć też możliwość
wyświetlania punktu na konsoli.
Zadanie 4.
Następnie zaprojektuj klasę Wektor3D która posiada 2 pola typu Punkt3D.
Klasa powinna mieć możliwość wczytania i wyświetlania danych podobnie jak
Punkt3D. Należy posłużyć się metodami do wczytania i wyświetlania danych z klasy Punkt3D.

 
package dziedzieczniepunkt;

public class DziedzieczniePunkt {
    public static void main(String[] args) {
        // TODO code application logic here
        Punkt3D punkt = new Punkt3D(1,2,3);
        punkt.wyswieltDane();
    }
}

Klasa Punkt3D

 package dziedzieczniepunkt;

import  java.util.Scanner;

public class Punkt3D {
    
    private double x;
    private double y;
    private double z;
    
    public Punkt3D(double x, double y, double z){
        this.x = x;
        this.y = y;
        this.z = z;
    }
    
    public Punkt3D(Punkt3D punkt){
        x = punkt.x;
        y = punkt.y;
        z = punkt.z;
    }
    
    public void pobierz(){
        System.out.println("Podaj współrzędne: x, y, z: ");
        Scanner odczyt = new Scanner(System.in);
        x = odczyt.nextDouble();
        y = odczyt.nextDouble();
        z = odczyt.nextDouble();
    }
    
    public void pobierz(Punkt3D punkt){
        Scanner odczyt = new Scanner(System.in);
        punkt.x = odczyt.nextDouble();
        punkt.y = odczyt.nextDouble();
        punkt.z = odczyt.nextDouble();
    }
    
    public void wyswieltDane(){
        System.out.println("(" + x + ", " + y + ", " + z + ")");
    }
    
    public void wyswietlDane(Punkt3D punkt){
        System.out.println("(" + punkt.x + ", " + punkt.y + ", " + punkt.z + ")");
    }
}

 
package dziedzieczniepunkt;

public class Wektor3D extends Punkt3D {
    
    private Punkt3D wekA;
    private Punkt3D wekB;
    
    public Wektor3D(){ //jakie parametry
        //super() ale z czym
    }
}

Utknąłem w zadaniu nr 4. Skoro mam użyć metod z klasy Punk3D to klasa Wektor3D musi dziedziczyć. Pytanie jaki napisać konstruktor, metody ? Proszę o jakieś wskazówki, podpowiedzi coś co by mnie naprowadziło na dobre rozwiązanie.

0

Wektor nie powinien dziedziczyć z Punktu.

0

Próbuję coś takiego:

 
package dziedzieczniepunkt;
public class Wektor3D{
    
    private Punkt3D wekA;
    private Punkt3D wekB;
    
   public void ustawWartosci(){
        wekA.pobierz();
        wekB.pobierz();
    }
    
    public void pokazDane(){
        wekA.wyswieltDane();
        wekB.wyswieltDane();
    }
}

package dziedzieczniepunkt;

public class DziedzieczniePunkt {
    public static void main(String[] args) {
        // TODO code application logic here
        Wektor3D wektor = new Wektor3D();
        wektor.ustawWartosci();
        //wektor.pokazDane();  
    }
    
}
 

Ale dostaję taki błąd:

 
Exception in thread "main" java.lang.NullPointerException
	at dziedzieczniepunkt.Wektor3D.ustawWartosci(Wektor3D.java:8)
	at dziedzieczniepunkt.DziedzieczniePunkt.main(DziedzieczniePunkt.java:7)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)
1
 
private Punkt3D wekA = new Punkt3D();
private Punkt3D wekB = new Punkt3D();
0

Dzięki wielkie Shalom.

 
package dziedzieczniepunkt;
public class Wektor3D{
    
    private Punkt3D wekA = new Punkt3D();
    private Punkt3D wekB = new Punkt3D();

    
   public void ustawWartosci(){
        wekA.pobierz();
        wekB.pobierz();
    }
    
    public void pokazDane(){
        wekA.wyswieltDane();
        wekB.wyswieltDane();
    }
}

 
package dziedzieczniepunkt;

import  java.util.Scanner;

public class Punkt3D {
    
    private double x;
    private double y;
    private double z;
    
    public Punkt3D(double x, double y, double z){
        this.x = x;
        this.y = y;
        this.z = z;
    }
    
    public Punkt3D(){
    }
    
    public Punkt3D(Punkt3D punkt){
        x = punkt.x;
        y = punkt.y;
        z = punkt.z;
    }
    
    public void pobierz(){
        System.out.println("Podaj współrzędne: x, y, z: ");
        Scanner odczyt = new Scanner(System.in);
        x = odczyt.nextDouble();
        y = odczyt.nextDouble();
        z = odczyt.nextDouble();
    }
    
    public void pobierz(Punkt3D punkt){
        Scanner odczyt = new Scanner(System.in);
        punkt.x = odczyt.nextDouble();
        punkt.y = odczyt.nextDouble();
        punkt.z = odczyt.nextDouble();
    }
    
    public void wyswieltDane(){
        System.out.println("(" + x + ", " + y + ", " + z + ")");
    }
    
    public void wyswietlDane(Punkt3D punkt){
        System.out.println("(" + punkt.x + ", " + punkt.y + ", " + punkt.z + ")");
    }
}

package dziedzieczniepunkt;

public class DziedzieczniePunkt {
    public static void main(String[] args) {
        // TODO code application logic here
        Wektor3D wektor = new Wektor3D();
        wektor.ustawWartosci();
        wektor.pokazDane(); 
    }
    
}

 

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