ToyProblems 를 바로 ¶
Board.java ¶
~cpp
import javax.swing.JOptionPane;
public class Board {
private int array[][]; // 배
private int max_x; // 가로기
private int max_y; // 로기
//
public Board(int x, int y) {
max_x = x;
max_y = y;
array = new int[max_y][max_x];
for (int i = 0; i < max_y; i++)
for (int j = 0; j < max_x; j++)
array[i][j] = 0;
}
//발국 가득 ?
public boolean IsStepFull() {
for (int i = 0; i < max_y; i++)
for (int j = 0; j < max_x; j++)
if (array[i][j] == 0)
return false;
return true;
}
// 가 벽?
public boolean IsPostionWall(int x, int y) {
if (x == -1 || x == max_x || y == -1 || y == max_y)
return true;
else
return false;
}
//발국 는다
public void PutStep(int x, int y) {
array[y][x]++;
//래를 면 발국 때다 보
//ShowStep();
}
//발국 보다
public void ShowStep() {
String output = "";
for (int i = 0; i < max_y; i++)
{
for (int j = 0; j < max_x; j++)
output += array[i][j] + " ";
output += '\n';
}
JOptionPane.showMessageDialog(null, output);
}
}
Roach.java ¶
~cpp
public class Roach {
private int p_x; // 바 x
private int p_y; // 바 y
//바 동
public void Move(Board bo, int x, int y) {
p_x = x;
p_y = y;
bo.PutStep(p_x, p_y);
while (!bo.IsStepFull()) {
int c_x; // 바가 동 x
int c_y; // 바가 동 y
do
{
c_x = p_x;
c_y = p_y;
int dir = (int)(Math.random() * 8);
switch (dir)
{
case 0:
c_y--;
break;
case 1:
c_x++;
c_y--;
break;
case 2:
c_x++;
break;
case 3:
c_x++;
c_y++;
break;
case 4:
c_y++;
break;
case 5:
c_x--;
c_y++;
break;
case 6:
c_x--;
break;
case 7:
c_x--;
c_y--;
break;
}
} while (!SeeNextPos(bo, c_x, c_y));
p_x = c_x;
p_y = c_y;
bo.PutStep(p_x, p_y);
}
}
//동 리를 다
//벽면 false 벽 면 true
public boolean SeeNextPos(Board bo, int x, int y) {
if (bo.IsPostionWall(x, y))
return false;
else
return true;
}
}
Human.java ¶
~cpp
import javax.swing.JOptionPane;
public class Human {
// 바를 놓는다
public void PutRoach (Roach ro, Board bo, int x, int y) {
ro.Move(bo, x, y);
}
// KillRoach를 떻게 까???
public void KillRoach (Roach ro) {
//명 보다 ^^
}
// 본다
public void SeeBoard (Board bo) {
bo.ShowStep();
}
public static void main(String[] args) {
int start_x, start_y; // 바 변
int board_x, board_y; // 기 변
Human sehwan = new Human();
Roach roach = new Roach();
board_x = Integer.parseInt(JOptionPane.showInputDialog(null, "격 가로기"));
board_y = Integer.parseInt(JOptionPane.showInputDialog(null, "격 로기"));
start_x = Integer.parseInt(JOptionPane.showInputDialog(null, "바 가로"));
start_y = Integer.parseInt(JOptionPane.showInputDialog(null, "바 로"));
// 맨가 (0,0)
Board board = new Board(board_x, board_y);
sehwan.PutRoach(roach, board, start_x, start_y); // 바를 놓는다
sehwan.SeeBoard(board); // 다 돌면 본다
}
}
내 ¶
1.객 개념과 바 ¶
가.객개념
:객가 가고 는 또는
동:객가 가고 는 기능 또는 는 동
) 동 - 객
-> 변
동 -> 메드()
:객가 가고 는 또는
동:객가 가고 는 기능 또는 는 동
) 동 - 객
,바,들,배기량,,기 -
달린다,기를 바꾼다,를 높나 낮다, 경 린다 - 동
객 -> 객달린다,기를 바꾼다,를 높나 낮다, 경 린다 - 동
-> 변
동 -> 메드()
객방법
래
public:같 래, 래, 같 내 는 래 근가능
private:같 래만 근가능
protected:같 래, 래, 같 내 는 래 근가능
friendly(략):같 래, 같 내 는 래 근 가능
(Encapsulation):
변 메드를 나 묶로 만든다.
는 모(modularity)과 보닉(information hiding) 공다.
모 각각 객를 드가 로 무관게 될 다는 것다.
보닉 객가 가는 보 근 권 다른 객로 부 근 다.
메(Message):
객 객가 는데 된다.
메를 객, 메드 , 메드 매개변 가 구를 가다.
래(Class):(벽돌)
류 객들 대 반로 는 변 메드를 고 다.
(Instance):(낸 벽돌)
래를 로 록 는 것
객(Object)
(Inheritance)
래가 가고 는 들 래 다.
다(Polymorphism)
러개 래가 같 메 대 각 방법로 는 능력다.
다 (overloading), 다 , (overriding) 다.
나.래 및 (객) 변 메드를 나 묶로 만든다.
는 모(modularity)과 보닉(information hiding) 공다.
모 각각 객를 드가 로 무관게 될 다는 것다.
보닉 객가 가는 보 근 권 다른 객로 부 근 다.
메(Message):
객 객가 는데 된다.
메를 객, 메드 , 메드 매개변 가 구를 가다.
래(Class):(벽돌)
류 객들 대 반로 는 변 메드를 고 다.
(Instance):(낸 벽돌)
래를 로 록 는 것
객(Object)
(Inheritance)
래가 가고 는 들 래 다.
다(Polymorphism)
러개 래가 같 메 대 각 방법로 는 능력다.
다 (overloading), 다 , (overriding) 다.
래
~cpp
class 래 {
// 변 부
…
// 메드 부
…
}
~cpp 래 래 = new 래(); 또는 래 래; 래 = new 래();다.변 및 메드 근
public:같 래, 래, 같 내 는 래 근가능
private:같 래만 근가능
protected:같 래, 래, 같 내 는 래 근가능
friendly(략):같 래, 같 내 는 래 근 가능
라.메드 다
다:같 가 러개 는 것
다:같 가 래 따라 다른 록 는 것
->바 공
다:같 가 러개 는 것
다:같 가 래 따라 다른 록 는 것
->바 공
2.객 객 과 ¶
가.객
다.래멤 멤
래 변 래 메드 )
~cpp
래(매개변 리) { … }
래(매개변 리) {
다른 객 ; // 반드 루 .
…
}
래 변 = new 래(매개변 리);
나.this다.래멤 멤
래 변 래 메드 )
~cpp [근권] static 변 ; [근권] static 메드 ; 래 변 래 메드 근) 래.래메드() 래메드() 객값.래메드()
라. 래 기 및 객 과
래 변 기 및 기 블록
래 변 기 및 기 블록
~cpp
static 변=기값;
또는
static 배변=new 배;
static {
러 개 변들 기
또는
배 기;
}
3. ¶
... 는 ...
OOP ¶
, 메, 래, , 객, , 다
단게 명 다
단게 명 다
문 ¶
- 객가 미것 같데 는?
는 다. 같 미다^^;
- public과 protected 는?
고 는 기 때문 모르는 것^^. private 과 protected 는 루 면 똑같 됩다. 만 루다면 미는 려. 만 동 라는 객가 다고 봅다. 그런데 것 굉 개념. 동 개념 럭 과 를 동 만들다고 다. 그랬 때 동 가 가는 떠 는 럭 과 가고 다. 런 경 protected 로 면 그 를 다는 것. 만 부 근 가능다는 변 다. 만 public 부 근 가능게 되는 것. 드로 만들보. 떻게 다른 는게 가 가 겁다.
과 가 내 ¶
- ~ 벌 로 가 가능다 놀라데? ^^; 말 력 난 님 디 고를 가능 겠군. 나? 면 다른 를 고나?
- 를 렇게 바꿔보. 가는 방 력 -> 바벌래 두리를 려놓 -> 바벌래를 기 가 가는 방법로 바.
- 바 메드는 때 문다. 대문로 는 것 래.
- 내 1 내로 보.










