승쨩개발공부

[C++] 클래스, 클래스의 4대 속성 본문

C++

[C++] 클래스, 클래스의 4대 속성

SeungHyune 2021. 12. 1. 02:18

절차 지향 프로그래밍

동사구인 '~하다'에 중점을 둔 프로그래밍

함수들이 각기 자신들의 기능을 절차에 의해 호출한다

 

 

 

객체 지향 프로그래밍(OOP)

객체에 중점을 둔 프로그래밍

 

 

 

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

상속을 통한 재 사용성을 보장한다.

유지보수 및 관리가 용이하다.

 

 

 

Message Passing

프로그래밍을 구성하는 객체간의 의사소통이다.

의사 소통은 각 객체들이 가지고 있는 함수를 통해 이루어진다.

ex)

1. 함수를 통해서 플레이어의 공격력을 얻어온다.

2. 함수를 통해서 몬스터한테 얻어온 공격력만큼 전달해 체력을 감소시킨다.

 

 

 

클래스

C++ 부터 등장한 사용자 정의 자료형이다.

변수와 데이터를 다루는 기능을 하나로 묶어 놓은 것이다.

클래스는 객체들을 추상화시킨 하나의 틀이다.

구조체와 동일하지만 기본 멤버 접근 지정자의 차이가 있다.

 

 

 

 

프로그래밍에서 객체

클래스는 사용자 정의 자료형

클래스에 변수명을 부여해서 메모리에 등록시키면 객체가 된다

메모리에 등록된 클래스는 Instance라고도 부른다.

 

 

 

맴버 접근 지정자

1. private

맴버의 접근 권한을 오로지 내부에서만 허용하겠다.

클래스의 기본 조건

 

2. public

맴버에 접근 권한을 내/외부 모두 허용하겠다.

구조체의 기본 조건

 

3. protected

멤버에 접근 권한을 내부 또는 상속 관계에서 허용하겠다.

 

구조체는 멤버 함수를 만들지 않는 데이터 덩어리 형태로 사용한다 -> 프로그래머 끼리의 약속

 

 

 

 

클래스의 4대 속성

클래스를 큼지막하게 구분해 놓은 것.

 

1. 은닉화

멤버 변수를 숨긴다는 의미

-> 기본 맴버 접근 지정자를 private으로 두면서 외부로부터 원치않는 데이터 변경을 막는다.

-> 데이터 보호

은닉화를 도모하지 않을 경우 원치 않는 데이터로 변경될 가능성이 있다.

 

은닉화된 데이터를 다루는 방법

-> Get/Set 함수를 사용.

 

Get함수 : 데이터를 읽는 용도

Set함수 : 데이터를 쓰는 용도

 

 

 

 

 

2. 캡슐화

데이터와 데이터를 다루는 기능을 하나로 묶어 놓는다.

-> 내부가 어떻게 구성되었는지 보다는 기능이 중요하다.

 

예를들어 정해진 순서의 세 가지의 함수를 순서대로 실행시키는 경우가 발생 하였을 떄.

-> 순서가 A -> B -> C가 아니고 B -> A -> C 이런식으로 섞이는 경우가 생길 수가 있다.

-> 캡슐화로 이런 경우가 발생하는 것을 막을 수 있다.

 

 

 

 

3. 상속성

다양한 객체들이 공통으로 필요한 데이터가 있을 경우 상속을 통해 데이터를 물려줄 수 있다.

모 클래스는 자식 클래스들의 공통된 요소를 추출한 추상적인 존재가 된다.

-> 재사용성

 

 

 

 

 

4. 다형성

동일한 메세지를 통해서 각 객체들이 각기 다른 행동을 수행하는 것.

상속과 맞물려 있기 떄문에 상속을 어느정도 자유자재로 다룰 수 있으면 다형성은 쉽게 사용한다.

-> 사용 편의

 

 

 

 

5.추상화

은닉화를 캡슐화에 끼우고 "캡슐화 , 상속성, 추상화, 다형성" 이 4개를 4대속성이라고

하는것도 맞는 말이다.

 

추상화란 공통된 요소들을 추출하는 작업

 

 

 

클래스의 파일분할

cpp에 정의부를 구현할 경우 어떤 클래스의 멤버 함수인지를 명시해 주어야 한다.

 

 

 

'C++' 카테고리의 다른 글

[C++] 전방 선언  (0) 2021.12.02
[C++] 생성자와 소멸자  (0) 2021.12.02
[C++] 디버깅  (0) 2021.12.01
[C++] String  (0) 2021.12.01
[C++] 파일분할  (0) 2021.12.01