고양국제고

GGHS Time Table 5 개발 스토리 #1: 이거 왜 안 바뀌냐?

카루-R 2022. 2. 22. 09:55
반응형

환영합니다, Rolling Ress의 카루입니다.

시간표 공지일이 나왔어요. 2월 28일(...)에 나온다고 합니다. 근데 그때 시간표 받아서 만드려면 한참 걸리죠. 그래서 지금부터 틀을 짜두어야 합니다. GTT4부터 GTT랑 GTD랑 기능이 합쳐진 탓에, GTD를 다시 만들고 왔어요. 오늘은 GTT를 손볼 차례입니다.

GTT5의 메인 화면입니다. 아직 알파 버전이라 디자인이 끝나진 않았는데, 전체적인 기조는 유지할 것 같아요. 이렇게 보면 GTT2 당시 디자인을 참 잘 했다는 생각이.. 직관적이고 쓰기도 쉬우니까요. 여하튼, 지금 문제는 이겁니다.

일부러 시간표를 다 안 넣었어요. 화요일 1교시까지 채웠는데, 지금 문제가... 분명히 국어에서 "언어와 매체"를 선택했는데도 표시가 "국어"로만 나오네요. 이게...

TimeTable을 보관하는 TimeTables는 이렇게 생겼습니다. 여기에 (static) Subjects.Korean을 넣어서 국어 값을 받아오는 건데, GTT5에 들어서면서 이걸 싹 개편을 했더니 결국 버그가..

하는 수 없이, 가상함수를 써야겠습니다. 가상함수는 항상 실형식을 따르죠. 오버라이딩을 통해 다형성을 유지해줄 겁니다.

 

왼쪽은 부모 클래스인 Subject 클래스, 오른쪽은 파생 클래스인 Korean 클래스입니다. Is-a 관계는 ...맞죠? 국어는 과목이니까요. 보통은 이게 .Name 프로퍼티를 통해 값을 받아오는데, 죄다 Subject로 상승 변환이 되기 때문에 Korean밖에 모릅니다. 그 안에 언어와 매체, 화법과 작문이 있는데 그건 자식 클래스에서 알아서 전달해야죠.

그리고, Selected도 static으로 바꾸었습니다. 이게 클래스 종속적이라 값이 안 바뀌고 있었는지... 자세한 건 모르겠지만 상당히 골치아프더군요.

여하튼, 결국에는 성공했습니다.

반응형