[Java로 배우는 자료구조] 제3-2장: 예제 (Scheduler Program) (1/2) 정리
문에딕트2022. 3. 15. 13:44
프로그램에서 처리되어야할 데이터를 어디에 어떻게 저장할 것인지
is-a 관계는 아닌데 공통점이 있을때 공통점을 뽑아 상위클래스 만들기
package Ch3_2;
import java.util.Scanner;
public class Scheduler {
// OneDayEvent [] onedays = new OneDayEvent [100];
// DurationEvent [] durations = new DurationEvent [100];
// DeadlinedEvent [] deadlines = new DeadlinedEvent [100];
// ->배열을 3개 만들것이 아니라 공통 상위 클래스 event를 만들어
// 다른 종류의 데이터를 하나의 배열에 다 담아준다 :(다형성)
public Event [] days = new Event [100];
int n1 = 0, n2 = 0, n3 = 0;
public void processCommand() {
Scanner kb = new Scanner( System.in );
while(true){
System.out.println("$ ");
String command = kb.next();
if(command.equals("addevent")){
} else if(command.equals("list")){
} else if(command.equals("show")){
} else if(command.equals("exit")){
break;
}
}
kb.close();
}
public static void main(String[] args){
Scheduler app = new Scheduler();
app.processCommand();
}
}
package Ch3_2;
public class Event {
public String title;
public Event(String title){
this.title = title;
}
}
package Ch3_2;
public class OneDayEvent extends Event{
public MyDate date;
public OneDayEvent( String title, MyDate date ){
super(title);
this.date = date;
}
public String toString(){
return title +", " + deadline.toString();
}
}
package Ch3_2;
public class DeadlinedEvent extends Event {
public String title;
public MyDate deadline;
public DeadlinedEvent( String title, MyDate date ){
super(title);
this.title = title;
this.deadline = date;
}
public String toString(){
return title +", " + deadline.toString();
}
}
package Ch3_2;
public class DurationEvent extends Event {
public String title;
public MyDate begin;
public MyDate end;
public DurationEvent( String title, MyDate b, MyDate e ){
super(title);
begin = b;
end = e;
}
public String toString(){
return title +", " + begin.toString() + "~" + end.toString();
}
}
package Ch3_2;
public class MyDate {
public int year;
public int month;
public int day;
public MyDate(int y, int m, int d) {
year = y;
month = m;
day = d;
}
public String toString(){
return year + "/" +month + "/" +day;
}
}