Karel/OOP 스타일
Retired DISLab
< Karel(버전 사이의 차이)
(→7주차 Abstract class & interface) |
(→KarelOOP Version 2) |
||
(한 사용자의 중간의 편집 5개 숨겨짐) | |||
6번째 줄: | 6번째 줄: | ||
* [[media:KarelOOP.jar|KarelOOP.jar]] - JavaOOP Version 1 (2013) | * [[media:KarelOOP.jar|KarelOOP.jar]] - JavaOOP Version 1 (2013) | ||
* [[media:KarelOOP2.jar|KarelOOP2.jar]] - JavaOOP Version 2 (2020) | * [[media:KarelOOP2.jar|KarelOOP2.jar]] - JavaOOP Version 2 (2020) | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== KarelOOP Version 2 == | == KarelOOP Version 2 == | ||
+ | * [[KarelOOP2]] | ||
* [http://dislab.hufs.ac.kr/KarelOOP2 JavaOOP Version 2 도움말 (Java document)] | * [http://dislab.hufs.ac.kr/KarelOOP2 JavaOOP Version 2 도움말 (Java document)] | ||
72번째 줄: | 58번째 줄: | ||
==== 11주차 예외처리 ==== | ==== 11주차 예외처리 ==== | ||
+ | * [[CollisionProgram (KarelOOP2)]] | ||
+ | * [[ExceptionProgram (KarelOOP2)]] | ||
+ | |||
+ | ==== 11주차 thread 프로그래밍 ==== | ||
+ | # 스레드 프로그래밍 방법 | ||
+ | #* [[KarelThreadProgram1 (KarelOOP2)]] - Runnable 객체를 이용하는 경우 | ||
+ | #* [[KarelThreadProgram2 (KarelOOP2)]] - 3가지 방법으로 Runnable 객체 생성 (내부 클래스 이용) | ||
+ | #* [[KarelThreadProgram3 (KarelOOP2)]] - Karel 객체를 이용하는 경우 | ||
+ | # 생산자 소비자 프로그래밍 | ||
+ | #* [[KarelWineProgram1 (KarelOOP2)]] - Lock을 사용하지 않고 공유자원을 경쟁적으로 사용하는 경우 | ||
+ | #* [[KarelWineProgram2 (KarelOOP2)]] - Lock & Wait을 사용하여 공유자원을 경쟁적으로 사용하는 경우 | ||
+ | #* [[KarelWineProgram3 (KarelOOP2)]] - Lock & No wait을 이용하여 공유자원을 경쟁적으로 사용하는 경우 | ||
+ | # 키보드 이벤트 프로그래밍 | ||
+ | #* [[KeyEventKarelProgram1 (KarelOOP2)]] - 리스너를 이용하여 키 이벤트 처리 | ||
+ | #* [[KeyEventKarelProgram2 (KarelOOP2)]] - Karel에 메시지 큐를 만들어 이벤트 처리 | ||
+ | #* [[KeyEventKarelProgram3 (KarelOOP2)]] - | ||
+ | # Karel 스레드 프로그래밍 예 | ||
+ | #* [[PainterKarelProgram1 (KarelOOP2)]] | ||
+ | #* [[PainterKarelProgram2 (KarelOOP2)]] | ||
+ | #* [[PainterKarelProgram3 (KarelOOP2)]] | ||
+ | |||
+ | ==== I/O ==== | ||
+ | # Object serialization | ||
+ | #* [[SerializableKarel (KarelOOP2)]] | ||
+ | #* [[ObjectWriteProgram (KarelOOP2)]] | ||
+ | #* [[ObjectReadProgram (KarelOOP2)]] | ||
== KarelOOP Version 1 == | == KarelOOP Version 1 == |
2020년 11월 15일 (일) 11:34 현재 판
목차 |
개요
기존의 Karel은 함수 중심의 언어와 같이 필요한 함수를 추가하는 형태로 프로그램을 작성한다. 비록 계승을 통한 방법도 사용해 볼 수 있지만, 이 방법은 오히려 객체지향 프로그래밍 연습을 하는데 방해가 된다. 그래서 기존의 Karel을 이용하여 함수 중심의 사고를 익히고, 객체지향 Karel을 이용하여 객체지향 프로그래밍 기법을 익히도록 한다.
이 프로그램을 위해서는 다음 라이브러리를 다운로드하여 프로젝트에 추가해야 한다.
- Karel.jar - Original Karel library
- KarelOOP.jar - JavaOOP Version 1 (2013)
- KarelOOP2.jar - JavaOOP Version 2 (2020)
KarelOOP Version 2
hufs.dislab.karel
stanford.karel
- AbstractIKarel
- AbstractIKarelProgram
- OopKarelProgram - 더 이상 사용되지 않는데 예전 프로그램들과의 호환성을 위해 제공한다.
KarelOOP2 예제 프로그램
1주차
3주차
4주차
- CollectTowerProgram (KarelOOP2)
- DecorateFloor (KarelOOP2)
- FindCenter (KarelOOP2)
- RepairPillar (KarelOOP2)
- RepairProgram 2 (KarelOOP2)
7주차 Abstract class & Interface
- Interfaces
- Classes
10주차 Collections
- KarelListProgram (KarelOOP2)
- KarelMapProgram (KarelOOP2)
- KarelSetProgram (KarelOOP2)
- WagonProgram (KarelOOP2)
11주차 예외처리
11주차 thread 프로그래밍
- 스레드 프로그래밍 방법
- KarelThreadProgram1 (KarelOOP2) - Runnable 객체를 이용하는 경우
- KarelThreadProgram2 (KarelOOP2) - 3가지 방법으로 Runnable 객체 생성 (내부 클래스 이용)
- KarelThreadProgram3 (KarelOOP2) - Karel 객체를 이용하는 경우
- 생산자 소비자 프로그래밍
- KarelWineProgram1 (KarelOOP2) - Lock을 사용하지 않고 공유자원을 경쟁적으로 사용하는 경우
- KarelWineProgram2 (KarelOOP2) - Lock & Wait을 사용하여 공유자원을 경쟁적으로 사용하는 경우
- KarelWineProgram3 (KarelOOP2) - Lock & No wait을 이용하여 공유자원을 경쟁적으로 사용하는 경우
- 키보드 이벤트 프로그래밍
- KeyEventKarelProgram1 (KarelOOP2) - 리스너를 이용하여 키 이벤트 처리
- KeyEventKarelProgram2 (KarelOOP2) - Karel에 메시지 큐를 만들어 이벤트 처리
- KeyEventKarelProgram3 (KarelOOP2) -
- Karel 스레드 프로그래밍 예
I/O
- Object serialization
KarelOOP Version 1
KarelWorld
가 package로 선언되어 있어 내부 메소드를 접근할 수가 없어 추가 클래스의 package를 stanford.karel로 하였다.