어제 모 기업의 면접을 진행하면서 객체 지향 프로그래밍에 대한 답변을 해야 하는 상황이 있었는데 분명히 알고 있다고 생각하고 정리했던 적이 있었음에도 막상 답변을 하려고 하니까 어설프게 이야기 했던 일이 있었다.
덕분에 약한 부분을 짚어냈다고 생각하고 다시 정리하는 시간을 가져보기로 했다!
일반적인 정의부터 살펴보면 아래와 같다.
일반론: 실제 존재하는 것
컴퓨터 과학: 클래스에 정의된 내용대로 메모리에 생성된 것
객체 지향 언어들에서 정의한 것들은 아래와 같다.
Java: 클래스의 인스턴스 혹은 배열
Python: 속성값이나 행동을 가지고 있는 데이터
자바의 클래스는 인스턴스가 아니지만 파이썬의 클래스는 인스턴스이다.
객체의 역할과 관계를 정의하여 상호작용을 통한 프로그램을 구축하는 것
이렇게 정의할 수 있겠다.