Skip to content

Latest commit

 

History

History

section2

README.md

메서드와 생성자

  • 클래스는 서로 관련있는 데이터들을 하나의 단위로 묶어두기 위한 것이다.
  • 하지만 이것이 전부가 아니다.
  • 서로 관련있는 데이터들 뿐 아니라, 그 데이터와 관련이 깊은 메서드도 함께 묶어 둘 수 있다.
  • 이렇게 함으로써 코드의 응집도(cohesion)를 높이고 결합도(coupling)를 낮출 수 있다.

image

image

image

image

image

image


(2/3)

생성자

  • 클래스 안에 그 클래스와 동일한 이름을 가지며 return 타입이 없는 특별한 메서드를 둘 수 있다. 이것을 생성자(constructor)라고 부른다.
  • 생성자는 new 명령으로 객체가 생성될 때 자동으로 실행된다. 주 목적은 객체의 데이터 필드의 (내가 원하는 값으로) 값을 초기화하는 것이다.

image

생성자를 사용하면 코드를 간단, 명료하게, 가독성 높게 할 수 있다.

image

image

모든 클래스가 생성자를 가져야하는 것은 아니지만, 생성자를 만들어두면 유용하다!

image


제2-1장(Chapter2 Section1 패키지)에서 다뤘던 직사각형 여러개를 입력받아서 면적에 대한 오름차순으로 정렬하는 것을 했었는데(Code05.java, MyPoint1.java, MyRectangle1.java), 그 프로그램에 생성자를 적용해서 다시 짜본다.

image

image

(Code09.java, MyRectangle2.java, MyPoint2.java 파일)

image


(3/3)

image

image

OrthoLine.java : 수직선분이나 수평선분을 표현하기 위한 클래스

image

두 선분이 교차하기 위해서는 수평 선분의 양 끝점이 수직 선분의 양 쪽에 하나씩 있어야된다는 것이고, 또 수직 선분의 양 끝점은 수평 선분의 양쪽에 하나씩.. 하나는 위에 하나는 아래에.. 이런 조건을 만족해야 두 선분이 교차하게 되고, 또 그런 조건을 만족하면 두 선분은 교차하게 된다. (노란색 표시)

image

만약에 p.x가 q.x보다 크다면 그 얘기는 p는 오른쪽에 있고 q는 왼쪽에 있고... 이 경우는 선분은 수평 선분, 그런 경우에는 이 두 점을 swap()하겠다는 것이다. swap()함수는 u와 v를 자리를 바꾸는 전형적인 swap하는 것.
그래서, 만약에 두 점이 들어왔는데, p가 q보다 더 오른쪽에 있다면 p, q의 자리를 바꿔서 항상 u가 왼쪽점 v가 오른쪽점 이렇게 되게 만들어두겠다는 뜻이다. (노란색 표시 참고)

그 다음에 수직 선분의 경우에도 만약에 p.x와 q.x가 같고(즉, 일단 수직선이고), 그러면서 p.y가 q.y보다 더 크다는 얘기는 p의 y좌표가 더 크다는거니까 그 경우에도 swap을 해서 항상 수직선의 경우에는 y좌표가 더 작은 쪽을 u, 수평선의 경우에는 x좌표가 더 작은 쪽을 u 이렇게 부르도록 만들어준 것이다. (파란색 표시 참고)

(※ 헷갈림 주의... 여기 강의에서는 y좌표가 아래로 갈수록 더 크다고 하고 있음)

image

(이런 경우 교차하는지 안하는지 문제는 피해가고 있음(이런 경우는 없다고 가정), 기하학적으로 문제를 풀자는게 아니기 때문에)

OrthoLine 클래스는 하나의 선분을 표현하는 클래스이다. 우리는 다각형이 있어야 한다.

OrthoPolygon.java : 직교 다각형을 표현하는 클래스

마지막으로 메인함수를 포함할 코드는 Code10.java

image