Podział na pliki

Podział na pliki
KE
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad rok
  • Postów:127
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 :

Kopiuj
 public class figury {

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

kwadrat :

Kopiuj
 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 :

Kopiuj
 
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 ?

Black007
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 dni
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.


"Nie popełnia błędów tylko ten, kto nic nie robi"
Burdzi0
  • Rejestracja:prawie 9 lat
  • Ostatnio:6 dni
  • Lokalizacja:Futurama
  • Postów:887
0

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

Kopiuj
public class Figury {
 
    public static void main(String[] args) {
        Figury kwat = new Kwadrat();
        Figury pros - new Prostokat();
  }
}
Kopiuj
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());
 
        }
    }
Kopiuj
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 :)


Bite my shiny metal ass!
Life throws you an error code like that, you don't have the luxury of a ZnVja2luZw== pop-up explanation *Robię projekty studenckie, pisz priv ;) *
edytowany 1x, ostatnio: Burdzi0
KE
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad rok
  • Postów:127
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.

edytowany 1x, ostatnio: kenik
OL
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:13
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

edytowany 1x, ostatnio: olekxd
KE
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad rok
  • Postów:127
0
olekxd napisał(a):

Kwadrat kwadracik = new Kwadrat();

O to mi chodziło :)

Dziękuje za pomoc.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.