Bureaucrat 클래스를 만들어라.
ostream의 << 를 오버라이딩해 아래처럼 출력되도록 만들어라
< name >, bureaucrat grade < grade >
cplusplus 자료이다. 여기서 what()이 virtual로 되어있는 가상 메서드이므로 이 메서드를 오버라이딩하여 구현하면 끝.
주의할 점은 const char*이므로, 구현할때
return ("GradeTooHighException"); 와 같이 리터럴 값을 주는 것이 중요하다.
Form 클래스를 만들어라
Bureaucrat 클래스
성공 - < bureaucrat > signs < form >
실패 - < bureaucrat > cannot sign < form > because < reason >
이것도 사용자 정의 Exception을 잘 활용하면 금방..할듯?
아스키 트리 - https://ascii.co.uk/art/tree
또는 - https://asciiart.website/index.php?art=plants/trees
ShrubberyCreationForm 클래스
RobotomyRequestForm
PresidentialPardonForm
위의 세 클래스는 Form 클래스를 상속받는다.
Form에 execute 메서드를 가상 메서드로 만든 후에 각 클래스에서 구현해라.
execute 메서드는 Bureaucrat를 받고 sign인지 검사한 후에 sign이 true이고 점수가 충분하면 위의 각 행동을 구현하면 된다. 아닌경우 에러메세지를 출력하여라.
캐스팅과의 싸움이 된다. const가 아닌 타입을 const로 사용해야 된다던지, 반대의 경우라던지 캐스팅을 잘 이용해서 해결하면 된다.
Intern 클래스를 만들어라
내용에 따라 폼을 다르게 실행되고 포인터로 반환하는 메서드를 구현해라. 단, if/else if는 남발하여 사용하지 말것.
switch문을 이용해 해결하면 된다. cpp module 01을 했다면 쉽게 할 수 있다.