diff --git a/.gitignore b/.gitignore index b39114fc3..1954f6d54 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ # Jupyter Notebook .ipynb_checkpoints + +# Java Compiled Files +/eclipse/bin/ diff --git a/eclipse/.classpath b/eclipse/.classpath new file mode 100644 index 000000000..a36280c78 --- /dev/null +++ b/eclipse/.classpath @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/eclipse/.project b/eclipse/.project new file mode 100644 index 000000000..3271b4a60 --- /dev/null +++ b/eclipse/.project @@ -0,0 +1,17 @@ + + + component2learn + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/eclipse/.settings/org.eclipse.jdt.core.prefs b/eclipse/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..0fee6a9c4 --- /dev/null +++ b/eclipse/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,15 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/eclipse/lib/xchart-3.5.2.jar b/eclipse/lib/xchart-3.5.2.jar new file mode 100644 index 000000000..19b30f7d8 Binary files /dev/null and b/eclipse/lib/xchart-3.5.2.jar differ diff --git a/eclipse/src/pt/c06patterns/factory/s01aquatic/AppAquaticConsole1.java b/eclipse/src/pt/c06patterns/factory/s01aquatic/AppAquaticConsole1.java new file mode 100644 index 000000000..84a28d78b --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s01aquatic/AppAquaticConsole1.java @@ -0,0 +1,12 @@ +package pt.c06patterns.factory.s01aquatic; + +public class AppAquaticConsole1 { + public static void main(String[] args) { + ISeaAnimal aq1 = new FishConsole(), + aq2 = new CrabConsole(); + IFishTank ft = new FishTankConsole(); + ft.addSeaAnimal(aq1); + ft.addSeaAnimal(aq2); + ft.showFishTank(); + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s01aquatic/CrabConsole.java b/eclipse/src/pt/c06patterns/factory/s01aquatic/CrabConsole.java new file mode 100644 index 000000000..862bf64fa --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s01aquatic/CrabConsole.java @@ -0,0 +1,22 @@ +package pt.c06patterns.factory.s01aquatic; + +public class CrabConsole implements ISeaAnimal { + /* + o o + | | + /-----\ + | | + \-----/ + / / \ \ + */ + + + public String image() { + return " o o\n" + + " | |\n" + + "/-----\\\n" + + "| |\n" + + "\\-----/\n" + + "/ / \\ \\\n"; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s01aquatic/FishConsole.java b/eclipse/src/pt/c06patterns/factory/s01aquatic/FishConsole.java new file mode 100644 index 000000000..cce5787f9 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s01aquatic/FishConsole.java @@ -0,0 +1,14 @@ +package pt.c06patterns.factory.s01aquatic; + +public class FishConsole implements ISeaAnimal { + /* . _ + |\/O\ + |/\_/ + */ + + public String image() { + return ". _\n" + + "|\\/O\\\n" + + "|/\\_/\n"; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s01aquatic/FishTankConsole.java b/eclipse/src/pt/c06patterns/factory/s01aquatic/FishTankConsole.java new file mode 100644 index 000000000..b8758943c --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s01aquatic/FishTankConsole.java @@ -0,0 +1,21 @@ +package pt.c06patterns.factory.s01aquatic; + +import java.util.ArrayList; + +public class FishTankConsole implements IFishTank { + ArrayList aquaticList = new ArrayList(); + + public void addSeaAnimal(ISeaAnimal aquatic) { + aquaticList.add(aquatic); + } + + public void showFishTank() { + System.out.println("+-----------------+"); + System.out.println("| |"); + for (ISeaAnimal aq: aquaticList) + System.out.println(aq.image()); + System.out.println("| |"); + System.out.println("+-----------------+"); + } + +} diff --git a/eclipse/src/pt/c06patterns/factory/s01aquatic/IFishTank.java b/eclipse/src/pt/c06patterns/factory/s01aquatic/IFishTank.java new file mode 100644 index 000000000..64ff5cab6 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s01aquatic/IFishTank.java @@ -0,0 +1,6 @@ +package pt.c06patterns.factory.s01aquatic; + +public interface IFishTank { + void addSeaAnimal(ISeaAnimal aquatic); + void showFishTank(); +} diff --git a/eclipse/src/pt/c06patterns/factory/s01aquatic/ISeaAnimal.java b/eclipse/src/pt/c06patterns/factory/s01aquatic/ISeaAnimal.java new file mode 100644 index 000000000..91cc84f2c --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s01aquatic/ISeaAnimal.java @@ -0,0 +1,5 @@ +package pt.c06patterns.factory.s01aquatic; + +public interface ISeaAnimal { + public String image(); +} diff --git a/eclipse/src/pt/c06patterns/factory/s02aquatic/AppAquaticGUI1.java b/eclipse/src/pt/c06patterns/factory/s02aquatic/AppAquaticGUI1.java new file mode 100644 index 000000000..ac9e01d0d --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s02aquatic/AppAquaticGUI1.java @@ -0,0 +1,12 @@ +package pt.c06patterns.factory.s02aquatic; + +public class AppAquaticGUI1 { + public static void main(String[] args) { + ISeaAnimal aq1 = new FishGUI(), + aq2 = new CrabGUI(); + IFishTank ft = new FishTankGUI(); + ft.addSeaAnimal(aq1); + ft.addSeaAnimal(aq2); + ft.showFishTank(); + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s02aquatic/CrabGUI.java b/eclipse/src/pt/c06patterns/factory/s02aquatic/CrabGUI.java new file mode 100644 index 000000000..fa96fcac2 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s02aquatic/CrabGUI.java @@ -0,0 +1,7 @@ +package pt.c06patterns.factory.s02aquatic; + +public class CrabGUI implements ISeaAnimal { + public String image() { + return CrabGUI.class.getResource(".").getPath() + "crab.png"; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s02aquatic/FishGUI.java b/eclipse/src/pt/c06patterns/factory/s02aquatic/FishGUI.java new file mode 100644 index 000000000..33c104587 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s02aquatic/FishGUI.java @@ -0,0 +1,7 @@ +package pt.c06patterns.factory.s02aquatic; + +public class FishGUI implements ISeaAnimal { + public String image() { + return FishGUI.class.getResource(".").getPath() + "fish.png"; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s02aquatic/FishTankGUI.java b/eclipse/src/pt/c06patterns/factory/s02aquatic/FishTankGUI.java new file mode 100644 index 000000000..23dc83e4f --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s02aquatic/FishTankGUI.java @@ -0,0 +1,41 @@ +package pt.c06patterns.factory.s02aquatic; + +import java.awt.Color; +import java.awt.Container; +import java.awt.FlowLayout; +import java.util.ArrayList; + +import javax.swing.ImageIcon; +import javax.swing.JFrame; +import javax.swing.JLabel; + +public class FishTankGUI extends JFrame implements IFishTank { + private static final long serialVersionUID = 8757083673686143226L; + + ArrayList aquaticList = new ArrayList(); + + public void addSeaAnimal(ISeaAnimal aquatic) { + aquaticList.add(aquatic); + } + + public FishTankGUI() { + super(); + setDefaultCloseOperation(EXIT_ON_CLOSE); + } + + public void showFishTank() { + setSize(600, 300); + + Container contentPane = getContentPane(); + contentPane.setLayout(new FlowLayout()); + contentPane.setBackground(new Color(192, 192, 255)); + + for (ISeaAnimal aq: aquaticList) { + ImageIcon imagem = new ImageIcon(aq.image()); + JLabel campoImagem = new JLabel(imagem); + contentPane.add(campoImagem); + } + + setVisible(true); + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s02aquatic/IFishTank.java b/eclipse/src/pt/c06patterns/factory/s02aquatic/IFishTank.java new file mode 100644 index 000000000..0cbd23635 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s02aquatic/IFishTank.java @@ -0,0 +1,6 @@ +package pt.c06patterns.factory.s02aquatic; + +public interface IFishTank { + public void addSeaAnimal(ISeaAnimal aquatic); + public void showFishTank(); +} diff --git a/eclipse/src/pt/c06patterns/factory/s02aquatic/ISeaAnimal.java b/eclipse/src/pt/c06patterns/factory/s02aquatic/ISeaAnimal.java new file mode 100644 index 000000000..daa7acd59 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s02aquatic/ISeaAnimal.java @@ -0,0 +1,5 @@ +package pt.c06patterns.factory.s02aquatic; + +public interface ISeaAnimal { + public String image(); +} diff --git a/eclipse/src/pt/c06patterns/factory/s02aquatic/crab.png b/eclipse/src/pt/c06patterns/factory/s02aquatic/crab.png new file mode 100644 index 000000000..809767619 Binary files /dev/null and b/eclipse/src/pt/c06patterns/factory/s02aquatic/crab.png differ diff --git a/eclipse/src/pt/c06patterns/factory/s02aquatic/fish.png b/eclipse/src/pt/c06patterns/factory/s02aquatic/fish.png new file mode 100644 index 000000000..dc49590d9 Binary files /dev/null and b/eclipse/src/pt/c06patterns/factory/s02aquatic/fish.png differ diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/AppAquaticConsole2.java b/eclipse/src/pt/c06patterns/factory/s03aquatic/AppAquaticConsole2.java new file mode 100644 index 000000000..27294d1e7 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s03aquatic/AppAquaticConsole2.java @@ -0,0 +1,18 @@ +package pt.c06patterns.factory.s03aquatic; + +import pt.c06patterns.factory.s03aquatic.console.AquaticFactoryConsole; +import pt.c06patterns.factory.s03aquatic.interfaces.IAquaticFactory; +import pt.c06patterns.factory.s03aquatic.interfaces.IFishTank; +import pt.c06patterns.factory.s03aquatic.interfaces.ISeaAnimal; + +public class AppAquaticConsole2 { + public static void main(String[] args) { + IAquaticFactory factory = new AquaticFactoryConsole(); + ISeaAnimal aq1 = factory.createSeaAnimal("fish"), + aq2 = factory.createSeaAnimal("crab"); + IFishTank ft = factory.createFishTank("standard"); + ft.addSeaAnimal(aq1); + ft.addSeaAnimal(aq2); + ft.showFishTank(); + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/AppAquaticGUI2.java b/eclipse/src/pt/c06patterns/factory/s03aquatic/AppAquaticGUI2.java new file mode 100644 index 000000000..15af72eee --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s03aquatic/AppAquaticGUI2.java @@ -0,0 +1,18 @@ +package pt.c06patterns.factory.s03aquatic; + +import pt.c06patterns.factory.s03aquatic.gui.AquaticFactoryGUI; +import pt.c06patterns.factory.s03aquatic.interfaces.IAquaticFactory; +import pt.c06patterns.factory.s03aquatic.interfaces.IFishTank; +import pt.c06patterns.factory.s03aquatic.interfaces.ISeaAnimal; + +public class AppAquaticGUI2 { + public static void main(String[] args) { + IAquaticFactory factory = new AquaticFactoryGUI(); + ISeaAnimal aq1 = factory.createSeaAnimal("fish"), + aq2 = factory.createSeaAnimal("crab"); + IFishTank ft = factory.createFishTank("standard"); + ft.addSeaAnimal(aq1); + ft.addSeaAnimal(aq2); + ft.showFishTank(); + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/console/AquaticFactoryConsole.java b/eclipse/src/pt/c06patterns/factory/s03aquatic/console/AquaticFactoryConsole.java new file mode 100644 index 000000000..0516d5792 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s03aquatic/console/AquaticFactoryConsole.java @@ -0,0 +1,23 @@ +package pt.c06patterns.factory.s03aquatic.console; + +import pt.c06patterns.factory.s03aquatic.interfaces.IAquaticFactory; +import pt.c06patterns.factory.s03aquatic.interfaces.IFishTank; +import pt.c06patterns.factory.s03aquatic.interfaces.ISeaAnimal; + +public class AquaticFactoryConsole implements IAquaticFactory { + public ISeaAnimal createSeaAnimal(String type) { + ISeaAnimal seaAnimal = null; + if (type.equals("fish")) + seaAnimal = new FishConsole(); + else if (type.equals("crab")) + seaAnimal = new CrabConsole(); + return seaAnimal; + } + + public IFishTank createFishTank(String type) { + IFishTank fishTank = null; + if (type.equals("standard")) + fishTank = new FishTankConsole(); + return fishTank; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/console/CrabConsole.java b/eclipse/src/pt/c06patterns/factory/s03aquatic/console/CrabConsole.java new file mode 100644 index 000000000..d1dd022e2 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s03aquatic/console/CrabConsole.java @@ -0,0 +1,24 @@ +package pt.c06patterns.factory.s03aquatic.console; + +import pt.c06patterns.factory.s03aquatic.interfaces.ISeaAnimal; + +public class CrabConsole implements ISeaAnimal { + /* + o o + | | + /-----\ + | | + \-----/ + / / \ \ + */ + + + public String image() { + return " o o\n" + + " | |\n" + + "/-----\\\n" + + "| |\n" + + "\\-----/\n" + + "/ / \\ \\\n"; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/console/FishConsole.java b/eclipse/src/pt/c06patterns/factory/s03aquatic/console/FishConsole.java new file mode 100644 index 000000000..91a477929 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s03aquatic/console/FishConsole.java @@ -0,0 +1,16 @@ +package pt.c06patterns.factory.s03aquatic.console; + +import pt.c06patterns.factory.s03aquatic.interfaces.ISeaAnimal; + +public class FishConsole implements ISeaAnimal { + /* . _ + |\/O\ + |/\_/ + */ + + public String image() { + return ". _\n" + + "|\\/O\\\n" + + "|/\\_/\n"; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/console/FishTankConsole.java b/eclipse/src/pt/c06patterns/factory/s03aquatic/console/FishTankConsole.java new file mode 100644 index 000000000..866d374da --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s03aquatic/console/FishTankConsole.java @@ -0,0 +1,24 @@ +package pt.c06patterns.factory.s03aquatic.console; + +import java.util.ArrayList; + +import pt.c06patterns.factory.s03aquatic.interfaces.IFishTank; +import pt.c06patterns.factory.s03aquatic.interfaces.ISeaAnimal; + +public class FishTankConsole implements IFishTank { + ArrayList aquaticList = new ArrayList(); + + public void addSeaAnimal(ISeaAnimal aquatic) { + aquaticList.add(aquatic); + } + + public void showFishTank() { + System.out.println("+-----------------+"); + System.out.println("| |"); + for (ISeaAnimal aq: aquaticList) + System.out.println(aq.image()); + System.out.println("| |"); + System.out.println("+-----------------+"); + } + +} diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/AquaticFactoryGUI.java b/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/AquaticFactoryGUI.java new file mode 100644 index 000000000..a1cf6e202 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/AquaticFactoryGUI.java @@ -0,0 +1,23 @@ +package pt.c06patterns.factory.s03aquatic.gui; + +import pt.c06patterns.factory.s03aquatic.interfaces.IAquaticFactory; +import pt.c06patterns.factory.s03aquatic.interfaces.IFishTank; +import pt.c06patterns.factory.s03aquatic.interfaces.ISeaAnimal; + +public class AquaticFactoryGUI implements IAquaticFactory { + public ISeaAnimal createSeaAnimal(String type) { + ISeaAnimal seaAnimal = null; + if (type.equals("fish")) + seaAnimal = new FishGUI(); + else if (type.equals("crab")) + seaAnimal = new CrabGUI(); + return seaAnimal; + } + + public IFishTank createFishTank(String type) { + IFishTank fishTank = null; + if (type.equals("standard")) + fishTank = new FishTankGUI(); + return fishTank; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/CrabGUI.java b/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/CrabGUI.java new file mode 100644 index 000000000..e7494a8c0 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/CrabGUI.java @@ -0,0 +1,9 @@ +package pt.c06patterns.factory.s03aquatic.gui; + +import pt.c06patterns.factory.s03aquatic.interfaces.ISeaAnimal; + +public class CrabGUI implements ISeaAnimal { + public String image() { + return CrabGUI.class.getResource(".").getPath() + "crab.png"; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/FishGUI.java b/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/FishGUI.java new file mode 100644 index 000000000..f4f2f286c --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/FishGUI.java @@ -0,0 +1,9 @@ +package pt.c06patterns.factory.s03aquatic.gui; + +import pt.c06patterns.factory.s03aquatic.interfaces.ISeaAnimal; + +public class FishGUI implements ISeaAnimal { + public String image() { + return FishGUI.class.getResource(".").getPath() + "fish.png"; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/FishTankGUI.java b/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/FishTankGUI.java new file mode 100644 index 000000000..8afc5839e --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/FishTankGUI.java @@ -0,0 +1,44 @@ +package pt.c06patterns.factory.s03aquatic.gui; + +import java.awt.Color; +import java.awt.Container; +import java.awt.FlowLayout; +import java.util.ArrayList; + +import javax.swing.ImageIcon; +import javax.swing.JFrame; +import javax.swing.JLabel; + +import pt.c06patterns.factory.s03aquatic.interfaces.IFishTank; +import pt.c06patterns.factory.s03aquatic.interfaces.ISeaAnimal; + +public class FishTankGUI extends JFrame implements IFishTank { + private static final long serialVersionUID = 8757083673686143226L; + + ArrayList aquaticList = new ArrayList(); + + public void addSeaAnimal(ISeaAnimal aquatic) { + aquaticList.add(aquatic); + } + + public FishTankGUI() { + super(); + setDefaultCloseOperation(EXIT_ON_CLOSE); + } + + public void showFishTank() { + setSize(600, 300); + + Container contentPane = getContentPane(); + contentPane.setLayout(new FlowLayout()); + contentPane.setBackground(new Color(192, 192, 255)); + + for (ISeaAnimal aq: aquaticList) { + ImageIcon imagem = new ImageIcon(aq.image()); + JLabel campoImagem = new JLabel(imagem); + contentPane.add(campoImagem); + } + + setVisible(true); + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/crab.png b/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/crab.png new file mode 100644 index 000000000..809767619 Binary files /dev/null and b/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/crab.png differ diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/fish.png b/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/fish.png new file mode 100644 index 000000000..dc49590d9 Binary files /dev/null and b/eclipse/src/pt/c06patterns/factory/s03aquatic/gui/fish.png differ diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/interfaces/IAquaticFactory.java b/eclipse/src/pt/c06patterns/factory/s03aquatic/interfaces/IAquaticFactory.java new file mode 100644 index 000000000..5effa9eca --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s03aquatic/interfaces/IAquaticFactory.java @@ -0,0 +1,6 @@ +package pt.c06patterns.factory.s03aquatic.interfaces; + +public interface IAquaticFactory { + public ISeaAnimal createSeaAnimal(String type); + public IFishTank createFishTank(String type); +} diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/interfaces/IFishTank.java b/eclipse/src/pt/c06patterns/factory/s03aquatic/interfaces/IFishTank.java new file mode 100644 index 000000000..e1d760824 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s03aquatic/interfaces/IFishTank.java @@ -0,0 +1,6 @@ +package pt.c06patterns.factory.s03aquatic.interfaces; + +public interface IFishTank { + void addSeaAnimal(ISeaAnimal aquatic); + void showFishTank(); +} diff --git a/eclipse/src/pt/c06patterns/factory/s03aquatic/interfaces/ISeaAnimal.java b/eclipse/src/pt/c06patterns/factory/s03aquatic/interfaces/ISeaAnimal.java new file mode 100644 index 000000000..a26fa927b --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s03aquatic/interfaces/ISeaAnimal.java @@ -0,0 +1,5 @@ +package pt.c06patterns.factory.s03aquatic.interfaces; + +public interface ISeaAnimal { + public String image(); +} diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/AppAquatic4.java b/eclipse/src/pt/c06patterns/factory/s04aquatic/AppAquatic4.java new file mode 100644 index 000000000..b41ca5dde --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s04aquatic/AppAquatic4.java @@ -0,0 +1,24 @@ +package pt.c06patterns.factory.s04aquatic; + +import java.util.Scanner; + +import pt.c06patterns.factory.s04aquatic.interfaces.IAquaticFactory; +import pt.c06patterns.factory.s04aquatic.interfaces.IFishTank; +import pt.c06patterns.factory.s04aquatic.interfaces.ISeaAnimal; + +public class AppAquatic4 { + public static void main(String[] args) { + System.out.print("Digite o tipo de apresentação (console ou gui): "); + Scanner teclado = new Scanner(System.in); + String type = teclado.nextLine(); + teclado.close(); + + IAquaticFactory factory = AquaticAbstractFactory.createFactory(type); + ISeaAnimal aq1 = factory.createSeaAnimal("fish"), + aq2 = factory.createSeaAnimal("crab"); + IFishTank ft = factory.createFishTank("standard"); + ft.addSeaAnimal(aq1); + ft.addSeaAnimal(aq2); + ft.showFishTank(); + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/AquaticAbstractFactory.java b/eclipse/src/pt/c06patterns/factory/s04aquatic/AquaticAbstractFactory.java new file mode 100644 index 000000000..2d243d4a5 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s04aquatic/AquaticAbstractFactory.java @@ -0,0 +1,16 @@ +package pt.c06patterns.factory.s04aquatic; + +import pt.c06patterns.factory.s04aquatic.console.AquaticFactoryConsole; +import pt.c06patterns.factory.s04aquatic.gui.AquaticFactoryGUI; +import pt.c06patterns.factory.s04aquatic.interfaces.IAquaticFactory; + +public class AquaticAbstractFactory { + public static IAquaticFactory createFactory(String type) { + IAquaticFactory aquaticFactory = null; + if (type.equals("console")) + aquaticFactory = new AquaticFactoryConsole(); + else if (type.equals("gui")) + aquaticFactory = new AquaticFactoryGUI(); + return aquaticFactory; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/console/AquaticFactoryConsole.java b/eclipse/src/pt/c06patterns/factory/s04aquatic/console/AquaticFactoryConsole.java new file mode 100644 index 000000000..6239179e7 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s04aquatic/console/AquaticFactoryConsole.java @@ -0,0 +1,23 @@ +package pt.c06patterns.factory.s04aquatic.console; + +import pt.c06patterns.factory.s04aquatic.interfaces.IAquaticFactory; +import pt.c06patterns.factory.s04aquatic.interfaces.IFishTank; +import pt.c06patterns.factory.s04aquatic.interfaces.ISeaAnimal; + +public class AquaticFactoryConsole implements IAquaticFactory { + public ISeaAnimal createSeaAnimal(String type) { + ISeaAnimal seaAnimal = null; + if (type.equals("fish")) + seaAnimal = new FishConsole(); + else if (type.equals("crab")) + seaAnimal = new CrabConsole(); + return seaAnimal; + } + + public IFishTank createFishTank(String type) { + IFishTank fishTank = null; + if (type.equals("standard")) + fishTank = new FishTankConsole(); + return fishTank; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/console/CrabConsole.java b/eclipse/src/pt/c06patterns/factory/s04aquatic/console/CrabConsole.java new file mode 100644 index 000000000..16824cee5 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s04aquatic/console/CrabConsole.java @@ -0,0 +1,24 @@ +package pt.c06patterns.factory.s04aquatic.console; + +import pt.c06patterns.factory.s04aquatic.interfaces.ISeaAnimal; + +public class CrabConsole implements ISeaAnimal { + /* + o o + | | + /-----\ + | | + \-----/ + / / \ \ + */ + + + public String image() { + return " o o\n" + + " | |\n" + + "/-----\\\n" + + "| |\n" + + "\\-----/\n" + + "/ / \\ \\\n"; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/console/FishConsole.java b/eclipse/src/pt/c06patterns/factory/s04aquatic/console/FishConsole.java new file mode 100644 index 000000000..cde7972e3 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s04aquatic/console/FishConsole.java @@ -0,0 +1,16 @@ +package pt.c06patterns.factory.s04aquatic.console; + +import pt.c06patterns.factory.s04aquatic.interfaces.ISeaAnimal; + +public class FishConsole implements ISeaAnimal { + /* . _ + |\/O\ + |/\_/ + */ + + public String image() { + return ". _\n" + + "|\\/O\\\n" + + "|/\\_/\n"; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/console/FishTankConsole.java b/eclipse/src/pt/c06patterns/factory/s04aquatic/console/FishTankConsole.java new file mode 100644 index 000000000..795d896bf --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s04aquatic/console/FishTankConsole.java @@ -0,0 +1,24 @@ +package pt.c06patterns.factory.s04aquatic.console; + +import java.util.ArrayList; + +import pt.c06patterns.factory.s04aquatic.interfaces.IFishTank; +import pt.c06patterns.factory.s04aquatic.interfaces.ISeaAnimal; + +public class FishTankConsole implements IFishTank { + ArrayList aquaticList = new ArrayList(); + + public void addSeaAnimal(ISeaAnimal aquatic) { + aquaticList.add(aquatic); + } + + public void showFishTank() { + System.out.println("+-----------------+"); + System.out.println("| |"); + for (ISeaAnimal aq: aquaticList) + System.out.println(aq.image()); + System.out.println("| |"); + System.out.println("+-----------------+"); + } + +} diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/AquaticFactoryGUI.java b/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/AquaticFactoryGUI.java new file mode 100644 index 000000000..7acfd71f5 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/AquaticFactoryGUI.java @@ -0,0 +1,23 @@ +package pt.c06patterns.factory.s04aquatic.gui; + +import pt.c06patterns.factory.s04aquatic.interfaces.IAquaticFactory; +import pt.c06patterns.factory.s04aquatic.interfaces.IFishTank; +import pt.c06patterns.factory.s04aquatic.interfaces.ISeaAnimal; + +public class AquaticFactoryGUI implements IAquaticFactory { + public ISeaAnimal createSeaAnimal(String type) { + ISeaAnimal seaAnimal = null; + if (type.equals("fish")) + seaAnimal = new FishGUI(); + else if (type.equals("crab")) + seaAnimal = new CrabGUI(); + return seaAnimal; + } + + public IFishTank createFishTank(String type) { + IFishTank fishTank = null; + if (type.equals("standard")) + fishTank = new FishTankGUI(); + return fishTank; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/CrabGUI.java b/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/CrabGUI.java new file mode 100644 index 000000000..614c7ad64 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/CrabGUI.java @@ -0,0 +1,9 @@ +package pt.c06patterns.factory.s04aquatic.gui; + +import pt.c06patterns.factory.s04aquatic.interfaces.ISeaAnimal; + +public class CrabGUI implements ISeaAnimal { + public String image() { + return CrabGUI.class.getResource(".").getPath() + "crab.png"; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/FishGUI.java b/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/FishGUI.java new file mode 100644 index 000000000..72a812ca2 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/FishGUI.java @@ -0,0 +1,9 @@ +package pt.c06patterns.factory.s04aquatic.gui; + +import pt.c06patterns.factory.s04aquatic.interfaces.ISeaAnimal; + +public class FishGUI implements ISeaAnimal { + public String image() { + return FishGUI.class.getResource(".").getPath() + "fish.png"; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/FishTankGUI.java b/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/FishTankGUI.java new file mode 100644 index 000000000..f5f76791f --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/FishTankGUI.java @@ -0,0 +1,44 @@ +package pt.c06patterns.factory.s04aquatic.gui; + +import java.awt.Color; +import java.awt.Container; +import java.awt.FlowLayout; +import java.util.ArrayList; + +import javax.swing.ImageIcon; +import javax.swing.JFrame; +import javax.swing.JLabel; + +import pt.c06patterns.factory.s04aquatic.interfaces.IFishTank; +import pt.c06patterns.factory.s04aquatic.interfaces.ISeaAnimal; + +public class FishTankGUI extends JFrame implements IFishTank { + private static final long serialVersionUID = 8757083673686143226L; + + ArrayList aquaticList = new ArrayList(); + + public void addSeaAnimal(ISeaAnimal aquatic) { + aquaticList.add(aquatic); + } + + public FishTankGUI() { + super(); + setDefaultCloseOperation(EXIT_ON_CLOSE); + } + + public void showFishTank() { + setSize(600, 300); + + Container contentPane = getContentPane(); + contentPane.setLayout(new FlowLayout()); + contentPane.setBackground(new Color(192, 192, 255)); + + for (ISeaAnimal aq: aquaticList) { + ImageIcon imagem = new ImageIcon(aq.image()); + JLabel campoImagem = new JLabel(imagem); + contentPane.add(campoImagem); + } + + setVisible(true); + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/crab.png b/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/crab.png new file mode 100644 index 000000000..809767619 Binary files /dev/null and b/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/crab.png differ diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/fish.png b/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/fish.png new file mode 100644 index 000000000..dc49590d9 Binary files /dev/null and b/eclipse/src/pt/c06patterns/factory/s04aquatic/gui/fish.png differ diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/interfaces/IAquaticFactory.java b/eclipse/src/pt/c06patterns/factory/s04aquatic/interfaces/IAquaticFactory.java new file mode 100644 index 000000000..23a5c8de2 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s04aquatic/interfaces/IAquaticFactory.java @@ -0,0 +1,6 @@ +package pt.c06patterns.factory.s04aquatic.interfaces; + +public interface IAquaticFactory { + public ISeaAnimal createSeaAnimal(String type); + public IFishTank createFishTank(String type); +} diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/interfaces/IFishTank.java b/eclipse/src/pt/c06patterns/factory/s04aquatic/interfaces/IFishTank.java new file mode 100644 index 000000000..b0994722d --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s04aquatic/interfaces/IFishTank.java @@ -0,0 +1,6 @@ +package pt.c06patterns.factory.s04aquatic.interfaces; + +public interface IFishTank { + void addSeaAnimal(ISeaAnimal aquatic); + void showFishTank(); +} diff --git a/eclipse/src/pt/c06patterns/factory/s04aquatic/interfaces/ISeaAnimal.java b/eclipse/src/pt/c06patterns/factory/s04aquatic/interfaces/ISeaAnimal.java new file mode 100644 index 000000000..cf164960c --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s04aquatic/interfaces/ISeaAnimal.java @@ -0,0 +1,5 @@ +package pt.c06patterns.factory.s04aquatic.interfaces; + +public interface ISeaAnimal { + public String image(); +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/App05ChartSequence.java b/eclipse/src/pt/c06patterns/factory/s10components/App05ChartSequence.java new file mode 100644 index 000000000..7bd94e4d7 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/App05ChartSequence.java @@ -0,0 +1,36 @@ +package pt.c06patterns.factory.s10components; + +import java.util.Scanner; + +import pt.c06patterns.factory.s10components.chart.BarChartFactory; +import pt.c06patterns.factory.s10components.chart.IBarChart; +import pt.c06patterns.factory.s10components.chart.exception.PlotException; +import pt.c06patterns.factory.s10components.sequence.IMathRatioSequence; +import pt.c06patterns.factory.s10components.sequence.SequenceFactory; + +public class App05ChartSequence { + public static void main(String args[]) { + System.out.print("Progression type (arithmetic or geometric): "); + Scanner keyboard = new Scanner(System.in); + String sequenceType = keyboard.nextLine(); + + System.out.print("Chart type (console ou graphic): "); + String chartType = keyboard.nextLine(); + + keyboard.close(); + + IMathRatioSequence gp = SequenceFactory.createSequence(sequenceType); + gp.setInitial(1); + gp.setRatio(2); + + try { + IBarChart bcg = BarChartFactory.create(chartType); + bcg.setFilled(true); + bcg.setN(7); + bcg.connect(gp); + bcg.plot(); + } catch (PlotException error) { + System.err.println("*** Error: " + error.getMessage()); + } + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/chart/BarChart.java b/eclipse/src/pt/c06patterns/factory/s10components/chart/BarChart.java new file mode 100644 index 000000000..ce90e87ae --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/chart/BarChart.java @@ -0,0 +1,37 @@ +package pt.c06patterns.factory.s10components.chart; + +import pt.c06patterns.factory.s10components.sequence.ISequence; + +public abstract class BarChart implements IBarChart { + protected boolean filled; + protected int n; + + protected ISequence sequence; + + public BarChart() { + filled = true; + n = 3; + } + + public boolean isFilled() { + return filled; + } + + public void setFilled(boolean filled) { + this.filled = filled; + } + + public int getN() { + return n; + } + + public void setN(int n) { + this.n = n; + } + + public void connect(ISequence sequence) { + this.sequence = sequence; + } + + public abstract void plot(); +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/chart/BarChartFactory.java b/eclipse/src/pt/c06patterns/factory/s10components/chart/BarChartFactory.java new file mode 100644 index 000000000..aafd72ceb --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/chart/BarChartFactory.java @@ -0,0 +1,16 @@ +package pt.c06patterns.factory.s10components.chart; + +public class BarChartFactory { + + public static IBarChart create(String type) { + IBarChart chart = null; + + if (type.equalsIgnoreCase("console")) + chart = new ConsoleBarChart(); + else if (type.equalsIgnoreCase("graphic")) + chart = new GraphicBarChart(); + + return chart; + } + +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/chart/ConsoleBarChart.java b/eclipse/src/pt/c06patterns/factory/s10components/chart/ConsoleBarChart.java new file mode 100644 index 000000000..f272a55e9 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/chart/ConsoleBarChart.java @@ -0,0 +1,41 @@ +package pt.c06patterns.factory.s10components.chart; + +import pt.c06patterns.factory.s10components.chart.exception.InvalidBlankChar; +import pt.c06patterns.factory.s10components.chart.exception.UnsupportedNegativeNumber; + +public class ConsoleBarChart extends BarChart { + private char character; + + public ConsoleBarChart() { + super(); + character = '*'; + } + + public char getCharacter() { + return character; + } + + public void setCharacter(char character) throws InvalidBlankChar { + if (character == ' ') + throw new InvalidBlankChar("the chart does not support blank character"); + this.character = character; + } + + public void plot() { + if (sequence != null) { + int value = sequence.first(); + for (int s = 1; s <= n; s++) { + if (value > 0) { + for (int v = 1; v < value; v++) + System.out.print((filled) ? character : ' '); + System.out.print(character); + } else if (value < 0) { + System.out.println("?"); + throw new UnsupportedNegativeNumber("the chart does not support a negative number"); + } + System.out.println(); + value = sequence.next(); + } + } + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/chart/GraphicBarChart.java b/eclipse/src/pt/c06patterns/factory/s10components/chart/GraphicBarChart.java new file mode 100644 index 000000000..44c6419c7 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/chart/GraphicBarChart.java @@ -0,0 +1,40 @@ +package pt.c06patterns.factory.s10components.chart; + +import java.util.ArrayList; +import java.util.List; + +import org.knowm.xchart.CategoryChart; +import org.knowm.xchart.CategoryChartBuilder; +import org.knowm.xchart.SwingWrapper; + +public class GraphicBarChart extends BarChart { + + public void plot() { + // Create Chart + CategoryChart chart = + new CategoryChartBuilder().width(800).height(600). + title("Chart").xAxisTitle("X").yAxisTitle("Y").build(); + + // Customize Chart + chart.getStyler().setChartTitleVisible(false); + chart.getStyler().setLegendVisible(false); + chart.getStyler().setAxisTitlesVisible(false); + chart.getStyler().setXAxisDecimalPattern("0"); + + // Series + List xData = new ArrayList(); + List yData = new ArrayList(); + if (sequence != null) { + int value = sequence.first(); + for (int s = 1; s <= n; s++) { + xData.add(s); + yData.add(value); + value = sequence.next(); + } + } + chart.addSeries("series", xData, yData); + + new SwingWrapper(chart).displayChart(); + } + +} \ No newline at end of file diff --git a/eclipse/src/pt/c06patterns/factory/s10components/chart/IBarChart.java b/eclipse/src/pt/c06patterns/factory/s10components/chart/IBarChart.java new file mode 100644 index 000000000..c16f685d2 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/chart/IBarChart.java @@ -0,0 +1,5 @@ +package pt.c06patterns.factory.s10components.chart; + +public interface IBarChart + extends IChart, IRSequence, IBarChartProperties { +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/chart/IBarChartProperties.java b/eclipse/src/pt/c06patterns/factory/s10components/chart/IBarChartProperties.java new file mode 100644 index 000000000..bd26e9e85 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/chart/IBarChartProperties.java @@ -0,0 +1,9 @@ +package pt.c06patterns.factory.s10components.chart; + +public interface IBarChartProperties { + public boolean isFilled(); + public void setFilled(boolean filled); + + public int getN(); + public void setN(int n); +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/chart/IChart.java b/eclipse/src/pt/c06patterns/factory/s10components/chart/IChart.java new file mode 100644 index 000000000..1a5668855 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/chart/IChart.java @@ -0,0 +1,5 @@ +package pt.c06patterns.factory.s10components.chart; + +public interface IChart { + public void plot(); +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/chart/IRSequence.java b/eclipse/src/pt/c06patterns/factory/s10components/chart/IRSequence.java new file mode 100644 index 000000000..e1950680c --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/chart/IRSequence.java @@ -0,0 +1,7 @@ +package pt.c06patterns.factory.s10components.chart; + +import pt.c06patterns.factory.s10components.sequence.ISequence; + +public interface IRSequence { + public void connect(ISequence sequence); +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/chart/exception/InvalidBlankChar.java b/eclipse/src/pt/c06patterns/factory/s10components/chart/exception/InvalidBlankChar.java new file mode 100644 index 000000000..2e72ab085 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/chart/exception/InvalidBlankChar.java @@ -0,0 +1,15 @@ +package pt.c06patterns.factory.s10components.chart.exception; + +public class InvalidBlankChar extends PlotException { + + private static final long serialVersionUID = -9219514119468607139L; + + public InvalidBlankChar() { + super(); + } + + public InvalidBlankChar(String message) { + super(message); + } + +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/chart/exception/PlotException.java b/eclipse/src/pt/c06patterns/factory/s10components/chart/exception/PlotException.java new file mode 100644 index 000000000..6fd43fa2a --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/chart/exception/PlotException.java @@ -0,0 +1,15 @@ +package pt.c06patterns.factory.s10components.chart.exception; + +public class PlotException extends RuntimeException { + + private static final long serialVersionUID = 2727260512165247433L; + + public PlotException() { + super(); + } + + public PlotException(String message) { + super(message); + } + +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/chart/exception/UnsupportedNegativeNumber.java b/eclipse/src/pt/c06patterns/factory/s10components/chart/exception/UnsupportedNegativeNumber.java new file mode 100644 index 000000000..32b2058aa --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/chart/exception/UnsupportedNegativeNumber.java @@ -0,0 +1,15 @@ +package pt.c06patterns.factory.s10components.chart.exception; + +public class UnsupportedNegativeNumber extends PlotException { + + private static final long serialVersionUID = -1248911490628763059L; + + public UnsupportedNegativeNumber() { + super(); + } + + public UnsupportedNegativeNumber(String message) { + super(message); + } + +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/sequence/ArithmeticProgression.java b/eclipse/src/pt/c06patterns/factory/s10components/sequence/ArithmeticProgression.java new file mode 100644 index 000000000..2ce240b0f --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/sequence/ArithmeticProgression.java @@ -0,0 +1,39 @@ +package pt.c06patterns.factory.s10components.sequence; + +public class ArithmeticProgression implements IMathRatioSequence { + private int initial, + ratio; + private int current; + + public ArithmeticProgression() { + initial = 1; + ratio = 1; + current = initial; + } + + public int getInitial() { + return initial; + } + + public void setInitial(int initial) { + this.initial = initial; + } + + public int getRatio() { + return ratio; + } + + public void setRatio(int ratio) { + this.ratio = ratio; + } + + public int first() { + current = initial; + return current; + } + + public int next() { + current += ratio; + return current; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/sequence/Fibonacci.java b/eclipse/src/pt/c06patterns/factory/s10components/sequence/Fibonacci.java new file mode 100644 index 000000000..2738f847f --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/sequence/Fibonacci.java @@ -0,0 +1,42 @@ +package pt.c06patterns.factory.s10components.sequence; + +public class Fibonacci implements IMathSequence { + private int initialCurrent, initialNext; + private int current, next; + + public Fibonacci() { + initialCurrent = 0; + initialNext = 1; + current = 0; + next = 1; + } + + public int getInitial() { + return initialCurrent; + } + + public void setInitial(int initial) { + current = 0; + next = 1; + while (initial > current) { + int sum = current + next; + current = next; + next = sum; + } + initialCurrent = current; + initialNext = next; + } + + public int first() { + current = initialCurrent; + next = initialNext; + return current; + } + + public int next() { + int sum = current + next; + current = next; + next = sum; + return current; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/sequence/GeometricProgression.java b/eclipse/src/pt/c06patterns/factory/s10components/sequence/GeometricProgression.java new file mode 100644 index 000000000..8597feb90 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/sequence/GeometricProgression.java @@ -0,0 +1,39 @@ +package pt.c06patterns.factory.s10components.sequence; + +public class GeometricProgression implements IMathRatioSequence { + private int initial, + ratio; + private int current; + + public GeometricProgression() { + initial = 1; + ratio = 2; + current = initial; + } + + public int getInitial() { + return initial; + } + + public void setInitial(int initial) { + this.initial = initial; + } + + public int getRatio() { + return ratio; + } + + public void setRatio(int ratio) { + this.ratio = ratio; + } + + public int first() { + current = initial; + return current; + } + + public int next() { + current *= ratio; + return current; + } +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/sequence/IMathRatioSequence.java b/eclipse/src/pt/c06patterns/factory/s10components/sequence/IMathRatioSequence.java new file mode 100644 index 000000000..61b3080a7 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/sequence/IMathRatioSequence.java @@ -0,0 +1,5 @@ +package pt.c06patterns.factory.s10components.sequence; + +public interface IMathRatioSequence + extends IMathSequence, ISeqRatioProperties { +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/sequence/IMathSequence.java b/eclipse/src/pt/c06patterns/factory/s10components/sequence/IMathSequence.java new file mode 100644 index 000000000..4ce5628fb --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/sequence/IMathSequence.java @@ -0,0 +1,5 @@ +package pt.c06patterns.factory.s10components.sequence; + +public interface IMathSequence + extends ISequence, ISeqInitialProperties { +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/sequence/ISeqInitialProperties.java b/eclipse/src/pt/c06patterns/factory/s10components/sequence/ISeqInitialProperties.java new file mode 100644 index 000000000..a53664b40 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/sequence/ISeqInitialProperties.java @@ -0,0 +1,6 @@ +package pt.c06patterns.factory.s10components.sequence; + +public interface ISeqInitialProperties { + public int getInitial(); + public void setInitial(int initial); +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/sequence/ISeqRatioProperties.java b/eclipse/src/pt/c06patterns/factory/s10components/sequence/ISeqRatioProperties.java new file mode 100644 index 000000000..213ad0a7b --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/sequence/ISeqRatioProperties.java @@ -0,0 +1,6 @@ +package pt.c06patterns.factory.s10components.sequence; + +public interface ISeqRatioProperties { + public int getRatio(); + public void setRatio(int ratio); +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/sequence/ISequence.java b/eclipse/src/pt/c06patterns/factory/s10components/sequence/ISequence.java new file mode 100644 index 000000000..37365a120 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/sequence/ISequence.java @@ -0,0 +1,6 @@ +package pt.c06patterns.factory.s10components.sequence; + +public interface ISequence { + public int first(); + public int next(); +} diff --git a/eclipse/src/pt/c06patterns/factory/s10components/sequence/SequenceFactory.java b/eclipse/src/pt/c06patterns/factory/s10components/sequence/SequenceFactory.java new file mode 100644 index 000000000..40054b639 --- /dev/null +++ b/eclipse/src/pt/c06patterns/factory/s10components/sequence/SequenceFactory.java @@ -0,0 +1,21 @@ +package pt.c06patterns.factory.s10components.sequence; + +public class SequenceFactory { + @SuppressWarnings("unchecked") + public static IType createSequence(String type) { + IType sequence = null; + + try { + if (type.equalsIgnoreCase("fibonacci")) + sequence = (IType)new Fibonacci(); + else if (type.equalsIgnoreCase("arithmetic")) + sequence = (IType)new ArithmeticProgression(); + else if (type.equalsIgnoreCase("geometric")) + sequence = (IType)new GeometricProgression(); + } catch (ClassCastException e) { + e.printStackTrace(); + } + + return sequence; + } +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s01start/App01ChartSequence.java b/eclipse/src/pt/c08componentes/s01chartseq/s01start/App01ChartSequence.java new file mode 100644 index 000000000..903d6e55e --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s01start/App01ChartSequence.java @@ -0,0 +1,22 @@ +package pt.c08componentes.s01chartseq.s01start; + +import pt.c08componentes.s01chartseq.s01start.chart.BarChart; +import pt.c08componentes.s01chartseq.s01start.chart.IBarChart; +import pt.c08componentes.s01chartseq.s01start.sequence.GeometricProgression; +import pt.c08componentes.s01chartseq.s01start.sequence.IGeometricProgression; + +public class App01ChartSequence { + public static void main(String args[]) { + IGeometricProgression gp = new GeometricProgression(); + gp.setInitial(1); + gp.setRatio(2); + + IBarChart bc = new BarChart(); + bc.setFilled(true); + bc.setCharacter('#'); + bc.setN(5); + + bc.connect(gp); + bc.plot(); + } +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/BarChart.java b/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/BarChart.java new file mode 100644 index 000000000..32fcd1b14 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/BarChart.java @@ -0,0 +1,57 @@ +package pt.c08componentes.s01chartseq.s01start.chart; + +import pt.c08componentes.s01chartseq.s01start.sequence.ISequence; + +public class BarChart implements IBarChart { + private boolean filled; + private char character; + private int n; + + private ISequence sequence; + + public BarChart() { + filled = true; + character = '*'; + n = 3; + } + + public boolean isFilled() { + return filled; + } + + public void setFilled(boolean filled) { + this.filled = filled; + } + + public char getCharacter() { + return character; + } + + public void setCharacter(char character) { + this.character = character; + } + + public int getN() { + return n; + } + + public void setN(int n) { + this.n = n; + } + + public void connect(ISequence sequence) { + this.sequence = sequence; + } + + public void plot() { + if (sequence != null) { + int value = sequence.first(); + for (int s = 1; s <= n; s++) { + for (int v = 1; v < value; v++) + System.out.print((filled) ? character : ' '); + System.out.println(character); + value = sequence.next(); + } + } + } +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/IBarChart.java b/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/IBarChart.java new file mode 100644 index 000000000..2ea3a6e0a --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/IBarChart.java @@ -0,0 +1,5 @@ +package pt.c08componentes.s01chartseq.s01start.chart; + +public interface IBarChart + extends IChart, IBarChartProperties, IRSequence { +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/IBarChartProperties.java b/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/IBarChartProperties.java new file mode 100644 index 000000000..125e25c74 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/IBarChartProperties.java @@ -0,0 +1,12 @@ +package pt.c08componentes.s01chartseq.s01start.chart; + +public interface IBarChartProperties { + public boolean isFilled(); + public void setFilled(boolean filled); + + public char getCharacter(); + public void setCharacter(char character); + + public int getN(); + public void setN(int n); +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/IChart.java b/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/IChart.java new file mode 100644 index 000000000..a8faba075 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/IChart.java @@ -0,0 +1,5 @@ +package pt.c08componentes.s01chartseq.s01start.chart; + +public interface IChart { + public void plot(); +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/IRSequence.java b/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/IRSequence.java new file mode 100644 index 000000000..e52a8ebac --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s01start/chart/IRSequence.java @@ -0,0 +1,7 @@ +package pt.c08componentes.s01chartseq.s01start.chart; + +import pt.c08componentes.s01chartseq.s01start.sequence.ISequence; + +public interface IRSequence { + public void connect(ISequence sequence); +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s01start/sequence/GeometricProgression.java b/eclipse/src/pt/c08componentes/s01chartseq/s01start/sequence/GeometricProgression.java new file mode 100644 index 000000000..28dc6cdc7 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s01start/sequence/GeometricProgression.java @@ -0,0 +1,39 @@ +package pt.c08componentes.s01chartseq.s01start.sequence; + +public class GeometricProgression implements IGeometricProgression { + private int initial, + ratio; + private int current; + + public GeometricProgression() { + initial = 1; + ratio = 2; + current = initial; + } + + public int getInitial() { + return initial; + } + + public void setInitial(int initial) { + this.initial = initial; + } + + public int getRatio() { + return ratio; + } + + public void setRatio(int ratio) { + this.ratio = ratio; + } + + public int first() { + current = initial; + return current; + } + + public int next() { + current *= ratio; + return current; + } +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s01start/sequence/IGeometricProgression.java b/eclipse/src/pt/c08componentes/s01chartseq/s01start/sequence/IGeometricProgression.java new file mode 100644 index 000000000..fed89acf0 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s01start/sequence/IGeometricProgression.java @@ -0,0 +1,5 @@ +package pt.c08componentes.s01chartseq.s01start.sequence; + +public interface IGeometricProgression + extends ISequence, IGeometricProgressionProperties { +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s01start/sequence/IGeometricProgressionProperties.java b/eclipse/src/pt/c08componentes/s01chartseq/s01start/sequence/IGeometricProgressionProperties.java new file mode 100644 index 000000000..3d4fcb590 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s01start/sequence/IGeometricProgressionProperties.java @@ -0,0 +1,9 @@ +package pt.c08componentes.s01chartseq.s01start.sequence; + +public interface IGeometricProgressionProperties { + public int getInitial(); + public void setInitial(int initial); + + public int getRatio(); + public void setRatio(int ratio); +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s01start/sequence/ISequence.java b/eclipse/src/pt/c08componentes/s01chartseq/s01start/sequence/ISequence.java new file mode 100644 index 000000000..8e53c1923 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s01start/sequence/ISequence.java @@ -0,0 +1,6 @@ +package pt.c08componentes.s01chartseq.s01start.sequence; + +public interface ISequence { + public int first(); + public int next(); +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/App02ChartSequence.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/App02ChartSequence.java new file mode 100644 index 000000000..9f8b4f2d0 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/App02ChartSequence.java @@ -0,0 +1,37 @@ +package pt.c08componentes.s01chartseq.s02sequences; + +import pt.c08componentes.s01chartseq.s02sequences.chart.GraphicBarChart; +import pt.c08componentes.s01chartseq.s02sequences.chart.IBarChart; +import pt.c08componentes.s01chartseq.s02sequences.sequence.Fibonacci; +import pt.c08componentes.s01chartseq.s02sequences.sequence.GeometricProgression; +import pt.c08componentes.s01chartseq.s02sequences.sequence.IMathRatioSequence; +import pt.c08componentes.s01chartseq.s02sequences.sequence.IMathSequence; + +public class App02ChartSequence { + public static void main(String args[]) { + System.out.println("Geometric Progression:"); + + IMathRatioSequence gp = new GeometricProgression(); + gp.setInitial(1); + gp.setRatio(2); + + IBarChart bcg = new GraphicBarChart(); + bcg.setFilled(true); + bcg.setN(5); + + bcg.connect(gp); + bcg.plot(); + + System.out.println("\nFibonacci Sequence:"); + + IMathSequence fb = new Fibonacci(); + fb.setInitial(1); + + IBarChart bcf = new GraphicBarChart(); + bcf.setFilled(true); + bcf.setN(5); + + bcf.connect(fb); + bcf.plot(); + } +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/BarChart.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/BarChart.java new file mode 100644 index 000000000..e322ba5a2 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/BarChart.java @@ -0,0 +1,37 @@ +package pt.c08componentes.s01chartseq.s02sequences.chart; + +import pt.c08componentes.s01chartseq.s02sequences.sequence.ISequence; + +public abstract class BarChart implements IBarChart { + protected boolean filled; + protected int n; + + protected ISequence sequence; + + public BarChart() { + filled = true; + n = 3; + } + + public boolean isFilled() { + return filled; + } + + public void setFilled(boolean filled) { + this.filled = filled; + } + + public int getN() { + return n; + } + + public void setN(int n) { + this.n = n; + } + + public void connect(ISequence sequence) { + this.sequence = sequence; + } + + public abstract void plot(); +} \ No newline at end of file diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/ConsoleBarChart.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/ConsoleBarChart.java new file mode 100644 index 000000000..603f36a25 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/ConsoleBarChart.java @@ -0,0 +1,33 @@ +package pt.c08componentes.s01chartseq.s02sequences.chart; + +public class ConsoleBarChart extends BarChart { + private char character; + + public ConsoleBarChart() { + super(); + character = '*'; + } + + public char getCharacter() { + return character; + } + + public void setCharacter(char character) { + this.character = character; + } + + public void plot() { + if (sequence != null) { + int value = sequence.first(); + for (int s = 1; s <= n; s++) { + if (value > 0) { + for (int v = 1; v < value; v++) + System.out.print((filled) ? character : ' '); + System.out.print(character); + } + System.out.println(); + value = sequence.next(); + } + } + } +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/GraphicBarChart.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/GraphicBarChart.java new file mode 100644 index 000000000..fce36dbfa --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/GraphicBarChart.java @@ -0,0 +1,40 @@ +package pt.c08componentes.s01chartseq.s02sequences.chart; + +import java.util.ArrayList; +import java.util.List; + +import org.knowm.xchart.CategoryChart; +import org.knowm.xchart.CategoryChartBuilder; +import org.knowm.xchart.SwingWrapper; + +public class GraphicBarChart extends BarChart { + + public void plot() { + // Create Chart + CategoryChart chart = + new CategoryChartBuilder().width(800).height(600). + title("Chart").xAxisTitle("X").yAxisTitle("Y").build(); + + // Customize Chart + chart.getStyler().setChartTitleVisible(false); + chart.getStyler().setLegendVisible(false); + chart.getStyler().setAxisTitlesVisible(false); + chart.getStyler().setXAxisDecimalPattern("0"); + + // Series + List xData = new ArrayList(); + List yData = new ArrayList(); + if (sequence != null) { + int value = sequence.first(); + for (int s = 1; s <= n; s++) { + xData.add(s); + yData.add(value); + value = sequence.next(); + } + } + chart.addSeries("series", xData, yData); + + new SwingWrapper(chart).displayChart(); + } + + } \ No newline at end of file diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/IBarChart.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/IBarChart.java new file mode 100644 index 000000000..d8dcba4a2 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/IBarChart.java @@ -0,0 +1,5 @@ +package pt.c08componentes.s01chartseq.s02sequences.chart; + +public interface IBarChart + extends IChart, IRSequence, IBarChartProperties { +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/IBarChartProperties.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/IBarChartProperties.java new file mode 100644 index 000000000..a01ae1109 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/IBarChartProperties.java @@ -0,0 +1,9 @@ +package pt.c08componentes.s01chartseq.s02sequences.chart; + +public interface IBarChartProperties { + public boolean isFilled(); + public void setFilled(boolean filled); + + public int getN(); + public void setN(int n); +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/IChart.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/IChart.java new file mode 100644 index 000000000..f6be0ea27 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/IChart.java @@ -0,0 +1,5 @@ +package pt.c08componentes.s01chartseq.s02sequences.chart; + +public interface IChart { + public void plot(); +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/IRSequence.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/IRSequence.java new file mode 100644 index 000000000..94a5b2d5c --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/chart/IRSequence.java @@ -0,0 +1,7 @@ +package pt.c08componentes.s01chartseq.s02sequences.chart; + +import pt.c08componentes.s01chartseq.s02sequences.sequence.ISequence; + +public interface IRSequence { + public void connect(ISequence sequence); +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/ArithmeticProgression.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/ArithmeticProgression.java new file mode 100644 index 000000000..cbf3594c4 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/ArithmeticProgression.java @@ -0,0 +1,41 @@ +package pt.c08componentes.s01chartseq.s02sequences.sequence; + +import pt.c06patterns.factory.s10components.sequence.IMathRatioSequence; + +public class ArithmeticProgression implements IMathRatioSequence { + private int initial, + ratio; + private int current; + + public ArithmeticProgression() { + initial = 1; + ratio = 1; + current = initial; + } + + public int getInitial() { + return initial; + } + + public void setInitial(int initial) { + this.initial = initial; + } + + public int getRatio() { + return ratio; + } + + public void setRatio(int ratio) { + this.ratio = ratio; + } + + public int first() { + current = initial; + return current; + } + + public int next() { + current += ratio; + return current; + } +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/Fibonacci.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/Fibonacci.java new file mode 100644 index 000000000..df18d4138 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/Fibonacci.java @@ -0,0 +1,42 @@ +package pt.c08componentes.s01chartseq.s02sequences.sequence; + +public class Fibonacci implements IMathSequence { + private int initialCurrent, initialNext; + private int current, next; + + public Fibonacci() { + initialCurrent = 0; + initialNext = 1; + current = 0; + next = 1; + } + + public int getInitial() { + return initialCurrent; + } + + public void setInitial(int initial) { + current = 0; + next = 1; + while (initial > current) { + int sum = current + next; + current = next; + next = sum; + } + initialCurrent = current; + initialNext = next; + } + + public int first() { + current = initialCurrent; + next = initialNext; + return current; + } + + public int next() { + int sum = current + next; + current = next; + next = sum; + return current; + } +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/GeometricProgression.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/GeometricProgression.java new file mode 100644 index 000000000..2d5ed8eb0 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/GeometricProgression.java @@ -0,0 +1,39 @@ +package pt.c08componentes.s01chartseq.s02sequences.sequence; + +public class GeometricProgression implements IMathRatioSequence { + private int initial, + ratio; + private int current; + + public GeometricProgression() { + initial = 1; + ratio = 2; + current = initial; + } + + public int getInitial() { + return initial; + } + + public void setInitial(int initial) { + this.initial = initial; + } + + public int getRatio() { + return ratio; + } + + public void setRatio(int ratio) { + this.ratio = ratio; + } + + public int first() { + current = initial; + return current; + } + + public int next() { + current *= ratio; + return current; + } +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/IMathRatioSequence.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/IMathRatioSequence.java new file mode 100644 index 000000000..902000c8e --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/IMathRatioSequence.java @@ -0,0 +1,5 @@ +package pt.c08componentes.s01chartseq.s02sequences.sequence; + +public interface IMathRatioSequence + extends IMathSequence, ISeqRatioProperties { +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/IMathSequence.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/IMathSequence.java new file mode 100644 index 000000000..ae1db7ae2 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/IMathSequence.java @@ -0,0 +1,5 @@ +package pt.c08componentes.s01chartseq.s02sequences.sequence; + +public interface IMathSequence + extends ISequence, ISeqInitialProperties { +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/ISeqInitialProperties.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/ISeqInitialProperties.java new file mode 100644 index 000000000..3ee72042d --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/ISeqInitialProperties.java @@ -0,0 +1,6 @@ +package pt.c08componentes.s01chartseq.s02sequences.sequence; + +public interface ISeqInitialProperties { + public int getInitial(); + public void setInitial(int initial); +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/ISeqRatioProperties.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/ISeqRatioProperties.java new file mode 100644 index 000000000..1c8d98ce5 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/ISeqRatioProperties.java @@ -0,0 +1,6 @@ +package pt.c08componentes.s01chartseq.s02sequences.sequence; + +public interface ISeqRatioProperties { + public int getRatio(); + public void setRatio(int ratio); +} diff --git a/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/ISequence.java b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/ISequence.java new file mode 100644 index 000000000..c1a0e2915 --- /dev/null +++ b/eclipse/src/pt/c08componentes/s01chartseq/s02sequences/sequence/ISequence.java @@ -0,0 +1,6 @@ +package pt.c08componentes.s01chartseq.s02sequences.sequence; + +public interface ISequence { + public int first(); + public int next(); +} diff --git a/templates/2021/lab02/README.md b/templates/2021/lab02/README.md index 49161c5b4..b41500cb7 100644 --- a/templates/2021/lab02/README.md +++ b/templates/2021/lab02/README.md @@ -1,34 +1,20 @@ -# Modelo para Apresentação do Lab01 - Data Flow +# Modelo para Apresentação do Lab02 - Data Flow & MVC Estrutura de pastas: ~~~ ├── README.md <- arquivo apresentando a tarefa │ -├── images <- arquivos de imagens usadas no documento -│ -└── orange <- arquivos do Orange +└── notebook <- arquivo do notebook ~~~ # Aluno * `` -# Tarefa 1 - Workflow para Recomendação de Zombie Meals - -## Imagem do Projeto -> Coloque uma imagem da captura de tela com o projeto do Orange (veja exemplo abaixo). -![Workflow Orange](images/orange-zombie-meals-prediction.png) - -## Arquivo do Projeto -> Coloque um link para o arquivo em Orange. - -# Tarefa 2 - Projeto de Composição para Venda e Recomendação - -## Diagrama de Componentes +## Tarefas da parte 1 sobre criação de componentes -> Imagem (`PNG`) do diagrama de componentes (veja exemplo abaixo). -![Diagrama Venda](images/diagrama-componentes-venda.png) +> Coloque um link para o arquivo do notebook com a resolução das duas tarefas do notebook `components-1-chart-single-class.ipynb`. Ele estará dentro da pasta `notebook`. -## Texto Explicativo +## Tarefas da parte 2 sobre composição de componentes do catálogo -> Texto explicando diagrama, conforme especificação do laboratório. +> Coloque um link para o arquivo do notebook com a resolução das seis tarefas do notebook `components-4-catalog.ipynb`. Ele estará dentro da pasta `notebook`.