Computer Science/자료구조

[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;
    }
    
}