Advertisement
Guest User

Untitled

a guest
Jun 24th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.36 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package javafxapplication1;
  7.  
  8. import java.util.ArrayList;
  9. import java.util.Iterator;
  10. import java.util.List;
  11. import javafx.application.Application;
  12. import javafx.event.ActionEvent;
  13. import javafx.event.EventHandler;
  14. import javafx.scene.Group;
  15. import javafx.scene.Scene;
  16. import javafx.scene.control.Button;
  17. import javafx.scene.layout.GridPane;
  18. import javafx.scene.layout.StackPane;
  19. import javafx.scene.layout.VBox;
  20. import javafx.scene.shape.Circle;
  21. import javafx.scene.shape.Rectangle;
  22. import javafx.stage.Stage;
  23.  
  24. /**
  25.  *
  26.  * @author student
  27.  */
  28.  
  29. interface Figure {
  30.     double pole();
  31.     double obwod();
  32.     void zeskaluj(double skala);
  33. }
  34.  
  35. class Kolo implements Figure {
  36.     double promienKola;
  37.    
  38.     public Kolo(double promien) {
  39.         if (promien < 0) {
  40.             throw new Error("Proszę podać promień o wartości większej od zera");
  41.         }
  42.        
  43.         this.promienKola = promien;
  44.     }
  45.  
  46.     @Override
  47.     public double pole() {
  48.         return Math.PI * Math.pow(this.promienKola, 2);
  49.     }
  50.  
  51.     @Override
  52.     public double obwod() {
  53.         return this.promienKola * 2 * Math.PI;
  54.     }
  55.  
  56.     @Override
  57.     public void zeskaluj(double skala) {
  58.         this.promienKola = this.promienKola * skala;
  59.     }
  60.    
  61.     TrojkatRownoboczny ZamienNaTrojkatRownoboczny() {
  62.         return new TrojkatRownoboczny(Math.sqrt((this.pole() * 2) / Math.sin(Math.toRadians(180 / 3))));
  63.     }
  64.    
  65.     Kwadrat ZamienNaKwadrat() {
  66.         return new Kwadrat(Math.sqrt(this.pole()));
  67.     }
  68. }
  69.  
  70. class Prostokat implements Figure {
  71.     double bokA;
  72.     double bokB;
  73.  
  74.     public Prostokat(double a, double b) {
  75.         if (a < 0 || b < 0) {
  76.             throw new Error("Proszę podać boki o wartości większej od zera");
  77.         }
  78.         this.bokA = a;
  79.         this.bokB = b;
  80.     }
  81.  
  82.     @Override
  83.     public double pole() {
  84.         return this.bokA * this.bokB;
  85.     }
  86.  
  87.     @Override
  88.     public double obwod() {
  89.         return this.bokA * 2 + this.bokB * 2;
  90.     }
  91.  
  92.     @Override
  93.     public void zeskaluj(double skala) {
  94.         if (skala < 0) {
  95.             throw new Error("Skala nie może być mniejsza lub równa zero");
  96.         }
  97.        
  98.         this.bokA = this.bokA * skala;
  99.         this.bokB = this.bokB * skala;
  100.     }
  101.    
  102. }
  103.  
  104. class Triangle implements Figure {
  105.  
  106.     double bokA;
  107.     double bokB;
  108.     double bokC;
  109.  
  110.     public Triangle(double bokA, double bokB, double bokC) {
  111.         if (!(bokA + bokB > bokC && bokB + bokC > bokA && bokA + bokC > bokB)) {
  112.             throw new Error("Nieprawidłowe boki trójkąta");
  113.         }
  114.        
  115.         this.bokA = bokA;
  116.         this.bokB = bokB;
  117.         this.bokC = bokC;
  118.     }
  119.    
  120.     @Override
  121.     public double pole() {
  122.         double polowaObwodu = this.obwod() / 2;
  123.         return Math.sqrt(polowaObwodu * (polowaObwodu - bokA) * (polowaObwodu - bokB) * (polowaObwodu - bokC));
  124.     }
  125.  
  126.     @Override
  127.     public double obwod() {
  128.         return this.bokA + this.bokB + this.bokC;
  129.     }
  130.  
  131.     @Override
  132.     public void zeskaluj(double skala) {
  133.         this.bokA = this.bokA * skala;
  134.         this.bokB = this.bokB * skala;
  135.         this.bokC = this.bokC * skala;
  136.     }
  137.    
  138. }
  139.  
  140. class Kwadrat implements Figure {
  141.     double bok;
  142.    
  143.     public Kwadrat(double a) {
  144.         if (a < 0) {
  145.             throw new Error("Proszę podać bok o wartości większej od zera");
  146.         }
  147.         this.bok = a;
  148.     }
  149.  
  150.     @Override
  151.     public double pole() {
  152.         return this.bok * this.bok;
  153.     }
  154.  
  155.     @Override
  156.     public double obwod() {
  157.         return this.bok * 4;
  158.     }
  159.  
  160.     @Override
  161.     public void zeskaluj(double skala) {
  162.         if (skala < 0) {
  163.             throw new Error("Skala nie może być mniejsza lub równa zero");
  164.         }
  165.        
  166.         this.bok = this.bok * skala;
  167.     }
  168.    
  169.     TrojkatRownoboczny ZamienNaTrojkatRownoboczny() {
  170.         return new TrojkatRownoboczny(this.bok * 2);
  171.     }
  172.    
  173.     Kolo ZamienNaKolo() {
  174.         return new Kolo(Math.sqrt(this.pole()/Math.PI));
  175.     }
  176.    
  177. }
  178.  
  179. class TrojkatRownoboczny extends Triangle {
  180.     public TrojkatRownoboczny(double bok) {
  181.         super(bok, bok, bok);
  182.     }
  183.    
  184.     Kwadrat ZamienNaKwadrat() {
  185.         return new Kwadrat(Math.sqrt(this.pole()));
  186.     }
  187.    
  188.     Kolo ZamienNaKolo() {
  189.         return new Kolo(Math.sqrt(this.pole()/Math.PI));
  190.     }
  191. }
  192.  
  193. class LabCircle extends Circle {
  194.  
  195.     public LabCircle(Kolo kolo) {
  196.         super();
  197.         this.setRadius(kolo.promienKola);
  198.     }
  199.    
  200. }
  201.  
  202. class LabSquare extends Rectangle {
  203.  
  204.     public LabSquare(Kwadrat kwadrat) {
  205.         super();
  206.         this.setWidth(kwadrat.bok);
  207.         this.setHeight(kwadrat.bok);
  208.     }
  209.    
  210. }
  211.  
  212. public class JavaFXApplication1 extends Application {
  213.    
  214.     @Override
  215.     public void start(Stage primaryStage) {
  216.        
  217.         System.out.println("Kolo");
  218.         Kolo kolo = new Kolo(300);
  219.         System.out.println("Obwod: " + kolo.obwod());
  220.         System.out.println("Pole: " + kolo.pole());
  221.         kolo.zeskaluj(0.5);
  222.         System.out.println("Pole po zeskalowaniu: " + kolo.pole());
  223.        
  224.         System.out.println("Prostokat");
  225.         Prostokat prostokat = new Prostokat(2, 3);
  226.         System.out.println("Obwod: " + prostokat.obwod());
  227.         System.out.println("Pole: " + prostokat.pole());
  228.         prostokat.zeskaluj(0.5);
  229.         System.out.println("Pole po zeskalowaniu: " + prostokat.pole());
  230.        
  231.         System.out.println("Trojkat");
  232.         Triangle trojkat = new Triangle(2, 2, 3);
  233.         System.out.println("Obwod: " + trojkat.obwod());
  234.         System.out.println("Pole: " + trojkat.pole());
  235.         trojkat.zeskaluj(0.5);
  236.         System.out.println("Pole po zeskalowaniu: " + trojkat.pole());
  237.        
  238.         System.out.println("Kwadrat");
  239.         Kwadrat kwadrat = new Kwadrat(20);
  240.         System.out.println("Obwod: " + kwadrat.obwod());
  241.         System.out.println("Pole: " + kwadrat.pole());
  242.         kwadrat.zeskaluj(0.5);
  243.         System.out.println("Pole po zeskalowaniu: " + kwadrat.pole());
  244.        
  245.         System.out.println("Trojkat rownoboczny");
  246.         TrojkatRownoboczny trojBocz = new TrojkatRownoboczny(20);
  247.         System.out.println("Obwod: " + trojBocz.obwod());
  248.         System.out.println("Pole: " + trojBocz.pole());
  249.         trojBocz.zeskaluj(0.5);
  250.         System.out.println("Pole po zeskalowaniu: " + trojBocz.pole());
  251.        
  252.         ArrayList<Kolo> listaKol = new ArrayList<Kolo>();
  253.         ArrayList<Kwadrat> listaKwadratow = new ArrayList<Kwadrat>();
  254.        
  255.         listaKol.add(new Kolo(20));
  256.         listaKol.add(new Kolo(30));
  257.         listaKol.add(new Kolo(40));
  258.         int listaKolLen = listaKol.size();
  259.         for (int i = 0; i < listaKolLen; i++) {
  260.             listaKwadratow.add(listaKol.get(i).ZamienNaKwadrat());
  261.         }
  262.        
  263.         int listaKwadratowLen = listaKol.size();
  264.         for (int i = 0; i < listaKwadratowLen; i++) {
  265.             System.out.println("Bok kwadratu po przeksztalceniu: " + listaKwadratow.get(i).bok);
  266.         }
  267.        
  268.         VBox drawPanel = new VBox();
  269.         drawPanel.setMinWidth(300);
  270.         drawPanel.setMinHeight(300);
  271.         drawPanel.setStyle("-fx-border-color: blue; -fx-border-width: 5");
  272.        
  273.         Button createSquareBtn = new Button();
  274.         createSquareBtn.setText("Utworz kwadrat");
  275.         createSquareBtn.setOnAction(new EventHandler<ActionEvent>() {
  276.             @Override
  277.             public void handle(ActionEvent event) {
  278.                 drawPanel.getChildren().clear();
  279.                
  280.                 int listaKolLen = listaKol.size();
  281.                 for (int i = 0; i < listaKolLen; i++) {
  282.                     drawPanel.getChildren().add(new LabCircle(listaKol.get(i)));
  283.                 }
  284.             }
  285.         });
  286.        
  287.         Button transformSquareToCircleBtn = new Button();
  288.         transformSquareToCircleBtn.setText("Zamien kwadrat na trojkat");
  289.         transformSquareToCircleBtn.setOnAction(new EventHandler<ActionEvent>() {
  290.             @Override
  291.             public void handle(ActionEvent event) {
  292.                 drawPanel.getChildren().clear();
  293.                
  294.                 int listaKolLen = listaKol.size();
  295.                 for (int i = 0; i < listaKolLen; i++) {
  296.                     drawPanel.getChildren().add(new LabSquare(listaKol.get(i).ZamienNaKwadrat()));
  297.                 }
  298.             }
  299.         });
  300.        
  301.         Group root = new Group();
  302.         GridPane gridPane = new GridPane();
  303.        
  304.         VBox controlPanel = new VBox();
  305.         controlPanel.setMinWidth(200);
  306.         controlPanel.setMinHeight(100);
  307.         controlPanel.getChildren().add(createSquareBtn);
  308.         controlPanel.getChildren().add(transformSquareToCircleBtn);
  309.        
  310.        
  311.         gridPane.add(controlPanel, 0, 0);
  312.         gridPane.add(drawPanel, 1, 0);
  313.        
  314.         root.getChildren().add(gridPane);
  315.         Scene scene = new Scene(root, 500, 300);
  316.        
  317.         primaryStage.setTitle("Hello World!");
  318.         primaryStage.setScene(scene);
  319.         primaryStage.show();
  320.     }
  321.  
  322.     /**
  323.      * @param args the command line arguments
  324.      */
  325.     public static void main(String[] args) {
  326.         launch(args);
  327.     }
  328.    
  329. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement