Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/main/java/coordinate/CoordinateMain.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
import coordinate.inputview.InputView;
import coordinate.resultview.ResultView;

import java.util.ArrayList;
import java.util.List;

public class CoordinateMain extends IllegalAccessException {
public static void main(String[] args) {
ArrayList<Point> points;
List<Point> points;
try {
points = InputView.input();
PointDtoFactory pointDtoFactory = new PointDtoFactory(points);
Expand All @@ -20,7 +20,7 @@ public static void main(String[] args) {
coordinate.drawPoint(pointDtoFactory.getPointDTO());

ResultView resultView = new ResultView(coordinate.getCoordinatesAxis(), coordinate.getCoordinatePlane());
resultView.toDisplay(FigureFactory.create(points).result());
resultView.displayResult(FigureFactory.create(points));

} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
Expand Down
28 changes: 18 additions & 10 deletions src/main/java/coordinate/domain/AbstractFigure.java
Original file line number Diff line number Diff line change
@@ -1,38 +1,46 @@
package coordinate.domain;

import java.util.ArrayList;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

public abstract class AbstractFigure implements Figure{
protected ArrayList<Point> points;
public abstract class AbstractFigure implements Figure {
private List<Point> points;

public AbstractFigure(ArrayList<Point> points) {
AbstractFigure(List<Point> points) {
this.points = points;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

figureException() 처리를 이 생성자에서 처리하도록 구현하고 자식 생성자에서 figureException()를 호출하지 않도록 구현해 본다.

figureException();
}

private Boolean isSamePoint() {
HashSet<Point> isTrue = new HashSet<>(points);
Set<Point> isTrue = new HashSet<>(points);
return isTrue.size() == this.points.size();
}

public String result() {
private void figureException() {
if (this.points.size() < size()) {
return name() + "이 아닙니다.";
throw new IllegalArgumentException(name() + "이 아닙니다. 다시 입력 해주세요");
}
if (!isSamePoint()) {
throw new IllegalArgumentException("같은 점을 입력했습니다. " + name() + "이 아닙니다. 다시 입력해 주세요");
}
if (!isFigure()) {
throw new IllegalArgumentException(name() + "이 아닙니다. 다시 입력 해주세요");
}
return name()+ "의 면적은 " + area() + " 입니다.";
}

protected boolean isFigure() {
return true;
}

protected abstract String name();

protected abstract int size();

protected Point getPoint(int index) {
return points.get(index);
}

protected List<Point> getPoints() {
return points;
}
}
16 changes: 9 additions & 7 deletions src/main/java/coordinate/domain/Coordinate.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@
import coordinate.utils.CoordinateString;

import java.util.ArrayList;
import java.util.List;

public class Coordinate {
private static final int MAXiMUM_NUM = 24;
private ArrayList<CoordinateString> coordinatesAxis;
private ArrayList<CoordinateYLine> coordinatePlane;
private List<CoordinateString> coordinatesAxis;
private List<CoordinateYLine> coordinatePlane;

public Coordinate() {
this.coordinatesAxis = makeCoordinateAxis();
Expand All @@ -23,25 +24,26 @@ private ArrayList<CoordinateYLine> makeCoordinatePlane() {
return coordinatePlane;
}

private ArrayList<CoordinateString> makeCoordinateAxis() {
ArrayList<CoordinateString> numCoordinate = new ArrayList<>();
private List<CoordinateString> makeCoordinateAxis() {
List<CoordinateString> numCoordinate = new ArrayList<>();
for (int i = 0; i <= MAXiMUM_NUM; i++) {
numCoordinate.add(new CoordinateString(i));
}
return numCoordinate;
}

public void drawPoint(ArrayList<PointDTO> points) {
public void drawPoint(List<PointDTO> points) {
for (PointDTO point : points) {
this.coordinatePlane.get(point.getYPointDTO()).toMarking(point.getXPointDTO());
}
}

public ArrayList<CoordinateString> getCoordinatesAxis() {
public List<CoordinateString> getCoordinatesAxis() {

return coordinatesAxis;
}

public ArrayList<CoordinateYLine> getCoordinatePlane() {
public List<CoordinateYLine> getCoordinatePlane() {
return coordinatePlane;
}
}
12 changes: 7 additions & 5 deletions src/main/java/coordinate/domain/CoordinateYLine.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,30 @@
import coordinate.utils.CoordinateString;

import java.util.ArrayList;
import java.util.List;

public class CoordinateYLine {
private static final int MAXiMUM_NUM = 24;

private ArrayList<CoordinateString> coordinateLine;
private List<CoordinateString> coordinateLine;

public CoordinateYLine() {
this.coordinateLine = makeLine();
}

public ArrayList<CoordinateString> makeLine() {
ArrayList<CoordinateString> line = new ArrayList<>();
private List<CoordinateString> makeLine() {
List<CoordinateString> line = new ArrayList<>();
for (int i = 0; i <= MAXiMUM_NUM; i++) {
line.add(new CoordinateString());
}
return line;
}

public void toMarking(int xPoint) {
void toMarking(int xPoint) {
this.coordinateLine.get(xPoint).toMarking();
}

public ArrayList<CoordinateString> getCoordinateLine() {
public List<CoordinateString> getCoordinateLine() {
return coordinateLine;
}

Expand Down
2 changes: 2 additions & 0 deletions src/main/java/coordinate/domain/Figure.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package coordinate.domain;

public interface Figure {
String name();

double area();
}
4 changes: 2 additions & 2 deletions src/main/java/coordinate/domain/FigureCreator.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package coordinate.domain;

import java.util.ArrayList;
import java.util.List;

public interface FigureCreator {
AbstractFigure create(ArrayList<Point> points);
Figure create(List<Point> points);
}
15 changes: 9 additions & 6 deletions src/main/java/coordinate/domain/FigureFactory.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
package coordinate.domain;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class FigureFactory {
private static HashMap<Integer, FigureCreator> whatFigure = new HashMap<>();
private static Map<Integer, FigureCreator> whatFigure = new HashMap<>();

static {
whatFigure.put(2,new LineFactory());
whatFigure.put(3,new TriangleFactory());
whatFigure.put(4,new RectangleFactory());
whatFigure.put(2, new LineFactory());
whatFigure.put(3, new TriangleFactory());
whatFigure.put(4, new RectangleFactory());
}
public static AbstractFigure create(ArrayList<Point> points) {

public static Figure create(List<Point> points) {
if (!whatFigure.containsKey(points.size())) {
throw new IllegalArgumentException("도형이 아닙니다.");
}
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/coordinate/domain/Line.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package coordinate.domain;

import java.util.ArrayList;
import java.util.List;

public class Line extends AbstractFigure {

public Line(ArrayList<Point> points) {
public Line(List<Point> points) {
super(points);
}

@Override
protected String name() {
public String name() {
return "직선";
}

Expand All @@ -20,7 +20,7 @@ protected int size() {

@Override
public double area() {
return points.get(0).calculateLIne(points.get(1));
return getPoint(0).calculateLIne(getPoint(1));
}

}
4 changes: 2 additions & 2 deletions src/main/java/coordinate/domain/LineFactory.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package coordinate.domain;

import java.util.ArrayList;
import java.util.List;

public class LineFactory implements FigureCreator {
@Override
public AbstractFigure create(ArrayList<Point> points) {
public AbstractFigure create(List<Point> points) {
return new Line(points);
}
}
22 changes: 12 additions & 10 deletions src/main/java/coordinate/domain/Point.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,40 +16,42 @@ public Point(int x, int y) {
public double calculateLIne(Point point) {
int a = this.xPoint - point.xPoint;
int b = this.yPoint - point.yPoint;
return Math.sqrt((Math.pow(a,2) + Math.pow(b,2)));
return Math.sqrt((Math.pow(a, 2) + Math.pow(b, 2)));
}

public Boolean compareXPoint(Point point) {
Boolean compareXPoint(Point point) {
return this.xPoint == point.xPoint;
}

public Boolean compareYPoint(Point point) {
Boolean compareYPoint(Point point) {
return this.yPoint == point.yPoint;
}

public int subtractionXPoint(Point point) {
int subtractionXPoint(Point point) {
return Math.abs(this.xPoint - point.xPoint);
}
public int subtractionYPoint(Point point) {

int subtractionYPoint(Point point) {
return Math.abs(this.yPoint - point.yPoint);
}


public int isException(int num) {
if (num >25 || num < 0) {
private int isException(int num) {
if (num > 25 || num < 0) {
throw new IllegalArgumentException("유효한 범위를 초과 합니다.");
}
return num;
}

public PointDTO makePointDTO() {
return new PointDTO(this.xPoint,this.yPoint);
return new PointDTO(this.xPoint, this.yPoint);
}

public int getXPoint() {
int getXPoint() {
return xPoint;
}

public int getYPoint() {
int getYPoint() {
return yPoint;
}

Expand Down
9 changes: 5 additions & 4 deletions src/main/java/coordinate/domain/PointFactory.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package coordinate.domain;

import java.util.ArrayList;
import java.util.List;

public class PointFactory {

public static ArrayList<Point> makePointFactory(String input) {
ArrayList<Point> points = new ArrayList<>();
public static List<Point> makePointFactory(String input) {
List<Point> points = new ArrayList<>();
String[] divisionPoints = input.split("-");
for (String point : divisionPoints) {
points.add(makePoint(point));
Expand All @@ -22,10 +23,10 @@ private static String replaceString(String point) {

private static Point makePoint(String point) {
String[] pointCoordinate = replaceString(point).split(",");
return new Point(Integer.parseInt(pointCoordinate[0]),Integer.parseInt(pointCoordinate[1]));
return new Point(Integer.parseInt(pointCoordinate[0]), Integer.parseInt(pointCoordinate[1]));
}

public static ArrayList<Point> testInput(String input) {
public static List<Point> testInput(String input) {
return makePointFactory(input);
}

Expand Down
31 changes: 15 additions & 16 deletions src/main/java/coordinate/domain/Rectangle.java
Original file line number Diff line number Diff line change
@@ -1,40 +1,39 @@
package coordinate.domain;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

public class Rectangle extends AbstractFigure {
private HashSet<Integer> base = new HashSet<>();
private HashSet<Integer> height = new HashSet<>();

public Rectangle(ArrayList<Point> points) {
public Rectangle(List<Point> points) {
super(points);
for (Point point : this.points) {
this.base.add(point.getXPoint());
this.height.add(point.getYPoint());
}
}

private int[] findBaseHeight() {
int[] BaseAndHeight = new int[2];
for (int i = 1; i < points.size(); i++) {
if (points.get(0).compareXPoint(points.get(i)).equals(true)) {
BaseAndHeight[0] = points.get(0).subtractionYPoint(points.get(i));
for (int i = 1; i < getPoints().size(); i++) {
if (getPoint(0).compareXPoint(getPoint(i)).equals(true)) {
BaseAndHeight[0] = getPoint(0).subtractionYPoint(getPoint(i));
}
if (points.get(0).compareYPoint(points.get(i)).equals(true)) {
BaseAndHeight[1] = points.get(0).subtractionXPoint(points.get(i));
if (getPoint(0).compareYPoint(getPoint(i)).equals(true)) {
BaseAndHeight[1] = getPoint(0).subtractionXPoint(getPoint(i));
}
}
return BaseAndHeight;
}

@Override
protected boolean isFigure() {
return this.base.size() == 2 && this.height.size() == 2;
HashSet<Integer> base = new HashSet<>();
HashSet<Integer> height = new HashSet<>();
for (Point point : getPoints()) {
base.add(point.getXPoint());
height.add(point.getYPoint());
}
return base.size() == 2 && height.size() == 2;
}

@Override
protected String name() {
public String name() {
return "사각형";
}

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/coordinate/domain/RectangleFactory.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package coordinate.domain;

import java.util.ArrayList;
import java.util.List;

public class RectangleFactory implements FigureCreator {
@Override
public AbstractFigure create(ArrayList<Point> points) {
public AbstractFigure create(List<Point> points) {
return new Rectangle(points);
}
}
Loading