OOP란?? (Object Oriented Programming)
C++는 객체지향 언어이고 해당 언어를 OOP라고 부르며 Object Oriented Programming의 약자다. 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
- Class (클래스) / Object (객체)
- Abstraction (추상화)
- Encapsulation (캡슐화)
- Inheritance (상속성)
- Polymorphism (다형성)
장점
- 코드 재사용이 용이 (남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서 사용할 수 있다.)
- 유지보수가 쉬움 (절차 지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아 수정해야하는 반면 객체 지향 프로그래밍에서는 수정해야 할 부분이 클래스 내부에 멤버 변수혹은 메서드로 존재하기 때문에 해당 부분만 수정하면 된다. )
- 대형 프로젝트에 적합 (클래스 단위로 모듈화시켜서 개발할 수 있으므로 대형 프로젝트처럼 여러 명, 여러 회사에서 프로젝트를 개발할 때 업무 분담하기 쉽다.)
단점
- 처리 속도가 상대적으로 느림.
- 객체가 많으면 용량이 커질 수 있음.
- 설계시 많은 시간과 노력이 필요.
1. Class (클래스) / Object (객체)
클래스 : 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성(attribute)과 행위(behavior)를 변수와 메서드로 정의한 것으로 객체를 만들기 위한 메타정보라고 볼 수 있다.
객체 : 클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것으로 실제 프로그램에서 사용되는 데이터
2. Abstraction
추상화는 추상 클래스나 추상 클래스가 갖는 추상 메서드를 의미하기보다는 클래스를 설계하는 것 자체를 의미한다. 즉, "공통의" 속성이나 기능을 묶어 이름을 붙이는 것이다.
3. Encapsulation
외부로부터의 노출을 최소화하기 위해(오류를 최대한 줄이기 위한 용도) 클래스에 정의된 맴버 변수들을 감싼다.
접근자로는 세 개의 키워드가 존재한다.
- private : 자기 클래스 내에서만 접근 가능.
- protected : 자신 포함 자식 클래스 까지 접근 가능.
- public : 어디서든 접근 가능.
4. Inheritance
상속의 가장 큰 특징은 코드 재사용이다. 사람, 고양이, 개, 돌고래, 새 등.... 동물과 관련된 클래스를 만들어 본다고 가정하고 해당 클래스마다 모두 일일이 고유의 독자적인 클래스를 만드는 것보단 눈, 코, 입, 호흡 등 과 같은 공통적인 특징을 하나의 클래스로 정의하고 그 클래스를 상속받으면서 재사용하면 그 만큼 효율적인건 없다.
5. Polymorphism
다형성이란 무엇일까?? 사전에는 다음과 같이 나와있다. "여러가지 형태가 존재한다."
겉보기엔 하나인것 처럼 보이는데, 동작은 상황에 따라 달라질 수 있다는 점 즉, 동일한 요청임에도 다르게 응답하는 것이다.
크게 2가지로 나뉜다.
- Compile Time (Static 정적)
- Run Time (Dynamic 동적)
C++과 C#간의 OOP 차이가 존재하기 때문에 코드는 따로따로 분리.
'CS > 공통' 카테고리의 다른 글
비쥬얼 스튜디오 프로젝트명 변경하는 방법 (0) | 2022.06.30 |
---|---|
DirectX 11 LNK2019 에러 해결 방법 (0) | 2022.06.30 |
응집도 - 결합도 (Cohesion - Coupling) 개념 (0) | 2022.06.22 |
dxerr.lib(dxerrw.obj) : error LNK2019 해결방법 (0) | 2022.06.20 |
객체지향 - SOLID 개발 5대 원리 (0) | 2022.06.07 |