목적
  - 수학 공식에 맞는 클래스 자료형과 공식을 C++ 에 적용한다.

문제
사용자 삽입 이미지

코드



해설
  - 생성자(Constructor)는 클래스가 생성시(인스턴스화) 기본적으로 수행하는 구문입니다. 변수를 초기화 하거나 객체를 복사나 할당/생성 될때 수행되며 여러가지 역할을 합니다. 이와 반대 되는게 파괴자(Destructor) 입니다.
  - m_PrintArea() 맴버함수는 넓이를 m_PrintVol() 맴버함수는 부피를 출력합니다.
  - 각각의 맴버변수는 private 형으로 선언 되어있기 때문에 맴버 함수인 m_PrintArea, m_PrintVol, 생성자, 파괴자 외에는 접근할수 없습니다.(정보 은닉)
  - 직육면체 겉넓이는 가로*높이*2 + 가로*세로*2 + 세로*높이*2 이며 부피는 가로*세로*높이 입니다.

참고

 - 유사 문제

Posted by 카켈




목적
  - 클래스를 이해하고 외부 함수에서 클래스가 보호하고 있는 변수를 이용할 줄 안다.
  - 생성자를 이해한다.

문제

사용자 삽입 이미지

풀이

#include <iostream>

using namespace std;

 class cHexahedron
 {
  public:
   friend int i_Volumn(int, int, int);
   cHexahedron() { iX = iY = iZ = 0; }
   void v_GetValue();
   void v_Print();

  private:
   int iX, iY, iZ;

 };

void cHexahedron::v_GetValue()
{
 int aX, aY, aZ;
 aX = aY = aZ = 0;
 cout << "육면체의 가로, 세로, 높이를 입력하세요 : ";
 cin >> aX >> aY >> aZ;
 iX = aX; iY = aY; iZ = aZ;
 
 return;
 
}

void cHexahedron::v_Print()
{
 cout << "육면체의 부피 : " << i_Volumn(iX, iY, iZ) << endl;
 return;
}

int i_Volumn(int iX, int iY, int iZ)
{ return iX * iY * iZ; }

int main(void)
{
 cHexahedron cHex[3];
 for(int i = 0; i < 3; i++)
 {
  cout << i + 1 << "번째 ";
  cHex[i].v_GetValue();
 }
 
 for(i = 0; i < 3; i++)
 {
  cout << i + 1 << "번째 ";
  cHex[i].v_Print();
 }

 return 0;
}


해설
  - 클래스와 함수 구조입니다.

사용자 삽입 이미지
  -  iX 와 iY, IZ 는 private 로 보호된 맴버 변수 입니다. private 는 클래스의 맴버가 아닌 다른 외부 함수에서 불러다 쓸수 없습니다. 이를 정보 보호 / 은닉이라 하는데 자료의 효율적인 관리를 목적으로 만들어진 것입니다. 예외적으로 friend 함수를 두어 private 맴버라도 불러다 쓸수 있게 합니다. public 영역에서 friend 를 선언하여 남용을 방지 합니다.

  - 맴버 함수에서는 부른 객체 자신을 가리키는 this 객체가 기본적으로 존재 합니다. 이를 생략해서 그냥 iX, iY, iZ 를 써서 쓸수 있지만 이를 표기하여 this.iX this.iY this.iZ 로 쓸수 있습니다. 맴버 함수에서는 자신이 속한 클래스 객체의 맴버 변수를 쓸수 있으므로 private 로 선언된 맴버 변수도 자유롭게 쓸수 있습니다.

  - "i + 1 번째 " 만 따로 출력하여 공통된 부분의 출력부를 최소화 했습니다.

참고
  - 클래스는 C++ 의 가장 두들어진 객체지향적 특징입니다. C 에서는 극히 일부 기능을 구조체에서 제공하고 있습니다. 클래스는 잠깐 공부하기 보다 아래 페이지에서 자세히 공부 하시는게 이후 C++ 의 클래스를 이해하시는데 도움이 될 것입니다.

  - http://www.winapi.co.kr/clec/cpp4/cpp4.htm : winapi 에서 제공하는 C++ 문법

Posted by 카켈
이전페이지 1 다음페이지