2016년 3월 29일 화요일

Java 3/29 4장 클래스와 객체(객체 배열, 생성자, 오버로딩)

4장 클래스와 객체(객체 배열, 생성자, 오버로딩)

실습

사각형(Rectangle) 클래스 완성하기 - 교재 p.235 실습문제 2번 변형
아래 소스에서 TODO로 되어 있는 부분의 내용을 채워서, main()이 적절히 동작하도록 만드시오. equals(), in(), overlap()은 모두 true를 리턴하게 됨
https://github.com/jyheo/JavaExercise/blob/master/src/classes/Rectangle.java

  • setPoints() - 인자로 받은 x, y 좌표들이 모두 0보다 커야 함
  • getWidth() - 가로 길이(x좌표 이용)
  • getHeight() - 세로 길이(y좌표 이용)
  • getArea() - 면적
  • equals() - 인자로 받은 사각형과 위치와 크기가 동일하면 true리턴
  • in() - 인자로 받은 사각형 내부에 위치한다면 true리턴
  • overlap() -인자로 받은 사각형과 겹치는 부분이 존재한다면 true리턴

이론

https://github.com/jyheo/JavaExercise/blob/master/src/classes/Set.java

  • 객체 배열 -> 정확히는 객체 레퍼런스의 배열
    • Set[] sets = new Set[5];
  • this 레퍼런스
    • 객체 자신을 가리키기 위한 레퍼런스
    • this.array
    • this.size
  • 생성자(Constructor)
    • Set()
    • Set(int[] a)
    • Set(Set s)
    • 생성자에서만 사용 가능한 this()
  • 메소드 오버로딩
    • addElement(int )
    • addElement(int[] )
    • 생성자 3개도 오버로딩임
  • Garbage collection
    • 더이상 참조하는 레퍼런스 변수가 존재하지 않는다면, 즉 어떤 객체를 참조할 방법이 존재하지 않는다면, 쓰레기가 되어 자동으로 처리됨.
    • 자바에서는 new로 만든 객체의 소멸에 대해 신경쓸 필요 없음.

실습2


  • 앞의 예에서 System.arraycopy() 대신에 사용할 적당한 private 메소드를 만들어서 쓰시오.
  • public static Set intersection(Set A, Set B)를 구현하시오.
  • Set(int[]) 생성자의 내용에서 인자로 받은 배열을 그대로 복사하지 말고, 집합 원소 중복되지 않게 검사하면서 추가하도록 고치시오. addElement(int[])를 활용하면 됨