[꼼꼼한 개발자] 꼼코더
13. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [자바와 객체 지향] - 객체 지향이해하기, 객체 지향의 4대 특성 본문
13. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [자바와 객체 지향] - 객체 지향이해하기, 객체 지향의 4대 특성
꼼코더 2022. 12. 27. 18:35👦🏻 객체 지향은 인간 지향이다
프로그래밍 언어의 발전사를 보면 개발자를 더욱 편하고 이롭게 하기 위한 과정이다.
기계중심의 기계어에서 조금 더 인간을 편하게 하는 어셈블리어 C, C++, 자바로 발전해 온 과정 모두 로우 레벨의 기계가 아닌 하이 레벨의 인간을 배려하기 위한 과정이었던 것이다.
그렇지만 절차적/구조적 프로그래밍까지의 과정은 인간이 기계를 이해하려는 노력에서 크게 벗어나지 못했다.
특히 포인터의 개념은 기계 수준으로 눈높이를 낮추지 않으면 이해하기 매우 힘들다.
그때 “우리가 왜 기계 종속적인 개발을 해야 하지?”라는 생각과 동시에
“우리가 눈으로 보고, 느끼고, 생활하는 현실 세계처럼 프로그래밍을 해보자!”라는 고민 끝에 객체 지향 개념이 탄생했다.
기존의 구조적 프로그래밍 언어에서 가장 중요한 것은 “함수”였다.
함수는 코드를 논리적인 단위로 구분하고 분할해서 정복하자는 것이다.
몇 천, 몇 만 라인의 명령어를 논리적인 단위로 나누어 블록화 해서 작성하자는 것이다.
“티끌 모아 태산”, “천 리 길도 한 걸음부터”라고 생각하면 쉽려나..?
아무튼 이런 논리적인 단위의 블록을 함수라고 한다.
함수로 인해 프로그래밍이 편해질 즈음에 더욱 파격적인 것이 나타났다.
바로 객체 지향이다. 현실세계를 한 번 둘러보자. 더 나아가 우주 끝까지 상상해 보자.
그럼 우주 만물은 객체들의 합이라는 것을 알 수 있을 것이다.
눈으로 보이는 것, 손으로 만져지는 것, 머릿속으로 상상되는 모든 것들은 사물이다.
즉 머릿속으로 상상되는 모든 사물들은 객체이다, 영어로는 Object
이것이 객체 지향의 출발이다. 그리고 객체 지향은 직관적이다.
🧱 객체 지향 이해하기
큰 그림을 생각해 보자.
- 세상에 존재하는 모든 것은 사물, 즉 객체(Object)이다.
- 각각의 사물은 고유하다.
- 사물은 속성을 갖는다.
- 사물은 행위를 한다.
👨🏻🏫 Class
그리고 사물을 하나하나 이해하기보다는 사물을 분류(class)해서 이해하는 것이 인간의 인지법이다.
- 직립보행을 하며 말을 하는 존재를 ‘사람’이라고 ‘분류’한다.
- 연미고, 짧은 다리, 날지 못하는 ‘새’를 ‘펭귄’이라고 분류한다.
🏃🏻♂️ Method
데드풀(object), 스파이더맨(object), 엑스맨(object)이라는 존재는 사람이라는 분류에 속한다.
그리고 사람이라는 분류 안에 객체들은 나이, 몸무게, 키 등의 속성과 먹다, 자다 등의 행위를 가지고 있다.
🧹 간단 정리
사람 : object(객체)
분류 : class(클래스)
속성 : property(속성)
행위 : method(행위)
🥬 객체 지향의 4대 특성 - 캡! 상추다
캡! 상추다..? 갑자기 뜬금없다 느낄 수 있지만
객체 지향의 4대 특성의 첫 글자들이다, 아래를 보면서 외워보자.
- 캡 - 캡슐화 : 정보 은닉
- 상 - 상속 : 재사용
- 추 - 추상화 : 모델링
- 다 - 다형성 : 사용 편의