..

Search

44) 클래스의 개념

44) 클래스의 개념

클래스의 개념


클래스(class)란?

C++에서 클래스(class)란 구조체의 상위 호환으로 이해할 수 있습니다.

C++의 구조체는 멤버로 함수를 포함할 수 있기에, C언어의 구조체보다 좀 더 확장된 의미를 가집니다.

C++에서 이러한 구조체와 클래스의 차이는 기본 접근 제어의 차이일 뿐, 나머지는 거의 같습니다.

 

C++에서는 이러한 클래스를 가지고 객체 지향 프로그램을 작성할 수 있습니다.

 

클래스의 멤버 변수를 프로퍼티(property), 멤버 함수를 메소드(method)라고도 합니다.

객체 지향 프로그래밍(OOP, Object-Oriented Programming)

객체 지향 프로그래밍에서는 모든 데이터를 객체(object)로 취급하며, 객체가 바로 프로그래밍의 중심이 됩니다.

 

객체(object)란 간단히 이야기하자면 실생활에서 우리가 인식할 수 있는 사물로 이해할 수 있습니다.

이러한 객체의 상태(state)와 행동(behavior)을 구체화하는 형태의 프로그래밍이 바로 객체 지향 프로그래밍입니다.

또한, 이와 같은 객체를 만들어 내기 위한 틀과 같은 개념이 바로 클래스(class)입니다.


객체 지향 프로그래밍의 특징

객체 지향 프로그래밍이 가지는 특징은 다음과 같습니다.

 

1. 추상화(abstraction)

2. 캡슐화(encapsulation)

3. 정보 은닉(data hiding)

4. 상속성(inheritance)

5. 다형성(polymorphism)

 

위와 같은 객체 지향 프로그래밍의 특징을 차례차례 수업을 통해 살펴볼 것입니다.


객체의 예

객체(object)

- 고양이

 

멤버 변수(member variable)

- cat.name_ = "나비"

- cat.family_ = "코리안 숏 헤어"

- cat.age_ = 1

- cat.weight_ = 0.1

 

멤버 함수(member function)

- cat.Mew()

- cat.Eat()

- cat.Sleep()

- cat.Play()

 

고양이 객체는 모두 위와 같은 멤버 변수와 멤버 함수를 가지지만, 각 멤버 변수의 값은 인스턴스마다 전부 다를 것입니다.


인스턴스(instance)

C++에서 클래스는 구조체와 마찬가지로 사용자가 정의할 수 있는 일종의 타입입니다.

따라서 클래스를 사용하기 위해서는 우선 해당 클래스 타입의 객체를 선언해야 합니다.

이렇게 선언된 해당 클래스 타입의 객체를 인스턴스(instance)라고 하며, 메모리에 대입된 객체를 의미합니다.

 

하나의 클래스에서 여러 개의 인스턴스를 생성할 수 있습니다.

이러한 인스턴스는 독립된 메모리 공간에 저장된 자신만의 멤버 변수를 가지지만, 멤버 함수는 모든 인스턴스가 공유합니다.


연습문제