Whiteship's Note


Agile Java 소스코드(10장까지..)

Java : 2006.12.21 17:04


Agile Java 소스코드를 1장부터 7장까지 쳐봤습니다. 그동안 뜨문뜨문 보아 오던 터라 연결도 잘 안되고 언젠가 부터 귀찮아서 소스코드도 치지 않고 대강 읽기만 했는데 심기일전을 하기 위해서 시간을 들여서 쳐보았습니다.

오늘의 목표를 달성하고 나니 뿌듯합니다. 스샷으로라도 자랑을 해야겠습니다.
사용자 삽입 이미지

위 소스코드를 SVN에 올려두었습니다.

SVN 주소는 http://whiteship.googlecode.com/svn/ 이겁니다.

12월 21일 목요일 현재 8장까지 커밋 했습니다. 게을러져서 한동안 코딩을 안했었네요.ㅠ.ㅠ
12월 12일에 올린 글이니깐 무려 9일 동안이나 손을 안댔군요.

내친김에 9장까지 커밋 완료 :)

2007년 1월 1일 10장 커밋 완료. 에고.. 게을러져버렸군요. --;;

'Java' 카테고리의 다른 글

Generic과 다형성  (0) 2007.01.05
자바 검은 띠에 도전해 보시길~  (2) 2006.12.31
Hiding Method  (0) 2006.12.31
Overriding - covariant return type  (6) 2006.12.31
LinkedList vs ArrayList  (6) 2006.12.22
Agile Java 소스코드(10장까지..)  (8) 2006.12.21
Reflection  (0) 2006.12.19
... 가변인수(varargs)  (2) 2006.12.11
for each 구문 사용법  (0) 2006.12.11
JUnit Reloaded  (0) 2006.12.07
I/O Stream 구성  (0) 2006.12.07
top

  1. Favicon of https://zerry82.tistory.com BlogIcon 동자~ 2006.12.12 18:49 신고 PERM. MOD/DEL REPLY

    나만 귀찬아서 안치고 있었던게 아니었구나-_-;;

    ㅊㅋㅊㅋ ㅋㅋ

    Favicon of http://whiteship.tistory.com/ BlogIcon 기선 2006.12.12 20:16 PERM MOD/DEL

    ㄳㄳ
    앞으론 제때 해야겠다는 반성을 했지.

  2. 짱가 2006.12.12 19:20 PERM. MOD/DEL REPLY

    매일 와서 보는데...
    대단해요.. ^^

    보고 많은 것을 보고 배웁니다.

    Favicon of http://whiteship.tistory.com/ BlogIcon 기선 2006.12.12 20:14 PERM MOD/DEL

    저도 짱가님 블러그를 구독하고 있습니다. :)

    칭찬을 받으니 감개무량합니다.
    한편으론 더 열심히 해야겠다는 압박도 생기네요ㅎㅎ

  3. Favicon of https://px.tistory.com BlogIcon 김민재 2006.12.15 01:22 신고 PERM. MOD/DEL REPLY

    스터디 블로그에 올림이 어떠신지.... ^^

    Favicon of http://whiteship.tistory.com/ BlogIcon 기선 2006.12.15 11:08 PERM MOD/DEL

    아하~ 교내 스터디 진도에 맞춰 코딩한 거라.. 미쳐 거기까지 생각을 못했네요 :)
    올리도록 하겠습니다. ㅎㅎ
    13장까지 친담에요.ㅋ

  4. Favicon of http://seal.tistory.com BlogIcon 물개선생 2006.12.22 15:57 PERM. MOD/DEL REPLY

    수고하셨습니다. 늘 열심히 하시는 모습이 정말 보기 좋아요~ ^^*

    Favicon of http://whiteship.tistory.com/ BlogIcon 기선 2006.12.22 23:11 PERM MOD/DEL

    에고 부끄럽습니다. --;

Write a comment.


Agile Java 2장 연습문제 풀기

Java : 2006.10.29 11:47


1. TestPawn에 색이 없이 말을 생성하는 테스트를 추가한다. 이 테스트는 왜 컴파일 에러를 발생시키는가? 기본으로 횐색의 말을 생성하는 두 번째 생성자를 추가하여 이 컴파일 에러를 고쳐보자.

답보기

2. 두 색상에 대한 상수를 만들고 그 상수를 Pawn 클래스로 옮긴다.

코드보기

3. 장기 말은 체스 판이 없이는 쓸 수 없다. Board 클래스를 정의하기 위한 테스트를 사용한다. 체스 판이 위에 말이 없는 상태로 시작하는 것을 확인한다. TDD(테스트 위주 개발, test driven development) 과정을 적용한다. 가능한 가장 작은 테스트를 작성하고 붉은 막대를 보이며 실패하거나 컴파일 에러가 일어나는 것을 확인한다. 점차적으로 조금씩 코드를 추가하면서 컴파일이 되도록 하고 테스트에서 녹색 막대가 나타나도록 한다.

답보기

4. 장기말을 체스판에 추가할 수 있는 코드를 작성한다. 테스트에서 검은 색과 흰색의 말을 체스판에 추가한다. 말을 추가할 때마다 말의 수가 맞는 것을 확인한다. 또한 말을 추가할 때마다 체스판에서 말의 목록을 얻어서 원하는 말 객체를 가지고 있는 것을 확인한다.

답보기

5. 지금까지 작성한 각각의 결과 클래스와 메소드에 javadoc을 작성한다. 메소드가 이미 나타내고 있는 정보를 중복해서 보이지 않는다! javadoc은 단지 보충 정보일 뿐이다.

javadoc -package -classpath "소스파일 있는 곳";"junit-4.1.jar파일 있는 곳" *.java

6. 작성한 클래스와 네 개의 테스트를 패키지로 묶는다. 패키지 이름을 chess로 한다. 컴파일 문제를 해결하고 녹색 막대를 다시 확인하자. 또한 import 문을 사용해서 List와 ArrayList의 전체 클래스 이름을 바꾼다.

답보기


7. TestPawn과 Pawn을 pices라는 이름의 패키지로 옮기고 이 과정에서의 문제를 해결한다.



8. 체스판에 Pawn 이외의 객체가 추가되지 않도록 한다. 말의 리스트에 new Integer("7")객체를 추가해 보고 컴파일 에러가 발생하는 것을 확인한다.

Board 클래스를 수정합니다.


9. 각각의 테스트 클래스를 실행하는 테스트 스위트를 생성한다.


10. 지금까지 작성한 코드를 둘러보고 코드에 중복되는 부분이 없는지 확인한다. 테스트 코드 역시 코드임을 기억하자. 필요하다면 setUp 메소드를 사용한다.

BoardTest 클래스를 수정합니다.

'Java' 카테고리의 다른 글

객체지향의 구멍 static  (0) 2006.11.04
i++와 i=i+1 속도 비교  (0) 2006.11.02
Comparator를 사용하여 비교하기.  (0) 2006.11.02
Arrays.sort() & Collections.sort()  (2) 2006.11.02
What is Object?  (12) 2006.11.01
Agile Java 2장 연습문제 풀기  (2) 2006.10.29
Lazy Initialization 언제 사용 해야 될까요?  (9) 2006.10.28
Agile Java 1장 연습문제 풀기  (2) 2006.10.27
JUnit 3.8 과 JUnit 4의 차이  (0) 2006.10.27
Reference의 위험성  (10) 2006.10.27
다중 구현(?)  (2) 2006.10.23
top

  1. Favicon of http://www.dioong.com BlogIcon 2008.06.18 14:03 PERM. MOD/DEL REPLY

    안녕하세요 Java 초보 개발자입니다^^
    Agile Java로 검색하다보니 이 블로그로 오게 되었습니다^^
    제가 지금 Java Programming (교학사) 책으로 혼자 공부를 해보고 있는데
    3장 연습문제에서 막히네요;
    2장까지만 해두셔서 혹시 3장은 없는지 하고 염치불구하고 여쭙습니다^^

    좋은 하루 되세요 :)

    Favicon of http://whiteship.tistory.com BlogIcon 기선 2008.06.18 15:32 PERM MOD/DEL

    넹 몇 장까지 했었는지 잘 기억이 안 나네요. 흠.. 혼자 하시기보다 주변 친구분들이랑 같이 하시면 좀 더 재밌습니다. :)

Write a comment.


Agile Java 1장 연습문제 풀기

Java : 2006.10.27 23:10


1. PawnTest를 만들고 test 메소드를 만들지 않았기 때문에 에러가 나는 모습을 보여라.

답보기

2. testCreate라는 메소드를 만들고 test 메소드를 만드는 문법을 제대로 지켰는지 확인하라.

답보기

3. testCreate 메소드에 Pawn 객체를 추가하는 코드를 추가하라. 존재하지 않는 클래스이기 때문에 컴파일 에러가 나는 것을 확인하고 Pawn class를 만들고 test를 성공시켜라.

답보기

4. Pawn 객체를 지역 변수에 참조시켜라. 그리고 그 객체의 색(color)을 요구해라. 그 색깔이 JUnit의 assertion을 이용해서 기본적으로 "white"라는 문자열인지 확인하는 코드를 작성하라. test가 실패하는 것을 보고나서 그 test가 성공하도록 수정하라.

답보기

5. testCreate에 두 번째 pawn을 생성하고 그 생성자에 "black"이라는 색깔을 인자로 넘겨줘라. 두 번째 pawn의 색이 "black"인지 확인하라. test가 실패하는 것을 보여라. 그리고 성공하도록 수정하라. 기본 생성자는 없애고 생성자에 색을 받아서 초기화 할 수 있도록 수정하라. 이번 변화로 인해 4번 문제에서 작성한 코드에 변화가 생겨야 할 것이다.


답보기

6. testCreate안에 상수 문자열 "white"와 "black"을 생성하고 test를 다시 실행하라.

답보기

'Java' 카테고리의 다른 글

Comparator를 사용하여 비교하기.  (0) 2006.11.02
Arrays.sort() & Collections.sort()  (2) 2006.11.02
What is Object?  (12) 2006.11.01
Agile Java 2장 연습문제 풀기  (2) 2006.10.29
Lazy Initialization 언제 사용 해야 될까요?  (9) 2006.10.28
Agile Java 1장 연습문제 풀기  (2) 2006.10.27
JUnit 3.8 과 JUnit 4의 차이  (0) 2006.10.27
Reference의 위험성  (10) 2006.10.27
다중 구현(?)  (2) 2006.10.23
Interface  (2) 2006.10.16
Lesson 3. Strings and Packages  (0) 2006.10.06
top

  1. 현동규 2006.10.28 00:58 PERM. MOD/DEL REPLY

    수고하셧어요~

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.10.28 09:39 신고 PERM MOD/DEL

    수고는 무슨 :) 일한 것도 아니고 공부한건데;;

Write a comment.


다중 구현(?)

Java : 2006.10.23 01:17


다중 상속은 아래와 같은 모양입니다.

이 때.. 대체 저 자식 클래스는 대체 아빠 엄마 중 누구의 댄스를 따라 출 것이란 말인가..
C++ 에서는 둘 중에 하나를 명시 해서 사용한다고 했던거 같은데 내 영역 바깥의 이야기라 말 안하는게 좋을 듯 합니다.

그런데 Java는 다중 상속이 아예 안되니까 저런 문제를 고민 안해도 될 것 같지만... 오산이라는거~

두 가지 경우가 있다고 생각합니다.
다이어그램을 보면서 이야기 해야 편할 듯 합니다.


에러가 나지 않을 것으로 예상합니다. 그리고 Test 클래스는 당연히 SubClass에서 overring한 dance를 호출하게 될 것입니다.
하지만... 이게 정말 제대로 된건가... 의심이 된다. 부모 Class에 있는 dance를 재정의 하고 싶기도 하고..Dancible 인터페이스를 구현하고 싶을 수도 있을 것입니다. 그럼 dance() 메소드는 두 개가 되어야 하는거 아닌가요?? 메소드 이름이 같으면 할 일이 같다는 말은 되긴 하지만...그래도... 이상한데~

코딩을 해본 결과.. 예상과 일치했습니다.

또하나 다른 경우는 이제 예상이 되시겠지만, 아래와 같은 경우입니다.


이 때도 역시 코드로 확인해 본 결과 에러가 발생하지 않습니다. 당연히.. 양쪽 인터페이스의 제약인 dance() 메소드를 구현해 줬기 때문에 별 탈 없이 돌아가지요. 하지만... ClunMania 인터페이스를 사용하는 나이트 클럽 클래스에서 춤을 추라고 시켰더니..탈춤을 추는 사태가 벌어 질 수도 있겠군요... 이거 어떻게 되는거죠?

모르겠군요.. ㄷㄷㄷ...

'Java' 카테고리의 다른 글

What is Object?  (12) 2006.11.01
Agile Java 2장 연습문제 풀기  (2) 2006.10.29
Lazy Initialization 언제 사용 해야 될까요?  (9) 2006.10.28
Agile Java 1장 연습문제 풀기  (2) 2006.10.27
JUnit 3.8 과 JUnit 4의 차이  (0) 2006.10.27
Reference의 위험성  (10) 2006.10.27
다중 구현(?)  (2) 2006.10.23
Interface  (2) 2006.10.16
Lesson 3. Strings and Packages  (0) 2006.10.06
Lesson 2. Java Basics  (0) 2006.10.03
Lesson 1. Getting Started  (0) 2006.09.25
top

  1. Favicon of https://www.ikpil.com BlogIcon 최익필 2008.07.25 11:49 신고 PERM. MOD/DEL REPLY

    깜짝 놀랐습니다. . 트랙백 날리고 나서 바로 오길래.. 좋은 정보가 만항 자주 들리겠습니다.

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2008.07.25 13:44 신고 PERM MOD/DEL

    넹.ㅋㅋ 오래된 글인데 찾아주셨네요.

Write a comment.