현실에 있는 실제 사물들을 기반으로 하는 인간적인 사고를
프로그래밍 언어적으로 표현할 수 없을까 고민하던 중에 나온 방법론임
그 전에 언어들은 대체로 하드웨어에 치중되어 있거나 수학적인 연산에만 포커스를 맞추고 있었단 말이지
그런데 클래스라는 개념이 나오면서 클래스에 이름표를 붙이고 상태(변수)와 행동(함수)를 같이 집어넣을 수 있게 됐단 말임
이렇게 방법론이 바뀌면서 사람들이 자연스럽게 어떤 생각을 하게 됐냐면
Human 클래스를 만들어서
hungry를 정수형으로 표현하고
hungry가 꽉 찼으면
takeShit()라는 동작을 하도록 추가할 수가 있고 이 동작은 shit이라는 객체를 생성을 할 수가 있어
근데 그날 먹은 음식의 상태에 따라서 shit의 상태가 다를거아니냐?
그러면 경우에 따라서 묽은똥 된똥 토끼똥 검은똥 황금똥을 만들어 줘야할거고 이런게 다형성임 참 별거 아니지
그래서 기계적이고 수학적인 사고를 뛰어넘어서
성능을 버려가면서까지
이런 인간적인 사고를 바탕으로 인간이 이해하기 쉬운 개념을 만들었으니까
이점을 잘 활용하려면 설계를 인간이 이해가 잘 가도록 해야 할거 아니겠어
똥을 싸는 동작은 인간이 스스로 해야하는건데
힘은 내가 주고 똥은 니가 싸는 상황이 생기면 직관적으로 이해가 가겠어?
이런게 설계가 꼬여서 좆된 상황인거고
그리고 각 객체끼리 의사소통은 어떤 방식으로 할건데?
객체지향이라는건 이런걸 고민하는 언어라는거지
아무튼 그래서 난 요즘 나오는 책이나 블로그 글들 별로 좋아하지 않는다
핵심적인 개념은 빼고 부가적인걸 설명하는데 더 주력하고 있거든
와 이거 하나로 객체지향 다 이해했습니다 원랜 1도 몰랐었는데 대박