2021. 8. 12. 19:58ㆍC++
// 객체 지향 프로그래밍
// 지난번 클래스에 이어서
2-1) 객체지향 프로그래밍의 특징
(1) 추상화(abstraction)
- 불필요한 부분을 생략하고 객체의 속성 중에서 가장 중요한 것에
중점을 두어 개략화, 다시 말해 요점을 간추려 모델화시킨 것.
(2) 캡슐화(encapsulation)
- 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
- 캡슐화된 객체의 세부 내용이 은폐되어,
기능 변경이 발생해도 오류의 파급효과가 적음
- 캡슐화된 객체들은 재사용이 가능함
- 객체들 간의 결합도가 낮아지고 인터페이스가 단순해짐
(3) 정보 은닉(data hiding)
- 캡슐화에서 가장 중요한 개념으로써, 다른 객체에게 자신의 정보를 숨기고
연산만을 통해서 접근할 수 있도록 허용
- 각 개체의 수정이 다른 객체에게 주는 영향을 최소화
(4) 상속성(inheritance)
- 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
- 상속성을 이용하면 하위 클래스는 상위 클래스의 모든 속성과 연산을
자신의 클래스 내에서 재정의하지 않고도 즉시 자신의 속성으로 사용가능
(5) 다형성(polymorphism) / 함수 오버로딩, 오버라이딩 공부해야함
- 메시지에 의해 객체가 연산을 수행하게 될 때,
하나의 메시지에 대해 각 객체가 가지고 있는
고유한 방법으로 응답할 수 있는 능력
- 매개변수의 개수 및 자료형에 따라 수행하는 행위가 다른,
동일한 이름의 메서드를 여러 개 정의할 수 있음.
3. 인스턴스(Instance)
- 클래스를 사용하기 위해서는 해당 클래스를 자료형으로 하는
객체를 동적(Dynamic) 선언해야 한다.
- 이 때, 해당 클래스 타입으로 선언이 완료되어
메모리에 할당까지 끝난 객체를 인스턴스라고 한다.
- 하나의 클래스에서 여러 개의 인스턴스를 생성 가능하다.
- 인스턴스마다 고유 메모리 공간을 사용하며,
자신만의 멤버 변수를 가지지만, 멤버 함수는 모든 인스턴스가 공유
<동적 할당(Dynamic allocation)>
데이터 영역과 스택 영역에 할당되는 메모리 크기는 컴파일 때 미리 결정된다.
하지만, 힙 영역의 크기는 프로그램이 실행되는 런타임 때 사용자가 직접 결정해야 한다.
이런 방식으로 런타임 때 메모리를 할당받는 것을 동적 할당이라 한다.
<사용방법>
C언어 : malloc() / free() 라는 함수를 이용
C++ : new / delete 키워드를 사용 (객체명 앞에)
'C++' 카테고리의 다른 글
C++ PlaySound (0) | 2021.08.14 |
---|---|
C++ 클래스와 정보은닉 (0) | 2021.08.12 |
C++ 클래스 (0) | 2021.08.11 |
C++ 열거형 데이터 Enum (0) | 2021.08.11 |
C++ 셔플 (0) | 2021.08.06 |