cpp module 05

slee2·2021년 11월 22일
0

42Seoul

목록 보기
14/15
post-thumbnail

ex00

Bureaucrat 클래스를 만들어라.

  • name과 grade를 만들어라
  • grade가 1보다 큰 등급이면(1보다 작으면)
    Bureaucrat::GradeTooHighException
  • grade가 150보다 작은 등급이면(150보다 크면)
    Bureaucrat::GradeTooLowException
    이 발생하도록 구현하여라
  • (getName and getGrade) 만들기

ostream의 << 를 오버라이딩해 아래처럼 출력되도록 만들어라

< name >, bureaucrat grade < grade >

사용자 정의 Exception


cplusplus 자료이다. 여기서 what()이 virtual로 되어있는 가상 메서드이므로 이 메서드를 오버라이딩하여 구현하면 끝.
주의할 점은 const char*이므로, 구현할때
return ("GradeTooHighException"); 와 같이 리터럴 값을 주는 것이 중요하다.

ex01

Form 클래스를 만들어라

  • name, grade, sign_grade, sign
  • grade나 sign_grade가 1, 150사이가 아니면 이전과 같이
    HighException, LowException 발생하도록 구현.
  • beSigned 메서드 구현
    Bureaucrat의 grade를 가져와 sign_grade보다 높으면(서브젝트에서는 grade가 충분이 높으면, 이라고 되어있음)(grade <= sign_grade)

Bureaucrat 클래스

  • signForm 메서드를 구현해라.
    이 메서드는 beSgined를 통해 얻은 값을 보고 다음과 같이 해라

    성공 - < bureaucrat > signs < form >
    실패 - < bureaucrat > cannot sign < form > because < reason >

이것도 사용자 정의 Exception을 잘 활용하면 금방..할듯?

ex02

아스키 트리 - https://ascii.co.uk/art/tree
또는 - https://asciiart.website/index.php?art=plants/trees

ShrubberyCreationForm 클래스

  • private으로 target이라는 이름을 가짐
  • sign 145, exec 137 필요
    excute 성공시
    < target >_shrubbery로 파일을 만들고 아스키트리를 저장해라.

RobotomyRequestForm

  • private으로 target이라는 이름을 가짐
  • sign 72, exec 45 필요
    excute 성공시
    50% 확률로 성공 여부를 구하고 성공하면 성공했다. 실패하면 실패했다고 출력

PresidentialPardonForm

  • private으로 target이라는 이름을 가짐
  • sign 25, exec 5 필요
    excute 성공시 아래의 메세지를 알려준다.
    < target > has been pardoned by Zafod Beeblebrox.

위의 세 클래스는 Form 클래스를 상속받는다.
Form에 execute 메서드를 가상 메서드로 만든 후에 각 클래스에서 구현해라.

execute 메서드는 Bureaucrat를 받고 sign인지 검사한 후에 sign이 true이고 점수가 충분하면 위의 각 행동을 구현하면 된다. 아닌경우 에러메세지를 출력하여라.

캐스팅과의 싸움이 된다. const가 아닌 타입을 const로 사용해야 된다던지, 반대의 경우라던지 캐스팅을 잘 이용해서 해결하면 된다.

ex03

Intern 클래스를 만들어라

  • makeForm 메서드
    두 string을 매개변수로 받는다.
    하나는 어떤 Form을 쓸건지에 대한 내용이고, 다른하나는 타겟이다.

내용에 따라 폼을 다르게 실행되고 포인터로 반환하는 메서드를 구현해라. 단, if/else if는 남발하여 사용하지 말것.

switch문을 이용해 해결하면 된다. cpp module 01을 했다면 쉽게 할 수 있다.

0개의 댓글