본문 바로가기
프로그래밍

객체지향언어란 무엇인가

by 마케터 배군 2022. 8. 14.
반응형

객체지향언어는 프로그래밍에서 사용하는 언어로써 사전적 정의는 '객체를 만들고 조작하며 객체끼리 관계를 맺음으로써 다수의 객체가 함께 수행할 수 있게 하는 언어'입니다. 이렇게 보니 무슨 뜻인지 전혀 모르겠죠? 지금부터 천천히 살펴보도록 하겠습니다.

 

객체지향언어

 

1. 객체란 무엇인가

객체지향언어를 알기 전에 객체가 무엇인지 알아야 합니다. 객체란 세상에 존재하는 모든 것을 뜻합니다. 영어로는 Object, 모든 물질이라는 뜻이죠. 지금 여러분 옆에 있는 모든 사물, 살면서 만나는 생명체들이 모두 객체입니다.

 

 

프로그래밍에서는 용도에 맞게 객체를 데이터와 기능으로 분류합니다. 컴퓨터로 예를 들어 보죠. 컴퓨터에서 데이터는 본체, 모니터, 키보드, 마우스 등입니다. 반대로 기능은 화면 제공, 소리,입력, 출력 등이 있습니다.

 

2. 객체지향언어란 무엇인가

객체지향언어란

 

객체지향언어는 컴퓨터 프로그래밍의 한 가지 방법으로 객체를 만들고 사용하는 방법입니다. 다시 말해, 프로그램을 다수의 객체로 만든 후, 객체들이 서로 상호작용을 통해 만들어지는 방식입니다.

 

다시 한 번 컴퓨터를 예로 들어 보죠. 컴퓨터에는 수많은 부품들이 들어가고, 각 부품들이 자신의 기능을 합니다. 부품들의 역할은 나눠져 있으며, 모두 자신만의 기능을 하죠. 한 부품이 고장이 나더라도 새로운 부품으로 바꿔주면 그만이기에 유지보수도 쉽고 편합니다.

 

 

3. 객체지향언어의 특징

객체지향언어 특징

객체지향언어는 캡슐화, 상속, 다형성, 추상화 등 4가지 특징을 가지고 있는데요. 각각 무엇을 뜻하는지 하나씩 알아 보도록 하겠습니다.

 

1) 캡슐화

데이터와 코드의 형태를 외부로부터 알 수 없게 하고, 데이터의 구조와 역할과 기능을 하나의 캡슐 형태로 만드는 방법입니다. 데이터와 알고리즘을 하나로 묶어 캡슐 형태로 만드는데요. 데이터가 캡슐 내부에 존재하기에 외부에서 확인하기 어렵습니다.

 

2) 상속

상위 클래스의 모든 요소를 하위 클래스가 모두 이어 받습니다. 부모가 자식에게 유전자를 물러줌으로 부모의 특징을 자식에게 물려주는 것을 떠올리시면 쉽습니다.

 

3) 다형성

상속과 연관이 있는 개념으로 한 객체가 여러 객체로 재구성 됨을 뜻합니다. 한 부모에서 태어났다고 해서 모든 특징이 똑같지 않은 것을 떠올리시면 됩니다.

 

대표적인 예로는 오버로딩(Overloading)와 오버라이딩(Overriding)이 있습니다. 오버라이딩은 상위 클래스가 가지고 있는 메서드(기능)을 하위클래스가 재정의해서 사용하는 기술입니다. 예를 들어, 부모에게 '말한다'는 기능이 있으면 자식은 이를 '여리게 말한다'로 재정의해서 사용합니다.

 

오버로딩은 같은 이름의 메서드 여러 개를 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술입니다. 예를 들어 사람이라는 객체가 먹는다는 메서드를 한다고 해보죠. 먹는 음식에 따라 기능이 달라질텐데요. 여기서 먹는 음식과 같은 변수를 '매개변수'라고 합니다. 밥, 면, 빵 등에 따라 각자 먹는 방법이 달라지듯, 기능이 달라집니다.

 

4) 추상화

추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 말합니다. 객체들을 프로그램으로 만들기 위해서는 공통적인 특성을 파악하는데요. 이 과정에서 필요없는 기능은 제거하게 됩니다.

 

4. 객체지향언어의 장점

(1) 재사용성 : 상속을 통해 프로그래밍 시 코드의 재사용을 높일 수 있습니다.

(2) 생산성 향상 : 잘 설계된 클래스를 만들어서 독립적인 개체를 사용함으로써 개발의 생산성을 향상시킬 수 있습니다.

(3) 자연적인 모델링 : 우리 일상생활의 모습이 반영되어 있기 때문에 생각하는 것을 자연스럽게 구현 가능합니다.

(4) 유지보수의 우수성 : 캡슐화 때문에 프로그램 수정과 추가를 하더라도 유지보수가 쉬워 경제적입니다.

 

5. 객체지향언어의 단점

(1) 개발속도가 느림 : 객체가 처리하려는 것에 대한 정확한 이해가 필요하기에 기획 단계부터 시간이 많이 듭니다.

(2) 실행속도가 느림 : 기능을 묶는 과정에서 함수 호출이 추가로 들어가는 등 프로그래밍이 무거워 시간이 소요됩니다.

(3) 코딩난이도 상승 : 상속을 통해 중복이 없어지지만, 상위 클래스와 하위 클래스 관계를 잘 알아야 하기에 코딩 난이도가 상승합니다.

반응형

'프로그래밍' 카테고리의 다른 글

타입스크립트[Typescript] 뜻과 특징  (0) 2022.08.15

댓글