안녕하세요. Brad입니다. '좌표계산기'에서 오늘 요구사항은 '사각형 면적' 구하기 입니다. 주변에 많은 분들이 '넓이를 어떻게 구할 수 있을까?' 하는 고민을 하시는 것 보았는데요. 오늘 저도 그와 같은 고민을 하겠네요. 우선 설계부터 시작하도록 하겠습니다.
어떻게 구현하였나?
Point
는 한개가 되든 여러개가 되든 일단 다 받아둔다.- 포인트가 직선, 사각형이 아니더라도 UI에 찍어야 하기 때문
utils
패키지에서TextParser
부분에서 따로Point
개수에 대한 제한을 두지 말 것
직사각형 체크를 어떻게 할 것인가(4개의
Point
로 어떻게 직사각형인지 알 수 있을까)?- 가장 많이 고민되고 시간을 많이 투자했던 부분입니다.
- 직사각형 판별은 다음과 같은 가정(아직 수학적으로 확신하지 못하기 때문..)을 하여 구현합니다. '각
Point
의 평균(직사각형의 중점)으로부터 각 점까지 거리가 같으면 직사각형(정사각형)이다' - 직사각형으로 판별된 것에 한하여 직사각형 넓이는 한 점에서 각 점까지 길이를 구하면 3개가 길이가 나옵니다. (Width, Height, 대각선) 이렇게 나오게 되는데요. 직사각형에서 대각선 길이가 제일 길기 때문에 길이 정렬 후 작은 순으로 2개를 곱하면 직사각형 넓이가 됩니다.
- 주어진 정보를 이용해 직사각형이 맞음을 수학적으로 증명해보고 싶었는데 초록색으로 동그라미 된 부분, 즉 그 중점이 대각선이 지나가는 위치인지를 어떻게 증명해야할지 모르겠습니다 ㅠㅠ
Point
를 따로 보내지 말고ResultDto
에 같이 보내서 처리할 것(피드백 반영)- Pobi의 피드백에 내용입니다. 이 부분은 따로 처리하던 것을 Result 계산하는 부분에서
ResultDto
에 같이 넣어 처리할 수 있도록 하였습니다.
- Pobi의 피드백에 내용입니다. 이 부분은 따로 처리하던 것을 Result 계산하는 부분에서
고민되던 부분, 개선하고 싶은 부분
3개의 조건으로 나누어 조건문을 써야할 경우 어떻게 2개의 조건으로 나눌 수 없을까?
- 2개의 조건일 경우
if
문 안에 return처리함으로써 좀 더 깔끔하게 처리할 수 있었습니다. - 하지만 3개의 경우 어떻게 처리할 수 있을지, 만약 구조를 바꾸어야한다면 어떻게 바꾸어야 할지 고민을 하였습니다.
- 예를들어 각 점에 대한 좌표들을 받을 때 이게 직선인지, 사각형인지, 아니면 둘 다 아닌지와 같은 상황입니다.
- 2개의 조건일 경우
만약 오버로딩하여 여러 타입의 매개변수를 받을 수 있다면 인스턴스 변수는 따로 다 만들고, 또 그 인스턴스 변수를 이용한 메서드도 각각 다 만들어야 하나?
- 예를들어
Point
안의 x값, y값 각각에 대하여int
를 받을 때와double
받을 때가 있는 경우 - 우선 현재
double
로 받아서int
써야할 때(좌표를 찍어줄 때)는 casting하여 형변환하여 사용 중입니다.
- 예를들어
'TIL' 카테고리의 다른 글
Today's Dev Notes(2018-10-15) (0) | 2018.10.15 |
---|---|
Today's Dev Notes(2018-10-12) (0) | 2018.10.12 |
Today's Dev Notes(2018-10-08) (0) | 2018.10.09 |
Today's Dev Notes(2018-10-05) (2) | 2018.10.05 |
Today's Dev Notes(2018-10-04) (0) | 2018.10.05 |