Karel/OOP 스타일

Retired DISLab
< Karel(버전 사이의 차이)
이동: 둘러보기, 찾기
(KarelOOP Version 1)
(KarelOOP Version 2)
 
(한 사용자의 중간의 편집 11개 숨겨짐)
7번째 줄: 7번째 줄:
 
* [[media:KarelOOP2.jar|KarelOOP2.jar]] - JavaOOP Version 2 (2020)
 
* [[media:KarelOOP2.jar|KarelOOP2.jar]] - JavaOOP Version 2 (2020)
  
== Karel을 이용하여 연습할 내용 ==
+
== KarelOOP Version 2 ==
# Karel의 기본 명령어 : <tt>move(), turnLeft(), pickBeeper(), putBeeper()</tt>
+
* [[KarelOOP2]]
# 조건문 : <tt>if-else if-else</tt>
+
#* Beeper를 감지하고 집어서 옮김
+
# 반본문 : <tt>for, while, do-while</tt>
+
# Top-down 방법으로 생각하기
+
 
+
== 객체지향 Karel을 이용하여 연습할 내용 ==
+
# 객체의 개념
+
# Instance field, instance method
+
# Overloading
+
#* 예) <tt>move(), move(4), turnLeft(2)</tt>
+
# 계승을 통한 재사용
+
# Overriding
+
 
+
== 객체지향 프로그램을 위하여 추가된 클래스 ==
+
=== KarelOOP Version 2 ===
+
 
* [http://dislab.hufs.ac.kr/KarelOOP2 JavaOOP Version 2 도움말 (Java document)]
 
* [http://dislab.hufs.ac.kr/KarelOOP2 JavaOOP Version 2 도움말 (Java document)]
  
==== hufs.dislab.karel ====
+
=== hufs.dislab.karel ===
 
* [[IKarel (KarelOOP2)|IKarel]]
 
* [[IKarel (KarelOOP2)|IKarel]]
 
* [[IKarelProgram (KarelOOP2) | IKarelProgram]]
 
* [[IKarelProgram (KarelOOP2) | IKarelProgram]]
32번째 줄: 17번째 줄:
 
* [[ColoredKarel (KarelOOP2) | ColoredKarel]]
 
* [[ColoredKarel (KarelOOP2) | ColoredKarel]]
  
==== stanford.karel ====
+
=== stanford.karel ===
 
* [[AbstractIKarel (KarelOOP2) | AbstractIKarel]]
 
* [[AbstractIKarel (KarelOOP2) | AbstractIKarel]]
 
* [[AbstractIKarelProgram (KarelOOP2) | AbstractIKarelProgram]]
 
* [[AbstractIKarelProgram (KarelOOP2) | AbstractIKarelProgram]]
 
* [[OopKarelProgram (KarelOOP2) | OopKarelProgram]] - 더 이상 사용되지 않는데 예전 프로그램들과의 호환성을 위해 제공한다.
 
* [[OopKarelProgram (KarelOOP2) | OopKarelProgram]] - 더 이상 사용되지 않는데 예전 프로그램들과의 호환성을 위해 제공한다.
  
=== KarelOOP Version 1 ===
+
=== KarelOOP2 예제 프로그램 ===
 +
==== 1주차 ====
 +
* [[FirstKarelProgram (KarelOOP2)]]
 +
* [[BeeperCollectingProgram (KarelOOP2)]]
 +
 
 +
==== 3주차 ====
 +
* [[CollectProgram (KarelOOP2)]]
 +
* [[RepairProgram (KarelOOP2)]]
 +
* [[PaintProgram (KarelOOP2)]]
 +
 
 +
==== 4주차 ====
 +
* [[CollectTowerProgram (KarelOOP2)]]
 +
* [[DecorateFloor (KarelOOP2)]]
 +
* [[FindCenter (KarelOOP2)]]
 +
* [[RepairPillar (KarelOOP2)]]
 +
* [[RepairProgram 2 (KarelOOP2)]]
 +
 
 +
==== 7주차 Abstract class & Interface ====
 +
* Interfaces
 +
** [[Mover (KarelOOP2)]]
 +
** [[Painter (KarelOOP2)]]
 +
** [[Sensor (KarelOOP2)]]
 +
** [[Robot (KarelOOP2)]]
 +
* Classes
 +
** [[PaintKarel (KarelOOP2)]]
 +
** [[PowerKarel (KarelOOP2)]]
 +
** [[Worker (KarelOOP2)]]
 +
** [[RobotProgram (KarelOOP2)]]
 +
 
 +
==== 10주차 Collections ====
 +
* [[KarelListProgram (KarelOOP2)]]
 +
* [[KarelMapProgram (KarelOOP2)]]
 +
* [[KarelSetProgram (KarelOOP2)]]
 +
* [[WagonProgram (KarelOOP2)]]
 +
 
 +
==== 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 ==
 
<code>KarelWorld</code>가 package로 선언되어 있어 내부 메소드를 접근할 수가 없어 추가 클래스의 package를 <tt>stanford.karel</tt>로 하였다.
 
<code>KarelWorld</code>가 package로 선언되어 있어 내부 메소드를 접근할 수가 없어 추가 클래스의 package를 <tt>stanford.karel</tt>로 하였다.
  
 
* [[media:KarelOOP.jar|Download KarelOOP.jar]]
 
* [[media:KarelOOP.jar|Download KarelOOP.jar]]
  
==== stanford.karel ====
+
=== stanford.karel ===
 
* [[OopKarelProgram (KarelOOP1) | OopKarelProgram]]
 
* [[OopKarelProgram (KarelOOP1) | OopKarelProgram]]
  
==== 예제 프로그램 ====
+
=== KarelOOP1 예제 프로그램 ===
 
* [[SampleProgram.java (KarelOOP1)]]
 
* [[SampleProgram.java (KarelOOP1)]]
 
* [[PowerKarel.java]]
 
* [[PowerKarel.java]]

2020년 11월 15일 (일) 11:34 현재 판

목차

개요

기존의 Karel은 함수 중심의 언어와 같이 필요한 함수를 추가하는 형태로 프로그램을 작성한다. 비록 계승을 통한 방법도 사용해 볼 수 있지만, 이 방법은 오히려 객체지향 프로그래밍 연습을 하는데 방해가 된다. 그래서 기존의 Karel을 이용하여 함수 중심의 사고를 익히고, 객체지향 Karel을 이용하여 객체지향 프로그래밍 기법을 익히도록 한다.

이 프로그램을 위해서는 다음 라이브러리를 다운로드하여 프로젝트에 추가해야 한다.

KarelOOP Version 2

hufs.dislab.karel

stanford.karel

KarelOOP2 예제 프로그램

1주차

3주차

4주차

7주차 Abstract class & Interface

10주차 Collections

11주차 예외처리

11주차 thread 프로그래밍

  1. 스레드 프로그래밍 방법
  2. 생산자 소비자 프로그래밍
  3. 키보드 이벤트 프로그래밍
  4. Karel 스레드 프로그래밍 예

I/O

  1. Object serialization

KarelOOP Version 1

KarelWorld가 package로 선언되어 있어 내부 메소드를 접근할 수가 없어 추가 클래스의 package를 stanford.karel로 하였다.

stanford.karel

KarelOOP1 예제 프로그램

개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기