C++ 객체지향 프로그램
객체 지향 프로그래밍(OOP)
컴퓨터 프로그래밍의 패러다임으로써 현실의 존재를 프로그램으로 구성하거나 어떤 문제를 해결하는 등 다양한 이유로 프로그래밍을 하게 되는데 이때 프로그래밍에서 필요한 데이터를 추상화하여 속성이나 행동, 동작, 특징 등을 객체로 만들고 그 객체들이 서로 유기적으로 동작하도록 하는 프로그래밍 방법
객체(object) 메모리를 할당받아 프로그램에서 사용되는 모든 데이터
그동안 사용하던 변수나 구조체, 함수등의 메모리를 할당받아서사용하는 모든 것들이 객체이다.
이러한 객체들을 가지고 어떤 사물이나 주어진 문제를 해결하기 위해 추상화를 거쳐 속성이나 행동, 동작, 특징등을 변수나 메소드를 통해서 구현한 틀이 클래스이다.
장점
1. 코드의 재사용이 용이하다.
2. 유지보수 및 업그레이드가 쉽다.
3. 대형 프로젝트에 효과적이다.
4. 직관적인 코드 분석을 가능하게 한다.
단점
1. 처리속도가 느리다. 모든 과정이 주로 함수로 이루어져 있기 때문에 일반적인 코드보다 함수 호출이 많아 처리속도가 느려지게 된다.
2. 객체가 많아질수록 용량이 커진다.
3. 설계시 시간과 노력이 많이 든다.
객체 지향 프로그래밍의 특징
- 추상화(abstraction)
- 캡슐화 (encapsulation)
- 상속성 (inheritance)
- 다형성 (polymorphism)
1. 추상화
어떤 객체가 가진 공통된 특징이나 속성, 기능 등을 한 곳에 모아 이름을 붙여 작성하는 것
2. 캡슐화
공통의 속성이나 기능, 행동 등을 캡슐에 보관하는 것처럼 하나의 클래스로 묶는 것
3. 상속성
자식 클래스가 부모 클래스의 기능이나 속성 특징 등 공통적으로 지니고 있는 것들을 그대로 물려받아 재사용하거나 기능의 일부를 변경하거나 좀 더확장시켜야 하는 경우 해당 기능만 수정 가능할 수 있도록 하는 것
4. 다형성
동일한 함수명을 상황에 따라 다른 의미를 지니도록 하는 것
함수의 오버로딩과 오버라이딩이 가능함을 뜻한다.
오버로딩 (overloading) - 같은 이름의 함수를 매개변수의 타입이나 개수를 다르게 하여 재정의하는 것
오버라이딩 (overriding) - 부모 클래스의 메소드와 같은 이름, 동일한 매개변수를 지닌 메소드를 자식 클래스에서 재정의하여 확장하여 다른 기능을 수행할 수 있도록 하는 것