Post

[C++] 객체지향 프로그래밍이란? #1

1. 객체란?

객체는 프로그램에서 속성과 동작을 지닌 어떠한 실체 라고 할 수 있습니다.

예를 들어, 컴퓨터는 모니터, CPU, 주 기억 장치, 보조 기억 장치 등의 객체를 가지고 있습니다.
그리고 컴퓨터 또한 객체이죠.

정리하면, 나라는 주체가 바라보는 모든 사물, 공간 등은 객체가 될 수 있는 것입니다.


2. 객체 지향 프로그래밍이란?

그렇다면 객체 지향 프로그래밍이란 무엇일까요.

객체 지향 프로그래밍이란, 필요한 데이터를 추상화시켜 객체로 표현 하고.
그 객체들의 상호작용으로 동작하는 프로그래밍 방식 입니다.


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

객체 지향 프로그래밍은 특징은 추상화, 캡슐화, 상속성, 다형성으로 크게 4가지가 있습니다.

3-1. 추상화

삼성이 만든 데스크탑이든, 애플이 만든 iMac이든 두 개 다 컴퓨터라는 사실은 동일합니다.
두 개 다 CPU, 주 기억 장치, 보조 기억 장치 등을 가지므로,
Computer라는 추상화 객체를 만들어서 공통적인 특징을 공유할 수 있습니다.

추상화는 왜 필요할까?
컴퓨터라는 객체가 공통적으로 가지는 속성과 동작을 미리 정의해놓았기 때문에
다른 종류의 컴퓨터가 생기는 상황에도 다른 곳의 코드를 수정할 필요가 없어집니다.


3-2. 캡슐화

캡슐화는 속성과 동작들을 하나의 기능으로 묶는 것입니다.
예를 들어 Computer라는 클래스는
컴퓨터가 공통적으로 가지는 속성과 동작들을 묶어서 가지고 있는 것이죠

캡슐화는 왜 필요할까?
속성과 동작들을 하나의 기능으로 묶음으로써 코드를 재활용하기 좋아진다는 장점이 있으며,
접근 제어자1의 활용으로 정보를 은닉할 수 있다는 장점이 있습니다.


3-3 상속성

사람이라는 추상적 개념에도 크게 보면 동물이라는 추상적 개념이 있습니다.
이처럼 사람은 동물이므로 동물이라는 추상적 객체에게서 상속을 받는다고 생각할 수 있습니다.

상속성은 왜 필요할까?
앞에서 말한 객체간의 상호작용으로 동작하는 프로그래밍 방식이라고 설명했듯이
상속과 같은 연결이 있어야 객체 지향 프로그래밍이라고 할 수 있습니다.
또한 상속성을 이용하면 다양한 객체들의 관계를 더 효율적으로 관리할 수 있습니다.


3-4 다형성

다형성은 하나의 변수명이나 함수명이 상황에 따라서 다르게 해석될 수 있는 것을 의미합니다
예를 들어 같은 이름의 함수이지만, 인자의 개수나 자료형에 따라서 다른 기능을 할 수도 있는 함수가 있습니다.

다형성은 왜 필요할까?
다형성을 이용하면 상속된 클래스가 부모가 가진 동작을 재정의해서 사용할 수 있어 유용하고,
호출하는 방식에 따라 같은 이름의 함수도 다른 기능으로 사용할 수 있다는 장점이 있습니다.


객체 지향 프로그래밍의 장단점

장점

  • 상속을 통해서 코드의 재사용성을 높일 수 있습니다.
  • 독립된 객체를 사용함으로써 개발의 생산성을 높일 수 있습니다.
  • 일상생활에서 생각하는 자연스런 사고방식이 객체 속에 녺아있어 생각하는 것을 보다 자연스럽게 만들 수 있습니다.
  • 프로그램을 수정하거나 추가할 때 캡슐화를 통해서 보다 간편하게 유지보수할 수 있습니다.

단점

  • 객체에 대한 설계가 복잡한 까닭에 개발 이전부터 많은 시간이 소요됩니다.
  • 객체 지향 언어는 대체적으로 속도가 느립니다.
  • 다중 상속 등의 문제로 코딩의 난도가 높아집니다.
  1. 객체가 가지고 있는 속성이나 동작들에 접근할 권한을 정하는 예약어로, public, private, protected가 있습니다. 

This post is licensed under CC BY 4.0 by the author.