티스토리 뷰
객체 지향은 인간 지향이다.
프로그래밍 언어의 발전사를 보면 개발자를 더욱 편하고 이롭게 하기 위한 과정임을 알 수 있다.
기계어에서 어셈블리어, C, C++, 자바로 발전해 온 과정이 기계가 아닌 인간을 배려하기 위한 과정이었던 것이다.
하지만 객체 지향 전까지는 인간이 기계를 이해하려고 노력해야 하는 것에서 벗어나지 못했다.
그래서 "왜 우리가 기계 종속적인 개발을 해야 하는가?"라는 의문점에서 "현실 세계처럼 프로그래밍할 수 없을까?" 라는 고민을 했고, 객체지향의 개념이 탄생하였다.
우리가 주변에서 볼 수 있는 모든 것은 사물이다. 눈으로 보여지는 것도 사물, 손으로 만져지는 것도 사물, 머릿속으로 어떤 것을 상상할 때도 사물을 떠올린다. 이 사물을 멋진말로 객체, 영어로는 Object라고 한다. 즉, "우리가 어떤 생각이나 행동을 할 때 사물을 인지하는 방식처럼 프로그래밍할 수 있지 않을까?" 라는 질문이 객체 지향의 출발점이다. 그래서 객체지향은 직관적이다.
객체 지향을 이해하기 위해 큰 그림을 생각해보자.
- 세상에 존재하는 모든 것은 사물, 즉 객체(Object)다.
- 각각의 사물은 고유하다.
- 사물은 속성을 갖는다.
- 사물은 행위를 한다.
그리고 사물을 이해하기보다는 분류하는 것이 인간의 인지법이다. 아래는 사물을 분류하는 예시다.
- 직립보행을 하면서 말을 하는 존재를 사람이라고 분류한다.
- 밤하늘에 반짝이는 사물들을 별이라고 분류한다.
- 짧은 다리에 날지 못하는 새를 펭귄이라고 분류한다.
그리고 좀 더 들어가보자. 직립보행을 하면서 말을 하는 존재를 사람이라고 분류했다. 여기서 사람은 사물을 분류한 것이지 객체가 아니다. 나중에 클래스라고 불린다. 김연아, 한효주, 빌게이츠는 사람이라는 분류 안에 속하는 객체(object)들이다. 그리고 객체들은 나이, 몸무게, 키 등의 속성(property)을 가지고 있고 먹다, 자다, 울다 등의 행위(method)를 가지고 있다. 좀 더 클래스와 객체와 그 안에 것들에 대해서 알고 싶다면 객체지향 포스팅을 참고하자.
객체 지향의 4대 특성
아마 객체 지향의 4대 특성 정도는 다 알고 있을 것이라 생각한다.
- 캡슐화 : 정보 은닉
- 상속 : 재사용
- 추상화 : 모델링
- 다형성 : 사용 편의
다음 포스팅에서 4대 특성들을 하나하나 살펴보도록 한다.
'Java' 카테고리의 다른 글
소프트웨어 모듈이 가져야 하는 세 가지 기능 (2) | 2023.11.18 |
---|---|
유용한 Stream API의 연산자들을 알아보자 (0) | 2022.10.29 |
[자바 객체지향의 원리와 이해 책] 2장 챕터 1-2 요약 (0) | 2022.08.17 |
스트림으로 짠 게시글 전체조회 분석해보기 (0) | 2022.07.26 |
디폴트 메서드를 사용하기 전과 후 비교 (0) | 2022.07.10 |
- Total
- Today
- Yesterday