그동안 많이 들어보고 명확하게 이해하지 못했던 객체 지향 프로그래밍에 대해 공부해보았다.
프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고,
객체
들간의상호작용
을 통해 로직을 구성하는 프로그래밍 방법
- 여기서
객체
란변수
와메서드
를 가지며 특정 역할을 수행하도록 인간이 정의한 추상적인 개념- 이러한 객체들은 각자의 데이터를 가지고 있으며, 다른 객체들과 메시지를 주고받으며 상호작용할 수 있다.
불필요한 세부 사항들을 제거하고 가장 본질적이고 공통적인 부분만을 추출 즉,객체의 공통된 속성(변수)과 행위(메서드)를 추출한다.
불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단하게 만드는 것이 가능하다.
예를 들어보면, 현대, 기아, KG, 쉐보레 등 모두 자동차
를 만드는 회사이다. 그래서 우리는 자동차
라는 공통적인 특징을 가진 설계도
를 가지고 있다고하자. 여기서 르노라는 회사를 추가한다면 우리는 다른 회사에 공통적으로 쓰이는 자동차 설계도
를 가져와서 자기의 브랜드에 맞게 만들면 된다.
하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석 될 수 있는 것을 의미
어떠한 요소에 여러 개념을 넣어 놓는 것을 의미
오버라이딩
: 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의해서 독자적인 기능을 추가해 사용할 수 있다.오버로딩
: 같은 이름의 메서드가 인자의 개수나 자료형에 따라 다른 기능을 할 수 있게 함으로 상황에 맞게 유연하게 사용할 수 있다.예를 들어보면, 한 명의 남자가 있다고 가정해보면 이 남자는 집에서는 부모님의 아들이 되고, 회사에서는 한 명의 직원이 되고, 취미로 밴드에서 음악을 한다면 한 명의 밴드 멤버가 되는거와 같이 한 명의 남자는 각 상황에 맞게 활동하는거와 비슷한 맥락인거 같다.
결국 객체지향 공부를 하는구나.....