정체불명의 모모

c++ 04 : 클래스는 객체의 설계도 [ 클래스와 객체 / 어서와c++은 처음이지] 본문

프로그래밍(c++)

c++ 04 : 클래스는 객체의 설계도 [ 클래스와 객체 / 어서와c++은 처음이지]

정체불명의 모모 2019. 12. 17. 17:22

[ 클래스는 객체의 설계도 ]

 클래스(class)란 어떤 종류의 모든 객체에게 공통인 멤버 변수와 멤버 함수를 정의하는

 형틀(template)또는 청사진(blueprint)이라고 할 수 있다.

 객체 지향에서는 클래스로부터 만들어 지는 객체를 그 클래스의 인스턴스(instance)

 라고 한다.

 

 

1. 클래스 작성하기

class 클래스이름 {

      자료형 멤버변수1;
      자료형 멤버변수2;
      
      반환형 멤버함수1();
      반환형 멤버함수2();
 };

 ex )  원을 나타내는 클래스 Circle을 정의하여 보자. 클래스는 class 키워드를 이용하여 정의한다.

class Circle{
  
  public :
     int radius;            //멤버변수
     string color ;         //멤버변수
     
     double calcArea()      // 반환형 멤버 함수(double형)
     {   
         return 3.14 * radius*radius ;
     }
 }
     
  

   1_1. 클래스 멤버의 접근성 

         1). private :  클래스 안에서만 접근(사용)될 수 있다.(only class)

         2). protected : 클래스 안과 상속된 클래스에서 접근이 가능하다( 상속은 아직 학습x ) ( class, 상속 )

         3). public : 어디서나 접근 가능하다. (All(class , 상속 ,어디서든)

 

2. 객체 생성하기

   : 클래스의 정의는 객체를 찍어내는 틀을 만든 것에 불과하다. 

     틀을 사용하여 객체를 생성해야 드디어 객체를 사용할 수 있다.(cpp)


[ 여기서 잠깐! ] 

[ 클래스 Circle로 객체를 생성하려면 다음과 같이 생각 하면 된다. ]

 

1. 객체 생성하기

Circle obj;   //obj는 Circle 자료형의 변수이다.

Circle -> 자료형 , obj -> 변수명    (이라고 생각하면 된다.)

실제로 컴파일러 입장에서는 

클래스 = 사용자-정의 자료형(UDT:user-defined type)

라고 생각한다.

 

▧ 위의 문장이 실행되면 obj 라는 객체가 실제로 생성된다. 즉, 물리적인 실체를 가지게 되는 것이다.

    이처럼 실제로 생성된 객체를 클래스의 인스턴스(instance)라고 부른다.

    이는 객체(object)라는 용어가 많은 의미를 가지고 있으므로 그 의미를 더 확실하게 하자는 의미이다.

 

 

2. 객체의 멤버 접근

obj.radius = 3;                // obj의 멤버 변수인 radius에 3을 저장한다.

객체 안에 정의된 멤버 변수 와 멤버 함수를 사용 하기 위해선 

도트(.)연산자를 사용한다.

 

▧ 하나의 클래스에서 많은 객체가 생성될 수 있기 때문에 어떤 객체의 어떤 멤버인지 적어 주어야 한다.

객체 지향의 관점에서 보면 클래스안의 멤버 변수를 직접 사용하는 것은 바람직하지 않다.

객체내의 멤버 변수간접적으로 접근하는 것이 객체 지향의 원칙이다.

 

3. 멤버 함수 호출

obj.calcArea();         //obj의 멤버 함수인 calcArea( )를 호출 한다.

도트연산자를 이용하여 멤버 함수도 호출 할 수 있다.


 

Comments