서론
- '객체지향 언어에 대해서 설명해보세요.' 라는 질문은 면접 단골 질문이다. 이전에 Node.js 직무로 면접을 봤을 때도 자바스크립트는 객체지향 언어가 아닌데도 항상 이 질문이 나왔다. 그 당시에는 객체지향 언어가 뭔지에 대해 달달 외워갔는데 지금 생각해보면 이해도 못하고 면접에 합격하기 위해 외웠고, 지금은 다 까먹었다. 그래서 이제는 까먹지 않기 위해 한번 정리해보려고 한다.
- 객체지향 언어란?
상태(state)와 행위(behave)로 이루어진 객체
라는 기본단위로 나누고, 이 객체들간의 상호작용
을 통해 프로그램을 설계하고 개발하는 것
- 객체지향 언어 특징
1) 캡슐화
- 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것
- 정보은닉
: 캡슐화에서 가장 중요한 개념으로, 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근하는 것
: ex) 캡슐약 안에는 여러 종류의 약이 섞여있지만, 사용자는 그 약이 어떤 것인지 다 알지 못하더라도 약을 먹으면 효과가 나타남
2) 추상화
- 여러 객체들의 공통적인 특징(속성과 기능)을 도출해 내는 것
- ex) 아이패드, 갤럭시탭 두 가지 객체가 있음.
두 객체의 공통점(디스플레이O, 스피커O, 카메라O)을 찾아내어 하나로 정의하는 것
3) 상속성
- 이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스가 물려받는 것
- ex) 동물(호흡+걸어다님) -> 포유류(호흡+걸어다님+새끼에게 젖을 먹여 영양분 공급)
4) 다형성
- 하나의 변수 또는 함수가 상황(메시지)에 따라 다른 의미로 응답하는 것
- ex) 동물 소리를 내는 클래스가 있다면, 고양이를 입력했을 때 결과값은 '야옹', 닭을 입력했을 때 결과값은 '꼬꼬댁'으로 출력됨
- 객체지향 언어의 장.단점
- 장점: 재사용 용이, 생산성 향상, 자연적인 모델링, 유지보수의 용이성
- 단점: 실행속도 느림, 프로그램 용량 큼, 설계에 많은 시간 소요