韜光養晦/Head First Java
클래스 개발 = 준비코드 + 테스트 코드 + 실제 코드
단순대왕
2010. 8. 3. 09:17
자바 클래스를 설계할 때 가장 근본적으로 고려해야 할 것은 무엇일까요?
어떤 의문점으로부터 출발해야 할까요?
클래스를 설계할 때 사용할 체크 목록을 만든다면 어떤 내용을 포함시키는 것이 좋을까요?
클래스 개발
어떤 의문점으로부터 출발해야 할까요?
클래스를 설계할 때 사용할 체크 목록을 만든다면 어떤 내용을 포함시키는 것이 좋을까요?
클래스 개발
- 클래스에서 어떤 것을 해야 하는지를 파악합니다.
- 인스턴스 변수와 메소드 목록을 작성합니다.
- 메소드를 만들기 위한 준비 코드를 만듭니다.
- 메소드에 대한 테스트 코드를 만듭니다.
- 클래스를 구현합니다.
- 메소드를 테스트합니다.
- 필요하면 디버그를 하거나 다시 구현합니다.
준비 코드 : 문법보다는 논리를 중점적으로 살펴보기 위해 유사코드 형태로 표현
테스트 코드 : 실제 코드를 테스트하고 작업이 제대로 처리되는지 확인하기 위한 클래스 또는 메소드
실제 코드 : 클래스를 실제로 구현한 코드
왼쪽 뇌 : 순차적으로 단계를 밟아가는 것, 논리적인 문제 해결, 분석 같은 작업을 처리
오른쪽 뇌 : 은유, 창조적인 문제 해결, 패턴 매칭, 시각화 등을 처리
핵심정리)
1. 객체지향적인 프로그래밍을 하면 제작과 테스트 과정이 끝난 코드를 건드리지 않고도 프로그램을 확장할 수
있습니다. (확장할 수 있어야 합니다.)
2. 모든 자바 코드는 클래스 내에서 정의됩니다.
3. 클래스는 해당 클래스 유형의 객체를 만드는 방법을 설명하는 역할을 합니다. 클래스는 청사진과 같다고 할 수
있지요.
4. 객체는 각자 알아서 자기 할 일을 처리할 수 있습니다. 사용자는 객체에서 작업을 처리하는 방법에 대해서는
신경쓰지 않아도 됩니다.
5. 객체에는 알고 있는 것과 할 수 있는 것이 있습니다.
6. 객체가 자기 자신에 대해 알고 있는 것은 인스턴스 변수라고 부릅니다. 객체의 상태를 나타내지요.
7. 객체가 할 수 있는 것은 메소드라고 부릅니다. 객체의 행동을 나타내지요.
8. 클래스를 새로 만들 때는 그 클래스 유형의 객체를 만들어서 테스트하는 테스트용 클래스를 따로 만들어보는
것이 좋습니다.
9. 클래스에서는 덜 구체적인 상위클래스로부터 인스턴스 변수와 메소드를 상속할 수 있습니다.
10. 프로그램을 실행시킬 때 보면 자바 프로그램이란 결국 다른 객체와 대화를 하는 객체에 불과합니다.
Example)
1. 클래스 네 개에 공통적으로 들어있는 것을 찾아냈지.
2. 네 개는 전부 도형에 속하고 모두 그 도형을 회전시키고 사운드를 재생하는 기능을 하잖아?
그래서 공통적인 기능을 뽑아서 Shape 라는 새로운 클래스에 집어 넣었어.
3. 그리고 나머지 도형 클래스 네 개를 상속이라는 관계로 Shape 클래스와 연결시켰지.
4. 아메바 클래스에서 상위클래스인 Shape의 rotate()와 playSound() 메소드를 오버라이드 했어.
오버라이딩 (override)은
"하위 클래스에서 메소드의 역할을 변경하거나 확장할 필요가 있을 때 상속받은 메소드를 새로 정의하는 것"을
의미하지.