연습 3: 원뿔 클래스 작성

이 연습에서는 Visual Editor를 사용하여 원뿔 클래스를 작성합니다. 원뿔 클래스는 3D 원뿔을 나타냅니다.

이전 연습에서는 UML 모델링 도구를 사용하여 원 및 구 클래스를 확장했습니다. 이 연습에서는 UML 모델링 도구를 사용하여 프로젝트에 원뿔 클래스를 추가합니다. shape3d 클래스에서 상속하는 원뿔 클래스는 원뿔의 반지름과 높이에 기초하여 볼륨과 표면 영역을 계산하고 표시합니다. UML 모델링 도구를 사용하여 프로젝트에 클래스를 추가하고 클래스에 속성을 추가할 수 있습니다. 메소드의 본문을 편집하려면 다이어그램에서 메소드를 두 번 클릭하고 코드 편집기에서 소스 코드를 편집하십시오.

Shapes 프로젝트에 원뿔 클래스 추가

C/C++ 프로젝트 탐색기 보기를 사용하여 프로젝트에 클래스를 추가할 수 있습니다. 새 C++/클래스 마법사를 사용하여 상속 관계를 식별할 수 있습니다.

Shapes 프로젝트에 원뿔 클래스를 추가하려면 다음을 수행하십시오.
  1. C/C++ 프로젝트 탐색기 보기에서 Shapes 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 새로 작성 > 클래스를 클릭하십시오.
  2. 새 C++ 클래스 창의 이름 필드에 cone을 입력하고 찾아보기를 클릭하십시오.
  3. 기본 클래스 선택 창일치 유형 목록에서 shapes3d를 두 번 클릭하십시오.
  4. C/C++ 프로젝트 탐색기 보기에서 cone.h를 펼치고 원뿔 클래스 요소를 클릭하여 다이어그램 편집기에 끌어다 놓으십시오.

이제 원뿔 클래스를 Shapes 프로젝트에 추가했습니다. 이제 UML 모델링 도구를 사용하여 클래스 및 속성을 새 클래스에 추가할 수 있습니다. 다이어그램은 다음 그림과 유사하게 표시됩니다.

Shapes 프로젝트에 새 원뿔 클래스가 들어 있습니다.

원뿔 클래스에 getColor 및 setColor 메소드 추가

원뿔 클래스는 기본 쉐이프 클래스가 정의하는 getColor 및 setColor 메소드를 구현합니다.

원뿔 클래스에 getColor 및 setColor 메소드를 추가하려면 다음을 수행하십시오.
  1. 다이어그램 편집기의 classdiagram.dnx다이어그램에서 원뿔 클래스를 마우스 오른쪽 단추로 클릭한 다음 C/C++ 추가 > 필드를 클릭하십시오.
  2. C++ 필드 작성 창의 이름 필드에 color를 입력하십시오.
  3. 유형 목록에 string을 입력하고 완료를 클릭하십시오.
  4. 다이어그램 편집기의 classdiagram.dnx 다이어그램에서 원뿔 클래스를 마우스 오른쪽 단추로 클릭한 다음 C/C++ 추가 > 메소드를 클릭하십시오.
  5. C++ 메소드 작성 창의 이름 필드에 getColor를 입력하십시오.
  6. 리턴 유형 목록에 string을 입력하고 완료를 클릭하십시오.
  7. 원뿔 클래스에서 getColor 메소드를 두 번 클릭하고 코드 편집기에서 다음과 같이 getColor 메소드의 본문을 지정하십시오.{return color;};
  8. 다이어그램 편집기의 classdiagram.dnx 다이어그램에서 원뿔 클래스를 마우스 오른쪽 단추로 클릭한 다음 C/C++ 추가 > 메소드를 클릭하십시오.
  9. C++ 메소드 작성 창의 이름 필드에 setColor를 입력하고 완료를 클릭하십시오.
  10. 원뿔 클래스에서 setColor 메소드를 두 번 클릭하고 코드 편집기에서 메소드의 서명을 void setColor(string c)로 지정하고 setColor 메소드의 본문을 {color = c;};로 지정하십시오.

이제 getColor 및 setColor 메소드를 원뿔 클래스에 추가했습니다.

원뿔 클래스에 getSize 및 setSize 메소드 추가

원뿔 클래스는 기본 쉐이프 클래스가 정의하는 getSize 및 setSize 메소드를 구현합니다. 크기 필드는 원뿔의 높이를 저장합니다.

원뿔 클래스에 getSize 및 setSize 메소드를 추가하려면 다음을 수행하십시오.
  1. 다이어그램 편집기의 classdiagram.dnx 다이어그램에서 원뿔 클래스를 마우스 오른쪽 단추로 클릭한 다음 C/C++ 추가 > 필드를 클릭하십시오.
  2. C++ 필드 작성 창의 이름 필드에 size를 입력하십시오.
  3. 유형 목록에서 double을 선택하고 완료를 클릭하십시오.
  4. 다이어그램 편집기의 classdiagram.dnx 다이어그램에서 원뿔 클래스를 마우스 오른쪽 단추로 클릭한 다음 C/C++ 추가 > 메소드를 클릭하십시오.
  5. C++ 메소드 작성 창의 이름 필드에 getSize를 입력하십시오.
  6. 리턴 유형 목록에 무효 옆에 있는 아래쪽 화살표를 클릭하고 double을 선택한 후 완료를 클릭하십시오.
  7. 원뿔 클래스에서 getSize 메소드를 두 번 클릭하고 코드 편집기에서 다음과 같이 getSize 메소드의 본문를 지정하십시오. {return size;};
  8. 다이어그램 편집기의 classdiagram.dnx 다이어그램에서 원뿔 클래스를 마우스 오른쪽 단추로 클릭한 다음 C/C++ 추가 > 메소드를 클릭하십시오.
  9. C++ 메소드 작성 창의 이름 필드에 setSize를 입력하고 완료를 클릭하십시오.
  10. 원뿔 클래스에서 setSize 메소드를 두 번 클릭하고 코드 편집기에서 다음과 같이 setSize 메소드의 본문을 지정하십시오. {size = s < 0 ? 0:S;};

방금 getSize 및 setSize 메소드를 원뿔 클래스에 추가했습니다.

원뿔 클래스에 getRadius 및 setRadius 메소드 추가

원뿔 클래스는 기본 쉐이프 클래스가 정의하는 getRadius 및 setRadius 메소드를 구현합니다. 반지름 필드는 원뿔의 밑면 반지름을 저장합니다. 응용프로그램은 반지름을 사용하여 원뿔의 원주와 부피를 계산합니다.

getRadius 및 setRadius 메소드를 추가하려면 다음을 수행하십시오.
  1. 다이어그램 편집기에서 원뿔 클래스를 마우스 오른쪽 단추로 클릭한 다음 C/C++ 추가 > 필드를 클릭하십시오.
  2. C++ 필드 작성 창의 이름 필드에 radius를 입력하십시오.
  3. 유형 목록에서 double을 클릭하고 완료를 클릭하십시오.
  4. 다이어그램 편집기의 classdiagram.dnx 다이어그램에서 원뿔 클래스를 마우스 오른쪽 단추로 클릭한 다음 C/C++ 추가 > 메소드를 클릭하십시오.
  5. C++ 메소드 작성 창의 이름 필드에 getRadius를 입력하십시오.
  6. 리턴 유형 목록에서 double을 선택하고 완료를 클릭하십시오.
  7. 원뿔 클래스에서 getRadius 메소드를 두 번 클릭하고 코드 편집기에서 다음과 같이 getRadius 메소드의 본문을 지정하십시오. {return radius;};
  8. 다이어그램 편집기의 classdiagram.dnx 다이어그램에서 원뿔 클래스를 마우스 오른쪽 단추로 클릭한 다음 C/C++ 추가 > 메소드를 클릭하십시오.
  9. C++ 메소드 작성 창의 이름 필드에 setRadius를 입력하고 완료를 클릭하십시오.
  10. 원뿔 클래스에서 setRadius 메소드를 두 번 클릭하고 코드 편집기에서 다음과 같이 setRadius 메소드의 본문을 지정하십시오.{radius = r < 0 ? 0:r;};

이제 getRadius 및 setRadius 메소드를 원뿔 클래스에 추가했습니다.

원뿔 클래스에 surfaceArea 및 volume 메소드 추가

원뿔 클래스는 shapes3d 클래스가 정의하는 surface area 및 volume 메소드를 구현합니다. 원뿔의 표면적을 계산하는 데 사용되는 수식은 pi * r * (r + (r2 + h2)1/2)이고, 원뿔의 부피를 계산하는 수식은 1/3 x pi x r2 h입니다.

원뿔 클래스에 surfaceArea 및 volume 메소드를 추가하려면 다음을 수행하십시오.
  1. 다이어그램 편집기의 classdiagram.dnx 다이어그램에서 원뿔 클래스를 마우스 오른쪽 단추로 클릭한 다음 C/C++ 추가 > 메소드를 클릭하십시오.
  2. C++ 메소드 작성 창의 이름 필드에 surfaceArea를 입력하십시오.
  3. 리턴 유형 목록에서 double을 선택하고 완료를 클릭하십시오.
  4. 원뿔 클래스에서 surfaceArea 메소드를 두 번 클릭하고 코드 편집기에서 다음과 같이 surfaceArea 메소드의 본문을 지정하십시오.{return pi * radius * (radius + (pow(pow(radius,2) + pow(size,2),0.5)));};
  5. 다이어그램 편집기의 classdiagram.dnx 다이어그램에서 원뿔 클래스를 마우스 오른쪽 단추로 클릭한 다음 C/C++ 추가 > 메소드를 클릭하십시오.
  6. C++ 메소드 작성 창의 이름 필드에 volume을 입력하고 완료를 클릭하십시오.
  7. 원뿔 클래스에서 volume 메소드를 두 번 클릭하고 코드 편집기에서 다음과 같이 volume 메소드의 본문을 지정하십시오. {return 0.333 * pi * (pow(radius,2) * size);};

이제 surfaceArea 및 volume 메소드를 원뿔 클래스에 추가했습니다.

원뿔 클래스에 set 및 print 메소드 추가

원뿔 클래스는 기본 쉐이프 클래스가 정의하는 set 및 print 메소드를 구현합니다.

원뿔 클래스에 set 및 print 메소드를 추가하려면 다음을 수행하십시오.
  1. 다이어그램 편집기의 classdiagram.dnx 다이어그램에서 원뿔 클래스를 마우스 오른쪽 단추로 클릭한 다음 C/C++ 추가 > 메소드를 클릭하십시오.
  2. C++ 메소드 작성 창의 이름 필드에 print를 입력하고 완료를 클릭하십시오.
  3. 원뿔 클래스에서 print 메소드를 두 번 클릭하고 코드 편집기에서 다음과 같이 print 메소드의 본문을 지정하십시오.
    { cout  << "Cone:"
    			<< "\n\tLength = " << getSize()
    			<< "\n\tArea   = " << surfaceArea()
    			<< "\n\tVolume = " << volume()
    			<< "\n\tColor  = " << getColor()
    			<< "\n\n";
    };
  4. 다이어그램 편집기의 classdiagram.dnx 다이어그램에서 원뿔 클래스를 마우스 오른쪽 단추로 클릭한 다음 C/C++ 추가 > 메소드를 클릭하십시오.
  5. C++ 메소드 작성 창의 이름 필드에 set를 입력하고 완료를 클릭하십시오.

이제 print 및 set 메소드를 원뿔 클래스에 추가했습니다.

cone.cpp 파일 편집

cone.cpp 클래스 파일은 set 메소드의 구현뿐만 아니라, 생성자 및 파기자도 포함합니다. set 메소드의 본문을 수정하여 사용자에게 원뿔의 크기 및 반지름 입력을 요청하는 프롬프트를 표시합니다. 또한 새 원뿔 클래스의 초기 값을 설정하려면 기본 생성자를 편집해야 합니다.

cone.cpp 파일을 편집하려면 다음을 수행하십시오.
  1. C++ 프로젝트 탐색기 보기에서 cone.cpp 클래스를 두 번 클릭하십시오.
  2. 코드 편집기에서 cone.cpp 클래스에 다음과 같이 기본 생성자의 본문을 지정하십시오. {color="Transparent"; radius=0; size=0;}
  3. 메소드 선언 섹션에서 다음과 같이 set 메소드의 본문을 지정하십시오.
    void cone::set()	{
    	double size;
    	double radius;
    	string color;
    	
    	cout << "Enter the height of the cone: ";
    	cin >> size;
    	setSize(size);
    	
    	cout << "Enter the radius of the base of the cone: ";
    	cin >> radius;
    	setRadius(radius);
    	
    	cout << "Enter the color of the cone: ";
    	cin >> color;
    	setColor(color);
    }
  4. 프로젝트를 저장하려면 파일 > 저장을 클릭하십시오.

이제 cone.cpp 클래스 파일에 set 메소드를 추가하여 Shapes 프로젝트를 완료했습니다.

확장된 응용프로그램 실행

응용프로그램을 실행하려면 include 문을 main.cpp 클래스에 추가하여 새 원뿔 클래스를 포함해야 합니다. main.cpp 클래스를 수정하여 응용프로그램을 실행하고 새 원뿔 클래스를 인스턴스화할 수 있습니다.

응용프로그램을 실행하려면 다음을 수행하십시오.
  1. C++ 프로젝트 탐색기 보기에서 main.cpp 클래스를 두 번 클릭하십시오.
  2. 클래스의 선언 섹션에서 #include "tetrahedron.h" 아래에 다음 include 문을 추가하십시오. #include "cone.h"
  3. 코드 편집기에서 클래스의 주 본문에 다음 코드를 추가하십시오.
    //instantiate and run the cone class
    		cone c;
    		c.print();
    		c.set();
    		c.print();
  4. 프로젝트를 저장 및 빌드하려면 파일 > 저장을 클릭하십시오.
  5. 실행을 클릭하십시오.

프로그램은 원뿔 쉐이프의 크기, 색상, 표면적 및 부피를 표시하고 새 원뿔 인스턴스에 값 지정을 요구하는 프롬프트를 표시합니다.