From b784617677eafb0ab99cbe5754f5abf82a58de1e Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 11 Nov 2013 15:47:16 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=A03.=20=D0=97=D0=B0=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tse/LR_3.java | 3 + src/tse/lr2/Circle.java | 5 +- src/tse/lr2/Ellipse.java | 10 ++-- src/tse/lr3/LR_3_Tasks.java | 106 ++++++++++++++++++++++++++++++++++++ 4 files changed, 119 insertions(+), 5 deletions(-) create mode 100644 src/tse/lr3/LR_3_Tasks.java diff --git a/src/tse/LR_3.java b/src/tse/LR_3.java index 8cc0c3b..348ac1b 100644 --- a/src/tse/LR_3.java +++ b/src/tse/LR_3.java @@ -1,5 +1,7 @@ package tse; +import tse.lr3.LR_3_Tasks; + /** * @author aNNiMON */ @@ -17,6 +19,7 @@ public class LR_3 implements ILabRab { public void execute(int index) { switch(index) { case 0: + LR_3_Tasks.getInstance().task1(); break; case 1: break; diff --git a/src/tse/lr2/Circle.java b/src/tse/lr2/Circle.java index 9238eed..2a9f5f2 100644 --- a/src/tse/lr2/Circle.java +++ b/src/tse/lr2/Circle.java @@ -1,12 +1,15 @@ package tse.lr2; import java.awt.Point; +import java.io.Serializable; /** * * @author aNNiMON */ -public class Circle extends Ellipse { +public class Circle extends Ellipse implements Serializable { + + private static final long serialVersionUID = 1L; public Circle() { super(); diff --git a/src/tse/lr2/Ellipse.java b/src/tse/lr2/Ellipse.java index e50c2f2..01de9f1 100644 --- a/src/tse/lr2/Ellipse.java +++ b/src/tse/lr2/Ellipse.java @@ -1,14 +1,16 @@ package tse.lr2; import java.awt.Point; +import java.io.Serializable; import java.util.Arrays; /** * * @author aNNiMON */ -public class Ellipse { +public class Ellipse implements Serializable { + private static final long serialVersionUID = 1L; private static final int POINTS = 4; protected final Point[] points; @@ -78,14 +80,14 @@ public class Ellipse { @Override public String toString() { - /*StringBuilder sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); for (int i = 0; i < POINTS; i++) { sb.append(points[i].toString()).append('\t'); } sb.append("\nSquare: ").append(getSquare()); sb.append("\nCenter: ").append(getCenterPoint().toString()); - return sb.toString();*/ - return "Я - Эллипс"; + return sb.toString(); + // return "Я - Эллипс"; } } diff --git a/src/tse/lr3/LR_3_Tasks.java b/src/tse/lr3/LR_3_Tasks.java new file mode 100644 index 0000000..05be177 --- /dev/null +++ b/src/tse/lr3/LR_3_Tasks.java @@ -0,0 +1,106 @@ +package tse.lr3; + +import tse.lr2.*; +import java.awt.Point; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.ArrayList; +import java.util.List; + +/** + * + * @author aNNiMON + */ +public class LR_3_Tasks { + + private static LR_3_Tasks instance; + + public static synchronized LR_3_Tasks getInstance() { + if (instance == null) instance = new LR_3_Tasks(); + return instance; + } + + private Ellipse ellipse1, ellipse2, ellipse3; + private Circle circle1, circle2; + + public void task1() { + makeObjects(); + System.out.println("До сериализации"); + System.out.println(ellipse1.toString()); + serialize("t1_ellipse.ser", ellipse1); + + Ellipse el = (Ellipse) deserialize("t1_ellipse.ser"); + if (el != null) { + System.out.println("После сериализации"); + System.out.println(el.toString()); + } + System.out.println("Готово!"); + } + + public void task2() { + makeObjects(); + ArrayList ellipses = new ArrayList<>(); + ellipses.add(ellipse1); + ellipses.add(ellipse2); + ellipses.add(ellipse3); + ellipses.add(circle1); + ellipses.add(circle2); + printList(ellipses); + } + + public void task5() { + makeObjects(); + } + + private void makeObjects() { + ellipse1 = new Ellipse( + new Point(2, 2), new Point(8, 2), + new Point(2, 6), new Point(8, 6) + ); + ellipse2 = new Ellipse( + new Point(0, -4), new Point(20, -4), + new Point(0, 12), new Point(20, 12) + ); + ellipse3 = new Ellipse(ellipse1); + + circle1 = new Circle( new Point(3, 3), 6 ); + circle2 = new Circle( new Point(5, 4), 2 ); + } + + private void serialize(String filename, Object object) { + try { + FileOutputStream fos = new FileOutputStream(filename); + ObjectOutputStream oos = new ObjectOutputStream(fos); + oos.writeObject(object); + oos.close(); + fos.close(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + private Object deserialize(String filename) { + Object object = null; + try { + FileInputStream fis = new FileInputStream(filename); + ObjectInputStream ois = new ObjectInputStream(fis); + object = ois.readObject(); + ois.close(); + fis.close(); + } catch (IOException | ClassNotFoundException ex) { + ex.printStackTrace(); + } + return object; + } + + private void printList(List list) { + for (int i = 0; i < list.size(); i++) { + Ellipse ellipse = list.get(i); + System.out.println( String.format("%2d. %f", i + 1, ellipse.getSquare()) ); + } + } + +}