cpp module 03 과제해석

이호용·2021년 8월 26일
0

cpp

목록 보기
11/16

C++ - Module 03

Inheritance 상속

Exercise 00: Aaaaand... OPEN!

Turn-in directory : ex00/
Files to turn in : Makefile ClapTrap.cpp ClapTrap.hpp main.cpp
Forbidden functions : None

Here you have to make a class! How original!

클래스를 만들어보자! 원본에 가깝게!

The class will be called ClapTrap, and will have the following private attributes,
initialized to the specified values:

클래스 이름은 ClapTrap, 그리고 클래스는 지정된 값으로 초기화하고 private 속성이 있습니다. :

  • Name (Parameter of constructor)
  • Hitpoints (10)
  • Energy points (10)
  • Attack damage (0)

You will also give it a few public functions to make it more life-like:

  • void attack(std::string const & target)
  • void takeDamage(unsigned int amount)
  • void beRepaired(unsigned int amount)

너는 또한 몇개의 public 함수를 추가할수 있다.

In all of these functions, you have to display something to describe what happens.
For example, the attack function may display something along the lines of:
여기 있는 모든 함수들이, 무슨일을 하는지 너는 표시해야한다.

예를들어, attack함수는 다음과 같은 줄을 표시한다.

ClapTrap <name> attacks <target>, causing <damage> points of damage!

The constructor and destructor must also display something, so people can see they
have been called.

생성자 소멸자는 무언가를 표시한다. 그래서 사람들이 불려졌는지 볼수 있다.

You will provide a main function, with enough tests to demonstrate that your code is
functional.

너는 메인 함수를 제공할수 잇다. 너의 코드를 입증하는 충분한 테스트.

Exercise 01: Serena, my love!

Turn-in directory : ex01/
Files to turn in : Same as previous exercise + ScavTrap.cpp ScavTrap.hpp
Forbidden functions : None

Because we can’t ever have enough Claptraps, now you will make another one.
The class will be named ScavTrap, and will inherit from ClapTrap, the constructor,
destructor, and attacks have to use different outputs. After all, a Claptrap has to have
some measure of individuality.

claptraps 충분하지 않다. 다른 하나를 만들어보자.

클래스 이름은 ScavTtrap, 그리고 ClapTrap에서 상속 받는다, 생성자, 소멸자 그리고 attack은 다른 값을 뱉는다.
결국, claptrap 은 조금의 개성을 가진다.

The ScavTrap class will have its construction and destruction messages. Also, proper
construction/destruction chaining must be present (When you build a ScavTrap, you
must start by building a ClapTrap... Destruction is in reverse order), and the tests have
to show it.

ScavTrap은 소멸자랑 생성자 메세지를 가질수 있다. 적절한 생성자/소멸자 체인이 있어야 합니다.(너가 ScavTrap을 만들 때, ClapTrap을 구축하는것으로 시작해야한다... 소멸자는 역순, 그리고 테스트로 보여줘

ScavTrap will use the attributes of Claptrap (You need to change Claptrap accordingly)! And must initialize them to:
ScavTrap은 Claptrap의 특성을 사용할수 있다. (너는 claptrap을 변경해야한다. claptrap에 따라서)! 그리고 다음과 같이 초기화 한다. :

  • Name (Parameter of constructor)
  • Hitpoints (100)
  • Energy points (50)
  • attack damage (20)

ScavTrap will also have a new specific function: void guardGate(); this function
will display a message on the standard outputs to anounce that ScavTrap have enterred
in Gate keeper mode.
Extend your main function to test everything.

ScavTrap은 새로운 함수를 가질수 있다 :
void guardGate();
이 기능은 ScavTrap이 게이트키퍼 모드로 진입했음을 알리는 메시지를 표준 출력에 표시합니다.
주요 기능을 확장하여 모든것을 테스트 하십시오

Exercise 02: Repetitive work

Turn-in directory : ex02/
Files to turn in : Same as previous exercise + FragTrap.cpp FragTrap.hpp
Forbidden functions : None

Making Claptraps is probably starting to get on your nerves.
Now, you will make a FragTrap class that inherits from ClapTrap.

Claptraps를 만드는 것이 짜증나지?
이제 clapTrap에서 상속 받은 FragTrap클래스를 만듭니다.

• Name (Parameter of constructor)
• Hitpoints (100)
• Energy points (100)
• attack damage (30)

The FragTrap class will have its construction and destruction messages. Also, proper
construction/destruction chaining must be present (When you build a FragTrap, you
must start by building a ClapTrap... Destruction is in reverse order), and the tests have
to show it.

FragTrap클래스의 생성자 소멸자는 메세지가 있습니다. 또한 적절한 생성자/소멸자 chainig을 하고, 존재해야한다.(니가 FragTrap을 만들때, 너는 먼저 ClapTrap을 먼저 만들기 시작해야한다... 소멸자는 역순으로), 그리고 테스트 케이스를 보여줘

The specific function for FragTrap will be void highFivesGuys(void) and will display a positive high fives request on the standard output.
Extend your main function to test everything

FragTrap은 highFivesGuys(void) 함수를 가진다. 그리고 해당함수는 출력한다. 메인에서 테스트해봐!

Exercise 03: Now it’s weird!

Turn-in directory : ex03/
Files to turn in : Same as previous exercise + DiamondTrap.cpp DiamondTrap.hpp
Forbidden functions : None

Now, you will create a monster by making a Claptrap that’s half Fragtrap, half Fragtrap.
이제, 너는 claptrap을 만들어 몬스터를 만들어보겠습니다. 반은 Fragtrap, 반은 Flagtrap(서브젝트 오류인듯, 아마 반은 ScavTrap인듯)

It will be named DiamondTrap, and it will inherit from both the FragTrap AND the
ScavTrap.

이름은 DiamondTrap, 그리고 FragTrap그리고 ScavTrap 양쪽에서 상속받는다.

Very risky and horrible act the DiamondTrap class will declare a private attribute
called name like the one inside ClapTrap.
매우 끔찍하고 위험한 행동의 다이아몬드 클래스는 private 공간에 clapTrap 내부의 Name라고 부르는 것을 똑같이 선언합니다.

Its attributes and functions will be chosen from either of its parent classes:
속성 그리고 함수는 부모클래스중 하나를 선택 할수 있다.

• Name (Parameter of constructor)
• Claptrap::Name (Parameter of constructor + "_clap_name")
• Hitpoints (Fragtrap)
• Energy points (Scavtrap)
• Attack damage (Fragtrap)
• attack (Scavtrap)

It will have the special functions of both
그것은 둘다 특별한 기능을 가질것입니다.

As usual, your main will be extended to test the new class
메인에 테스트를 확장하세요~

Of course, the Claptrap part of the Diamondtrap will be created once, and only once...
Yes, there’s a trick.

물론, Diamondtrap의 Claptrap부분은 오직한번만 생성된다. 그래 그게 트릭이야! 젠장.

DiamondTrap will have a new function void whoAmI(); that will display its name
and its clapTrap name
다이아몬드 트랩은 새로운 함수 whoAmI();를 가진다. name이랑 clapTrap 이름을 표출한다.

0개의 댓글