[면접 질문] 객체 지향 프로그래밍이란?

TraceofLight·2023년 7월 12일
0

InterviewStudy

목록 보기
11/11
post-thumbnail

들어가며

어제 모 기업의 면접을 진행하면서 객체 지향 프로그래밍에 대한 답변을 해야 하는 상황이 있었는데 분명히 알고 있다고 생각하고 정리했던 적이 있었음에도 막상 답변을 하려고 하니까 어설프게 이야기 했던 일이 있었다.

덕분에 약한 부분을 짚어냈다고 생각하고 다시 정리하는 시간을 가져보기로 했다!

객체란?

일반적인 정의부터 살펴보면 아래와 같다.

일반론: 실제 존재하는 것
컴퓨터 과학: 클래스에 정의된 내용대로 메모리에 생성된 것

객체 지향 언어들에서 정의한 것들은 아래와 같다.

Java: 클래스의 인스턴스 혹은 배열
Python: 속성값이나 행동을 가지고 있는 데이터

자바의 클래스는 인스턴스가 아니지만 파이썬의 클래스는 인스턴스이다.

객체 지향 프로그래밍

객체의 역할과 관계를 정의하여 상호작용을 통한 프로그램을 구축하는 것

이렇게 정의할 수 있겠다.

객체 지향 언어의 특징

추상화

  • 객체 간의 공통적인 특징을 도출할 수 있음
  • 클래스 정의하는 부분이 이에 해당

다형성

  • 조금 다른 방식으로 작동하는 함수에 대해 동일하게 호출할 수 있음
  • 동일 명령에 대해 연결된 객체에 해석을 전가하는 방식
  • Override(내부소스 재정의), Overload(매개변수에 따라 같은 이름의 다른 함수를 호출)

캡슐화

  • 구현한 부분을 외부에 공개하지 않고 숨길 수 있음
  • 외부와의 소통이 필요한 경우 메소드를 통해 정보를 주고 받음

상속

  • 하나의 클래스가 가진 특징을 다른 클래스가 물려 받는 것
  • 이미 작성된 클래스에 더해 새로운 클래스를 생성할 수 있음
profile
24시간은 부족한 게 맞다

0개의 댓글