UD_park's IT story
[C++] 객체 지향과 Class의 개념 및 사용법 본문
(학습 서적 이것이 C++이다에서
내용 발췌하였습니다)
[보기용 예제 소스 코드에서 오류 발생시에
댓글이나 방명록에 글을 남겨 주시면 수정/보완하겠습니다]
이번에는 객체 지향에 대하여
포스팅해보겠습니다
흔히 많이들 공부하시는
JAVA에서 객체 지향을 많이
접하게 됩니다
C++의 객체 지향 또한
JAVA와 크게 차이가 나지 않습니다
C++의 객체의 정의는
다음과 같습니다
객체란 변수들과 그와 관련된
메소드들이 모여서 이룬 하나의 꾸러미
정의는 참고정도만 해주시고
메소드에 대해 헷갈리시는 분들은
메소드를 설명한 다음포스팅을
참고해 주시기 바랍니다
그리고 C++의 클래스에
대한 정의는 다음과 같습니다
클래스란 C의 구조체에서 확정된
변수, 객체, 함수를 포함한 하나의 틀
이렇게 어렵게 이야기하는걸
싫어하는 저는 제 방식대로
말을 바꿔 보겠습니다
그 동안 많이 써왔던 C의 구조체와
그 구조체 안과 밖에서 썼던 매개 변수들
그리고 구조체 안의 변수와 함수들
이 모든 걸 싸그리 하나의 틀안에
쑤셔 넣을 수있는 가방같은 존재가 바로
C++의 클래스다 라고
대충 이해하시면 될것 같습니다
다음은 C++ 클래스의 문법을
알아보도록 하겠습니다
class 클래스이름
{
접근제어지시자:
멤버변수선언;
멤버함수 선언및정의;
};
그럼 위의 문법에서 나온
용어들을 풀이해보겠습니다
접근제어 지시자란
public, private, protected 등입니다
이 3가지가 주로 쓰이니 간단히
설명하고 넘어가겠습니다
public : 멤버에 관한 모든 외부 접근이 허용
protected : 멤버에 관한 모든 외부 접근이 차단
(단, 상속관계에 있는 자식 클래스에서의 접근은 허용)
private : 외부 접근 뿐만 아니라 자식 클래스
접근 또한 차단
(클래스 선언할 때 별도의 접근제어지시자
명령이 없으면 private가 기본값으로 적용됨)
여기서 멤버란 같은 클래스라는
의미로 예를들어
class Test
{
public:
멤버변수 A;
멤버변수 B;
}
이렇게 있다면 A, B 두 변수는
같은 Test라는 이름의 클래스
안에서 사용되는 변수라는 말이며
A와 B는 Test의 멤버 변수이다
라고도 말할 수 있습니다
그럼 이제 C++의 Class를
사용한 예제를 보며 설명하겠습니다
제일 만만한 구구단을 예제 문제로
삼았습니다
보시다시피 main 함수에서
작동중인 코드가 고작 3줄입니다
대부분 Test라는 클래스에서
작동중입니다
설명을 드리자면 Test라는 이름의 클래스와
그 안에서 어디서든 쓸 수있는 Number라는
멤버 변수, 그리고 출력시킬 구구단의 단을
입력받는 멤버 함수 Input과
그 결과값을 계산하여 출력하는 Print입니다
소스 코드에서 보이듯이
클래스 내부이지만 함수들 밖에
Number라는 변수가 선언되었음에도
멤버 함수인 Input과 Print 둘 다
Number라는 변수를 자유롭게
사용중입니다
결과 화면입니다
현재 Test 클래스의
모든 변수와 함수들이 public으로
선언 되어있는것을
아까 말씀드린 private를
적용시켜보았습니다
그랬더니 위와 같이
Error가 발생합니다
설명을 보니 private 멤버에
접근할 수 없다라고 나옵니다
앞서말한 바와 같이
private는 모든 외부의 접근을
차단하기 때문입니다
private와 protected에 대한
설명은 이후 상속과 캡슐화에 대한
포스팅에서 더 깊이있게
설명하도록 하겠습니다
혹시 다른것에 대해 궁금하신게
있으시다면
댓글에 달아주세요
아는것이면 친절하게 쉽게
모르는것이면 또 제가 알아내서
친절하게 쉽게 포스팅해서
설명해드리겠습니다
'IT - Language > C++' 카테고리의 다른 글
[C++] 메소드(Method)에 대한 기본 정의와 사용법 & const (0) | 2018.06.19 |
---|---|
[C++] 생성자와 소멸자, 디폴트/변환 생성자 (0) | 2018.06.16 |
[C++] 오버로딩(Overloading) 함수의 다중정의 (0) | 2018.06.15 |
[C++] 인라인 함수의 기본 개념과 사용법 (0) | 2018.06.15 |
[C++] 함수 템플릿에 대한 설명 (0) | 2018.06.14 |