Advertisement
Guest User

Untitled

a guest
Jun 24th, 2018
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.81 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. Kwadrat zamienNaKwadrat();
  34. TrojkatRownoboczny zamienNaTrojkatRownoboczny();
  35. Kolo zamienNaKolo();
  36. }
  37.  
  38. class Kolo implements Figure {
  39. double promienKola;
  40.  
  41. public Kolo(double promien) {
  42. if (promien < 0) {
  43. throw new Error("Proszę podać promień o wartości większej od zera");
  44. }
  45.  
  46. this.promienKola = promien;
  47. }
  48.  
  49. @Override
  50. public double pole() {
  51. return Math.PI * Math.pow(this.promienKola, 2);
  52. }
  53.  
  54. @Override
  55. public double obwod() {
  56. return this.promienKola * 2 * Math.PI;
  57. }
  58.  
  59. @Override
  60. public void zeskaluj(double skala) {
  61. this.promienKola = this.promienKola * skala;
  62. }
  63.  
  64. @Override
  65. public TrojkatRownoboczny zamienNaTrojkatRownoboczny() {
  66. return new TrojkatRownoboczny(Math.sqrt((this.pole() * 2) / Math.sin(Math.toRadians(180 / 3))));
  67. }
  68.  
  69. @Override
  70. public Kwadrat zamienNaKwadrat() {
  71. return new Kwadrat(Math.sqrt(this.pole()));
  72. }
  73.  
  74. @Override
  75. public Kolo zamienNaKolo() {
  76. return this;
  77. }
  78.  
  79. public Circle rysuj() {
  80. return new LabCircle(this);
  81. }
  82. }
  83.  
  84. class Prostokat implements Figure {
  85. double bokA;
  86. double bokB;
  87.  
  88. public Prostokat(double a, double b) {
  89. if (a < 0 || b < 0) {
  90. throw new Error("Proszę podać boki o wartości większej od zera");
  91. }
  92. this.bokA = a;
  93. this.bokB = b;
  94. }
  95.  
  96. @Override
  97. public double pole() {
  98. return this.bokA * this.bokB;
  99. }
  100.  
  101. @Override
  102. public double obwod() {
  103. return this.bokA * 2 + this.bokB * 2;
  104. }
  105.  
  106. @Override
  107. public void zeskaluj(double skala) {
  108. if (skala < 0) {
  109. throw new Error("Skala nie może być mniejsza lub równa zero");
  110. }
  111.  
  112. this.bokA = this.bokA * skala;
  113. this.bokB = this.bokB * skala;
  114. }
  115.  
  116. @Override
  117. public Kwadrat zamienNaKwadrat() {
  118. throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  119. }
  120.  
  121. @Override
  122. public TrojkatRownoboczny zamienNaTrojkatRownoboczny() {
  123. throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  124. }
  125.  
  126. @Override
  127. public Kolo zamienNaKolo() {
  128. throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  129. }
  130.  
  131. }
  132.  
  133. class Triangle implements Figure {
  134.  
  135. double bokA;
  136. double bokB;
  137. double bokC;
  138.  
  139. public Triangle(double bokA, double bokB, double bokC) {
  140. if (!(bokA + bokB > bokC && bokB + bokC > bokA && bokA + bokC > bokB)) {
  141. throw new Error("Nieprawidłowe boki trójkąta");
  142. }
  143.  
  144. this.bokA = bokA;
  145. this.bokB = bokB;
  146. this.bokC = bokC;
  147. }
  148.  
  149. @Override
  150. public double pole() {
  151. double polowaObwodu = this.obwod() / 2;
  152. return Math.sqrt(polowaObwodu * (polowaObwodu - bokA) * (polowaObwodu - bokB) * (polowaObwodu - bokC));
  153. }
  154.  
  155. @Override
  156. public double obwod() {
  157. return this.bokA + this.bokB + this.bokC;
  158. }
  159.  
  160. @Override
  161. public void zeskaluj(double skala) {
  162. this.bokA = this.bokA * skala;
  163. this.bokB = this.bokB * skala;
  164. this.bokC = this.bokC * skala;
  165. }
  166.  
  167. @Override
  168. public Kwadrat zamienNaKwadrat() {
  169. throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  170. }
  171.  
  172. @Override
  173. public TrojkatRownoboczny zamienNaTrojkatRownoboczny() {
  174. throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  175. }
  176.  
  177. @Override
  178. public Kolo zamienNaKolo() {
  179. throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  180. }
  181.  
  182. }
  183.  
  184. class Kwadrat implements Figure {
  185. double bok;
  186.  
  187. public Kwadrat(double a) {
  188. if (a < 0) {
  189. throw new Error("Proszę podać bok o wartości większej od zera");
  190. }
  191. this.bok = a;
  192. }
  193.  
  194. @Override
  195. public double pole() {
  196. return this.bok * this.bok;
  197. }
  198.  
  199. @Override
  200. public double obwod() {
  201. return this.bok * 4;
  202. }
  203.  
  204. @Override
  205. public void zeskaluj(double skala) {
  206. if (skala < 0) {
  207. throw new Error("Skala nie może być mniejsza lub równa zero");
  208. }
  209.  
  210. this.bok = this.bok * skala;
  211. }
  212.  
  213. @Override
  214. public TrojkatRownoboczny zamienNaTrojkatRownoboczny() {
  215. return new TrojkatRownoboczny(this.bok * 2);
  216. }
  217.  
  218. @Override
  219. public Kolo zamienNaKolo() {
  220. return new Kolo(Math.sqrt(this.pole()/Math.PI));
  221. }
  222.  
  223. @Override
  224. public Kwadrat zamienNaKwadrat() {
  225. return this;
  226. }
  227.  
  228. }
  229.  
  230. class TrojkatRownoboczny extends Triangle {
  231. public TrojkatRownoboczny(double bok) {
  232. super(bok, bok, bok);
  233. }
  234.  
  235. @Override
  236. public Kwadrat zamienNaKwadrat() {
  237. return new Kwadrat(Math.sqrt(this.pole()));
  238. }
  239.  
  240. @Override
  241. public Kolo zamienNaKolo() {
  242. return new Kolo(Math.sqrt(this.pole()/Math.PI));
  243. }
  244. }
  245.  
  246. class LabCircle extends Circle {
  247.  
  248. public LabCircle(Kolo kolo) {
  249. super();
  250. this.setRadius(kolo.promienKola);
  251. }
  252.  
  253. }
  254.  
  255. class LabSquare extends Rectangle {
  256.  
  257. public LabSquare(Kwadrat kwadrat) {
  258. super();
  259. this.setWidth(kwadrat.bok);
  260. this.setHeight(kwadrat.bok);
  261. }
  262.  
  263. }
  264.  
  265. public class JavaFXApplication1 extends Application {
  266.  
  267. @Override
  268. public void start(Stage primaryStage) {
  269.  
  270. System.out.println("Kolo");
  271. Kolo kolo = new Kolo(300);
  272. System.out.println("Obwod: " + kolo.obwod());
  273. System.out.println("Pole: " + kolo.pole());
  274. kolo.zeskaluj(0.5);
  275. System.out.println("Pole po zeskalowaniu: " + kolo.pole());
  276.  
  277. System.out.println("Prostokat");
  278. Prostokat prostokat = new Prostokat(2, 3);
  279. System.out.println("Obwod: " + prostokat.obwod());
  280. System.out.println("Pole: " + prostokat.pole());
  281. prostokat.zeskaluj(0.5);
  282. System.out.println("Pole po zeskalowaniu: " + prostokat.pole());
  283.  
  284. System.out.println("Trojkat");
  285. Triangle trojkat = new Triangle(2, 2, 3);
  286. System.out.println("Obwod: " + trojkat.obwod());
  287. System.out.println("Pole: " + trojkat.pole());
  288. trojkat.zeskaluj(0.5);
  289. System.out.println("Pole po zeskalowaniu: " + trojkat.pole());
  290.  
  291. System.out.println("Kwadrat");
  292. Kwadrat kwadrat = new Kwadrat(20);
  293. System.out.println("Obwod: " + kwadrat.obwod());
  294. System.out.println("Pole: " + kwadrat.pole());
  295. kwadrat.zeskaluj(0.5);
  296. System.out.println("Pole po zeskalowaniu: " + kwadrat.pole());
  297.  
  298. System.out.println("Trojkat rownoboczny");
  299. TrojkatRownoboczny trojBocz = new TrojkatRownoboczny(20);
  300. System.out.println("Obwod: " + trojBocz.obwod());
  301. System.out.println("Pole: " + trojBocz.pole());
  302. trojBocz.zeskaluj(0.5);
  303. System.out.println("Pole po zeskalowaniu: " + trojBocz.pole());
  304.  
  305. List<Figure> listaFigur = new ArrayList<Figure>();
  306.  
  307. listaFigur.add(new Kolo(20));
  308. listaFigur.add(new Kwadrat(30));
  309. listaFigur.add(new Kolo(40));
  310. int listaFigurLen = listaFigur.size();
  311. for (int i = 0; i < listaFigurLen; i++) {
  312. listaFigur.set(i, listaFigur.get(i).zamienNaKwadrat());
  313. }
  314.  
  315. VBox drawPanel = new VBox();
  316. drawPanel.setMinWidth(300);
  317. drawPanel.setMinHeight(300);
  318. drawPanel.setStyle("-fx-border-color: blue; -fx-border-width: 5");
  319.  
  320. Button createSquareBtn = new Button();
  321. createSquareBtn.setText("Utworz kwadrat");
  322. createSquareBtn.setOnAction(new EventHandler<ActionEvent>() {
  323. @Override
  324. public void handle(ActionEvent event) {
  325. drawPanel.getChildren().clear();
  326.  
  327. int listaFigurLen = listaFigur.size();
  328. for (int i = 0; i < listaFigurLen; i++) {
  329. drawPanel.getChildren().add(new LabSquare(listaFigur.get(i).zamienNaKwadrat()));
  330. }
  331. }
  332. });
  333.  
  334. Button transformSquareToCircleBtn = new Button();
  335. transformSquareToCircleBtn.setText("Zamien kwadrat na koło");
  336. transformSquareToCircleBtn.setOnAction(new EventHandler<ActionEvent>() {
  337. @Override
  338. public void handle(ActionEvent event) {
  339. drawPanel.getChildren().clear();
  340.  
  341. int listaFigurLen = listaFigur.size();
  342. for (int i = 0; i < listaFigurLen; i++) {
  343. drawPanel.getChildren().add(new LabCircle(listaFigur.get(i).zamienNaKolo()));
  344. }
  345. }
  346. });
  347.  
  348. Group root = new Group();
  349. GridPane gridPane = new GridPane();
  350.  
  351. VBox controlPanel = new VBox();
  352. controlPanel.setMinWidth(200);
  353. controlPanel.setMinHeight(100);
  354. controlPanel.getChildren().add(createSquareBtn);
  355. controlPanel.getChildren().add(transformSquareToCircleBtn);
  356.  
  357.  
  358. gridPane.add(controlPanel, 0, 0);
  359. gridPane.add(drawPanel, 1, 0);
  360.  
  361. root.getChildren().add(gridPane);
  362. Scene scene = new Scene(root, 500, 300);
  363.  
  364. primaryStage.setTitle("Hello World!");
  365. primaryStage.setScene(scene);
  366. primaryStage.show();
  367. }
  368.  
  369. /**
  370. * @param args the command line arguments
  371. */
  372. public static void main(String[] args) {
  373. launch(args);
  374. }
  375.  
  376. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement