[TIL05] Javascript '객체 지향 프로그래밍'은 무엇일까

🚀·2021년 3월 21일
0

javascript

목록 보기
3/9
post-thumbnail

객체 지향 프로그래밍을 알기 전

처음 자바스크립트 공부를 시작하고 얼마 안되어 강의나 책에서 '객체' 파트가 나왔을 때 '객체'라는 뜻에 대해 많은 혼동이 왔었다..😢
'객체'라는 말은 평소에 쓰지도 않을 뿐더러 이게 코드를 짤 때 무엇을 의미하는지 강의를 봐도 정확한 개념이 짚어지지 않았다.
책에 나온 '객체'의 정의는 아무리 읽어봐도 머리속에 와닿지 않아 '객체'부분에서 굉장히 머리가 아팠던 기억이 있다...🤯

책에 나왔던 정의 "기능과 속성을 가진 주변의 모든 사물",,,
나 🤔🤔🤔🤔🤔🤔,,,??? ~

지금은 다행히 '객체'가 어떠한 것을 의미하는지 추상적으로 알게되었고, 계속 공부중이다.✏️

언어를 공부하면서 자바스크립트는 '객체지향 프로그래밍', c언어는 '절차지향 프로그래밍'이라는 말을 많이 들어봤지만,
정작 '객체'를 공부하면서 '객체지향 프로그래밍'이라는 것에 대해선 생각을 해보지 않았다.
최근 정보처리기사를 공부하고, 생활코딩 강의를 들으며 '객체지향 프로그래밍'이 얼마나 대단한 것인지 프로그래밍을 할 때 중요한 것인지 조금이나마 느껴 자바스크립트를 공부하며 좀 더 흥미를 느끼게 된다 !

따라서 왜 '객체지향 프로그래밍'이란 무엇이고, 왜 쓰는지 부족하지만 강의를 보며 정리해보려 한다 !! 💡

객체지향 프로그래밍의 정의

✔️ 프로그램이 길어지고 복잡해지면 변수(숫자가 들어가는 자리)도 많아지고, 코드 또한 길어져서 해석하는데 시간이 오래 걸립니다. 그래서 프로그램을 짤 때 동일한 목적이나 기능을 하는 변수와 함수들을 각각 하나로 묶어서 object(객체)로 만들고 그 객체들끼리 상호 통신하면서 프로그램 전체가 돌아가도록 코드를 구성했는데, 이것이 바로 객체지향 프로그래밍입니다.
✔️ 객체지향 프로그래밍을 활용하면 어떤 오류가 발생했을 때 프로그램 전체를 살펴보지 않고 각 객체들을 살펴보면서 수정을 할 수 있습니다. 과거에는 발생한 오류를 찾아내고 수정하는데도 애를 먹었지만, 객체지향 프로그래밍을 활용하면서 훨씬 효율적으로 대처할 수 있게 된 것입니다. 또한 이렇게 함으로서 프로그램의 크기도 줄일 수 있게 되었습니다.
📚 출처 [네이버 지식백과]

객체지향 프로그래밍과 부품화

프로그래밍은 정신적인 활동이다. 정신적인 것은 실체가 없고, 무한하고 유연하다.
이러한 특성은 정신이 가진 장점이면서 소프트웨어의 극치다.
하지만 정신의 이러한 특성은 때로 오해나 모순 같은 문제점을 유발한다.
소프트웨어도 이러한 문제점을 그대로 상속받는다.

이러한 문제점을 극복하기 위한 노력 중의 하나가 부품화라고 할 수 있다.
객체지향과 부품화를 동일시 할 수는 없지만 부품화라고 하는 소프트웨어의 큰 흐름은 객체 지향이 만들어지는 데 지대한 공헌을 했다고 할 수 있다.

객체지향은 부품화의 정점이라고 할 수 있다. 메소드는 부품화의 예라고 할 수 있다. 이 메소드들을 부품으로 해서 하나의 완제품인 독립된 프로그램을 만든다.
메소드를 사용하면 코드의 양을 극적으로 줄일 수 있고, 메소드 별로 기능이 분류되어 있기 때문에 필요한 코드를 찾기도 쉽고 문제의 진단도 빨라진다.

그런데 프로그램이 커지며 엄청난 메소드들이 생겨나고, 메소드와 변수를 관리하는 것은 점점 어려운일이 되기 시작한다. 메소드는 프로그래밍의 역사에서 중요한 도약이었지만, 이 도약이 성숙하면서 새로운 도약지점이 보이기 시작한 것이다.

그 도약 중의 하나가 객체 지향 프로그래밍이다.
이것의 핵심은 연관된 메소드와 그 메소드가 사용하는 변수들을 분류하고 그룹핑하는 것이다.
바로 그렇게 그룹핑 한 대상이 객체(Object)이다.
비유하자면 파일과 디렉토리가 있을 때 메소드나 변수가 파일이라면 이 파일을 그룹핑하는 디렉토리가 객체라고 할 수 있다.
이를 통해서 더 큰 단위의 부품을 만들 수 있게 되었다

정리💡

'객체 지향 프로그래밍'은 프로그래밍 언어가 발전하면서 필요한 데이터를 객체화 시키고, 그 객체들이 서로 유기적인 상호작용을 할 수 있도록 로직을 구성하는 것!
복잡한 로직들을 부품화, 캡슐화 시켜 업무 분담에도 용이하고 프로그램의 재사용유지보수가 쉽다!

요즘 공부하면서 느끼는 것은 단순히 프로그래밍 언어를 공부만 하는 것이 아니라,
어떻게 이런 언어들이 생겼고, 객체가 생겼고, 함수가 생겼고, 생각을 하면서 공부를 하면 좀 더 큰 그림(?)을 보면서 공부하게 되는것 같아 이해가 조금 더 빨라지는 것 같다.
알면 알수록 더 어려워지지만 급하게 생각하지 말고 차근차근 공부해나가야겠다.
위코드 개강 전까지 자바스크립트와 좀 더 친해지길 바라며..🤝

참고강의
생활코딩

2개의 댓글

comment-user-thumbnail
2021년 3월 22일

덕분에 '객체 지향'에 대해서 다시 생각해보고 정의에 대해 정독했습니다 😀😀

1개의 답글