본문 바로가기

객체지향프로그래밍

객체지향 프로그래밍(Object-Oriented Programming)에 대해 알아보자

객체지향 프로그래밍이란 무엇인가?

오늘 정리해볼 것은 객체지향 언어의 대표적인 예시인 자바, C#, C++, 파이썬 등의 프로그램을 공부하게 되면 반드시 듣게 되는 말 '객체지향 프로그래밍'이다.

대체 객체지향 프로그래밍은 뭘까?

우선, 단어를 나누어서 용어의 뜻을 명확하게 알아보자.



객체란?

객체를 알기 전에 '실체'와 '주체'라는 것을 먼저 알면 이해가 더 쉬울 것 같다.

실체란 실제로 존재하는 모든 것들을 의미하고,


주체란 실제로 존재하는 모든 것들의 1인칭, 즉 '나'라는 실체를 나 스스로가 바라보는 것을 의미한다.

객체는 주체가 실체를 바라보는 시점이라고 생각할 수 있다.

'나'라는 사람이 A라는 사람을 보면 '나'에게 A는 객체이지만, 

 

A라는 사람이 '나'라는 사람을 바라볼 때 '나'는 객체가 되는 것이다.

 

프로그래밍에서 개발자는 주체이므로, 프로그램은 실체, 개발자가 프로그램을 만들기에 프로그램은 개발자에게 객체가 된다.

 

현재 공부하고 있는 자바에서는 객체에 대하여, Object, Class, Instance 이 세가지로 역할을 나누며 그 안에서도 각각의 특성이 존재한다. 

이에 대해서는 다른 포스트를 통해 한 번 더 자세하게 후술할 예정이다.

이로써 대략적인 객체의 의미를 알아봤으니, 지향이란 무엇인지 알아보려 한다.


지향이란? 

 

지향의 사전적 의미는

 

1. 어떠한 목표나 방향을 추구하다

2. 어떠한 방향을 향하다 또는 가리키다

3. 특정한 기준이나 행동 원칙을 따르다

4. 특정한 속성이나 특징을 가지고 있다

 

이렇게 네 가지가 주로 사용되는 정의이다.

 

'객체지향 프로그래밍' 에서는 특정한 기준이나 행동 원칙을 따르다는 정의를 사용하는 것으로 보이는데,

 

그 이유는 객체지향 프로그래밍의 다섯 가지 설계원칙(SOLID)이 매우 중요하기 때문이다.

 

SOLID는 객체지향 프로그래밍의 장점을 돋보이게 만들어주는 원칙이다.

 

SRP : 단일 책임의 원칙

OCP : 개방 폐쇄의 원칙

LSP : 리스코프 치환의 원칙

ISP : 인터페이스 분리 원칙

DIP : 의존 역전의 원칙

 

다섯 가지가 있고 이에 대해서는 또 다음의 포스트로 후술할 예정이다 

 점점 미뤄지는게 너무 많아지는데.. 

 

지향의 의미는 SOLID의 기준과 행동 원칙을 따른다는 것이다. 


이제 단어적인 뜻을 다 이해 했으니,

 

그래서 '객체지향 프로그래밍'의 궁극적인 목표는 무엇인가?

 

'객체지향 프로그래밍'을 통해서 얻고자 하는 것은 무엇인가? 를 정리해보려고 한다.  물론 아주 개인적인 생각입니다 

 

객체지향 프로그래밍의 궁극적인 목표는

 

프로그래밍을 통해 새로운 세계를 창조하고,  세계는 오롯이 사용자(고객)의 입장에서 가장 만족스러워야 한다는 것이다.

 

객체지향 프로그래밍을 통해서 얻고자 하는 것은

 

개발자가 소프트웨어를 설계하고 개발할 때, 현실 세계에 존재하는 것들의 복잡성과 다양성을 효과적으로 모델링하기 위해 제시되는 원칙 또는 규칙이며, 이는 유지 보수에 원활함을 도와준다고 생각합니다.

 

이로써 아주 기본적인 객체지향 프로그래밍의 뜻과 이해를 정리해보는 포스트를 작성해봤습니다. 

 

이제 공부를 시작하는 사람의 관점으로 여러 가지를 알아보고 찾아보다보니 공부에 더 많은 도움을 얻게 되었네요

 

다음 포스트는 객체의 정의와 역할 개념을 정확하게 알아보는 포스트를 작성해보겠습니다.