Podział na pliki

0

Witam.
Nie wiem czy nazwa tematu dobrze oddaje to z czym mam problem, ale przygodę z Javą zacząłem niedawno.

Mam 3 pliki : figury.java ( chciałbym, żeby to był ten główny plik ), kwadrat.java oraz prostokat.java.

figury :

 public class figury {

    public static void main(String[] args) {
        figury kwat = new figury();
        figury pros - new figury();
  }
}
    

kwadrat :

 import static javax.swing.JOptionPane.showInputDialog;


public class kwadrat {
        private String s1;
        private double a;
        
        
        public void setBok(){
           
           this.s1 = showInputDialog("Podaj długość boku"); 
           this.a = Double.parseDouble(s1);
        }
       
        public double obwod_k(){
            
            double obwod;
            obwod = 4*a;
            return obwod;
            
        }
        
        public double pole_k(){
            double pole;
            pole = a*a;
            return pole;
        }
        
        public void show_k(){
       
        System.out.println("Bok kwadratu wynosi : " + a);
        System.out.println("Obowd kwadratu wynosi : " + obwod_k());
        System.out.println("Pole kwadratu wynosi : " + pole_k());
        
        }

    
    public static void main(String[] args) {
       
    }
    }

Prostokąt :

 
import static javax.swing.JOptionPane.showInputDialog;


public class prostokat {
    private String s1,s2;
    private double a;
    private double b;
    
    public void setBok1(){
        this.s1 = showInputDialog("Podaj długość boku pierwszego :"); 
        this.a = Double.parseDouble(s1);
    }
    public void setBok2(){
        this.s2 = showInputDialog("Podaj długość boku drugiego :"); 
        this.b = Double.parseDouble(s2);
    }
    
     public double obwod_p(){
            
            double obwod;
            obwod = (2*a) + (2*b);
            return obwod;
            
        }
     
        public double pole_p(){
            double pole;
            pole = a*b;
            return pole;
        }
        
        public void show_p(){
       
        System.out.println("Boki prostokąta : " + a + b);
        System.out.println("Obowd kwadratu wynosi : " + obwod_p());
        System.out.println("Pole kwadratu wynosi : " + pole_p());
        
        }
        
    
    public static void main(String[] args) {
       
    }
    
}

W tym wszystkim chodzi o to by w pliku figury móc wywoływać funkcje takie jak setBok() z kwadratu czy prostokątu, ale zwyczajnie w świecie nie mogę tego zrobić, gdzie w poradniku na YoutubieCorax tworzył tylko nowy obiekt za pomoca "new" i wszystko mu działało. Mi niestety nie chce.

Jakieś propozycje ?

0

Przede wszystkim nazywamy klasy z dużych liter.
Po drugie aby zrobić, to co próbujesz, klasy Kwadrat i Prostokat muszę dziedziczyć po Figura.
Czyli Kwadrat extedns Figura i Prostokat extends Figura.

0

To co chcesz osiągnąć możesz zrobić poprzez dziedziczenie.
Pamiętaj o zmianie nazw klas, tak aby zaczynały się wielkimi literami.

public class Figury {
 
    public static void main(String[] args) {
        Figury kwat = new Kwadrat();
        Figury pros - new Prostokat();
  }
}
import static javax.swing.JOptionPane.showInputDialog;
 
public class Kwadrat extends Figury{
        private String s1;
        private double a;
 
 
        public void setBok(){
 
           this.s1 = showInputDialog("Podaj długość boku"); 
           this.a = Double.parseDouble(s1);
        }
 
        public double obwod_k(){
 
            double obwod;
            obwod = 4*a;
            return obwod;
 
        }
 
        public double pole_k(){
            double pole;
            pole = a*a;
            return pole;
        }
 
        public void show_k(){
 
        System.out.println("Bok kwadratu wynosi : " + a);
        System.out.println("Obowd kwadratu wynosi : " + obwod_k());
        System.out.println("Pole kwadratu wynosi : " + pole_k());
 
        }
    }
import static javax.swing.JOptionPane.showInputDialog;
 
 
public class Prostokat extends Figury {
    private String s1,s2;
    private double a;
    private double b;
 
    public void setBok1(){
        this.s1 = showInputDialog("Podaj długość boku pierwszego :"); 
        this.a = Double.parseDouble(s1);
    }
    public void setBok2(){
        this.s2 = showInputDialog("Podaj długość boku drugiego :"); 
        this.b = Double.parseDouble(s2);
    }
 
     public double obwod_p(){
 
            double obwod;
            obwod = (2*a) + (2*b);
            return obwod;
 
        }
 
        public double pole_p(){
            double pole;
            pole = a*b;
            return pole;
        }
 
        public void show_p(){
 
        System.out.println("Boki prostokąta : " + a + b);
        System.out.println("Obowd kwadratu wynosi : " + obwod_p());
        System.out.println("Pole kwadratu wynosi : " + pole_p());
 
        }
 
}

Main powinien być jeden. Dalej kombinuj sam :)

0

Zrobiłem tak jak mówiliście, ale nadal nie moge uzyć np. kwat.setBok(); :(

chce stworzyć program, który oblicza pole wybranej przeze mnie figury.
I chce by w pliku figury np. po wciśnięciu 1 i podaniu boku np. kwadratu program mi obliczył obwód i pole tej figury.

1

Musisz przeanalizowac swoje metody skoro są typu void a maja coś pobierać i zwracać to zastanów się czy nie powinny być typu double bądź integer. Jeżeli chcesz odwołać się do metod jakiejś klasy musisz utworzyć instancje danej klasy, gdzie za pomocą typu referencyjnego otrzymasz dostęp do składowych tej klasy czyli np metod. Burdzi0 ci wszystko jasno rozpisał, możesz zrobić to za pomocą polimorfizmu skoro wykorzystujesz dziedziczenie bądź bezpośrednio odwołać się do danej klasy
Kwadrat kwadracik = new Kwadrat();
bądź
Figury kwadracik = new Kwadrat(); w momencie gdy zachodzi dziedziczenie

0
olekxd napisał(a):

Kwadrat kwadracik = new Kwadrat();

O to mi chodziło :)

Dziękuje za pomoc.

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