데블스캠프2011/다섯째날/How To Write Code Well/강소현,구자경

기본 ¶

Elevator.java ¶

```public class Elevator {

private int floorMax;
private int floorMin;
private int current;
private int hopeFloor;

public Elevator(int i, int j) {
floorMax = i;
floorMin = j;
if(1<=floorMin && 1>=floorMax)
current = 1;
else
current = floorMin;
}

public void pressButten(int i, int k) {
goTo(i);//있는 장소로 이동
current = i;
setHopeFloor(k);

}

public void goTo(int currentFloor) {
if(currentFloor<= floorMax && currentFloor >= floorMin)
current = currentFloor;
}

public int floor() {
// TODO Auto-generated method stub
return current;
}

public int getHopeFloor() {
return hopeFloor;
}

public void setHopeFloor(int hopeFloor) {
this.hopeFloor = hopeFloor;
}

}
```

app.java ¶

```import static org.junit.Assert.*;

import org.junit.Test;

public class app {
@Test
public void testElevator() {
final Elevator el = new Elevator(20, -10);//최상층, 최하층

assertEquals(1, el.floor());//기본 층 == 1층

el.pressButten(5, 15);//현재 위치, 이동하고픈 위치
assertEquals(5, el.floor());//현재 위치 == 엘레베이터 층
el.goTo(el.getHopeFloor());
assertEquals(15, el.floor());

el.pressButten(20, 1);
assertEquals(20, el.floor());//현재 위치 == 엘레베이터 층
el.goTo(el.getHopeFloor());//이동하고픈 위치 이동
assertEquals(1, el.floor());

}

}
```

활용 시도했으나 ¶

Elevator.java ¶

```import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class Elevator {

private int floorMax;
private int floorMin;
private int peopleMax;
private int floor;
private int people;
private Timer timer;
private boolean direction;

public Elevator(int i, int j, int k) {
floorMax = i;
floorMin = j;
peopleMax = k;
timer = new Timer();
}

public int floor() {
return floor;
}

public void pressButten(int i, int j, int k) {
if(people == 0){
goTo(i);
}

}

public int getCurrentFloor() {
// TODO Auto-generated method stub
return floor;
}

public void goTo(int currentFloor) {
timer.scheduleAtFixedRate(new TimerTask(){

@Override
public void run() {
if(direction){
floor++;
}else{
floor--;
}
}

}, new Date(), 1000);
if(floor == currentFloor){
timer.cancel();
}
}

public void in(int i) {
// TODO Auto-generated method stub

}

public void out(int i) {
// TODO Auto-generated method stub

}

}
```

app.java ¶

```import static org.junit.Assert.*;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import org.junit.Test;

public class app {
@Test
public void testElevator() {
final Elevator el = new Elevator(20, -10, 2);//최상층, 최하층, 수용인원
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask(){

@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(el.floor());
}

}, new Date(), 1000);
assertEquals(1, el.floor());//기본 층 == 1층

el.in(1);
el.pressButten(5, 1, 15);//현재 위치, 1: up, 0: down, 이동하고픈 위치
//el.goTo(el.getCurrentFloor());//현재 층으로 이동
el.in(2);
assertEquals(5, el.floor());//현재 위치 == 엘레베이터 층

el.pressButten(8, 1, 13);//현재 위치, 1: up, 0: down, 이동하고픈 위치
assertEquals(8, el.floor());
el.out(2);
assertEquals(13, el.floor());
el.out(1);
assertEquals(15, el.floor());
//if(el.checkSameDir()){//만약에 같은 방향으로 이동하고, 처음에 누른 사람이 이동하고픈 위치보다 미달인 곳에 있으면
//el.goTo(el.getCurrentFloor());//두번째 사람이 있는 층으로 이동
//assertEquals(8, el.floor());
//for(int i=0; i<el.numOfPeople();i++)//사람 수만큼 엘레베이터 이동
//el.goTo(el.closerFloor());//가까운 위치 이동
//}

/*
assertEquals(15, el.floor());

el.pressButten(20, 0, 1);
el.goTo(el.getCurrentFloor());//현재 층으로 이동
assertEquals(20, el.floor());//현재 위치 == 엘레베이터 층
el.goTo(el.closerFloor());//이동하고픈 위치 이동
assertEquals(1, el.floor());
*/
}

}
```
last modified 2021-02-07 05:29:12
Processing time 0.0086 sec