[Java] 객체지향개념 정리

민아·2022년 1월 4일
0

💁‍♀️ 오늘의 TIL

  • 객체지향개념의 철학적 접근

객체지향언어란 무엇인가요? 프로그램을 객체로 만들고 이들끼리 상호작용 하도록 만드는 프로그래밍 언어이다. 사전적인 의미로는 그렇다.

좀 더 자세히 설명하자면 객체는 그 자체로 존재한다는 개념이 있다.
현실세계에 존재하는 모든 것들은 객체라고 불릴수 있고 이들은 각자의 존재 이유가 있는데 이것을 소명이라고 하며 곧 자기책임성의 원칙이 된다.

갑자기 너무 뜬구름 잡는 얘기가 아닌가요? 객체지향이라는 개념은 아리스토텔레스로부터 나왔다고 하니 이는 객체를 이해하는 아주 근원적인 의미라고 할 수 있다. 아리스토텔레스는 손으로 만질 수 없는 것이더라도 다른것과 뚜렷이 구별되는 인식 가능한 대상을 모두 객체라고 정의하고 있다. 개별적인 사물이나 사태 즉 객체를 보고 파악한다. 또한 빈틈없이 모든 것을 파악하는 것이 아니라 필요한 일부분만 취하거나 복잡한 것을 단순화하여 이해한다. 비슷한 특징을 지닌 것들을 하나의 개념으로 소급하여 이해한다. OPP는 이러한 개념을 차용했다.

다시말해서 프로그래밍을 하려고 인간의 현실세계, 즉 물리적인 개념이 존재하는 피지컬 월드를 가만히 관찰해보니 모든 객체는 속성과 기능으로 이루어져 있으며 존재의 목적을 이루기 위한 프로세스가 있더라는 것이다. 목적을 실행하는것은 상위 행동이며 목적을 이루기 위한 모든 일련의 행동을 하위 행동으로 정의했을때 인간은 먹고, 자고, 걷는 필수적인 행동과 더불어 그 밖에 다른 부수적인 모든 것들이 필요하지만 이렇게 피지컬적인 속성과 기능을 갖는 현실세계의 객체를 물리적 개념이 없는 컴퓨터 월드로 들여오는 것에는 한계가 있었기 때문에 이를 단순화 하기 위해서 목적을 이루기 위한 개념만을 남기고 모든 불필요한 하위 행동들을 제거한것이 OPP의 클래스이다.

피지컬월드의 객체를 본따 만든 컴퓨터월드의 클래스는 그 자체로는 기능하지 않기 때문에 자기책임성의 원칙에 따라 기능하려면 속성과 기능을 부여해야만 한다. 클래스는 현실세계의 객체가 갖는 특징에 따라 속성과 기능이 결정되며 이렇게 특징을 기반으로 컴퓨터 월드에서 소명을 다하도록 만드는것이 컴퓨터월드에서의 객체를 만드는것 즉 인스턴스화 하는것이다.

그러므로 객체지향언어란 무엇이냐? 인간이 태어나려면 존재 이전에 DNA가 있고 그것이 남녀간의 관계를 통해 수정되어 나오듯 컴퓨터월드에도 기본적인 형질이 클래스에 있으며 그것이 인스턴스화 되어 이들 객체가 상호작용 하도록 만드는 프로그래밍 언어를 객체지향언어라고 한다.

profile
그냥 꾸준히 하는중

0개의 댓글