본문 바로가기
IT/이슈 및 정보

객체지향, 아는 개념도 정리 안하면 당황합니다!

by ghostzoominn 2020. 8. 26.

면접관 : 객체지향 언어의 특징에 대해 설명 해 보세요

면접장에서 갑자기 이러한 질문이 나온다면, 여러분은 짧은 시간에 정확히 객체지향에 대한 설명을 할 수 있으신가요?

 

객체지향, 컴퓨터 언어를 조금 공부해 본 분이라면 많이 들어보셨을 단어이고, 머릿속으로는 충분히 이해하고 알고 있는 개념일 수 있습니다.

 

하지만 아는 개념도, 면접전에 한 번 머릿속으로 정리하고 들어가셔야 면접에서 당황하지 않습니다.

 

긴장되고 짧은 면접시간동안 정확하게 말로써 표현할 수 있도록 알고있는 것도 다시 한 번 정리할 수 있도록 합시다.

객체지향, 면접전에 정리하자

객체지향, 정의부터 알아보자

객체지향 프로그래밍(Object-Oriented Programming)이란 프로그램을 설계하는 개념이자 방법론을 의미합니다.

 

여기서 나오는 객체라는 단어가 현실에서는 잘 쓰이지 않는 단어라 의미가 안 와닿을 수 있습니다.

 

이해하기 쉽게 예시로 설명하자면, 주변에 존재하는 모든 사물(자돟차, 건물, 옷 등), 생명체(사람, 고양이 등) 하나하나가 다 객체라고 할 수 있습니다.

 

따라서 객체지향 프로그래밍이란 단어 뜻 그대로, 프로그램을 상태(state)와 행위(behave)로 이루어진 객체라는 기본단위로 나누고, 이 객체들간의 상호작용을 통해 프로그램을 설계하고 개발하는 것 입니다.

 

가장 중요한 객체지향 언어의 특징 4가지

객체지향의 정의 다음으로 가장 많이 나오는 질문과 설명이 객체지향의 특징에 대한 내용입니다.

 

아래에 5가지 특징은 객체지향이라는 단어를 이해하고 설명하는데도 도움이 되는 내용이니 정리하여 숙지하도록 합시다.

 

1) 캡슐화(Encapsulation)

 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것.

여기서 '클래스'라는 개념은 객체를 만드는 틀(붕어빵 틀), '객체'라는 개념은 틀을 통해 만들어진 실체(붕어빵)를 의미합니다.

 

 1-1) 정보은닉(Information Hiding)

  캡슐화에서 가장 중요한 개념으로, 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것.

예시) 캡슐약안에는 여러 종류의 약이 섞여있지만, 사용자는 그 약이 어떤것인지 하나하나 알지 못하더라도 약을 먹으면 효과가 나타나게됩니다.

 

2) 추상화

 여러 객체들의 공통적인 특징(속성과 기능)을 도출해 내는 것.

예시) 아이패드와 갤럭시탭 두가지의 객체가 있다고 하면, 두 객체의 공통점(디스플레이가 있다, 스피커가있다, 카메라가 있다 전원을 켤 수있다 등)을 찾아내여 하나로 정의하는 것. 

 

3) 상속성

 이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스가 물려받는 것.

예시) 동물(호흡함 + 걸어다님) -> 포유류(호흡함 + 걸어다님 + 새끼에게 젖을 먹여 영양분을 공급함)

 

4) 다형성

 하나의 변수 또는 함수가 상황(메세지)에 따라 다른 의미로 응답하는 것.

예시) 동물소리를 내는 클래스가 있다면, 고양이를 입력 했을때 결과 값은 '야옹', 닭을 입력했을 때 결과값은 '꼬꼬댁' 으로 출력됨.

 

객체지향 언어의 장·단

앞선 글에서는 객체지향의 개념과 특징을 알아보았다면, 지금부터는 객체지향 언어의 장·단점에 대해 알아보도록 하겠습니다.

 

장점

 1) 재사용이 용이

 - 상속을 통해 프로그래밍시, 코드의 재사용률을 높일 수 있음.

 

 2) 생산성 향상

 - 잘 설계된 클래스를 통해 독립적인 객체를 활용함으로써, 개발의 생산성을 향상시킬 수 있음.

 

 3) 자연적인 모델링

 - 일상생활에서 쓰는 개념을 그대로 객체라는 구조로 표현하여 개발함으로써, 생각한것을 그대로 구현 가능.

 

 4) 유지보수의 용이성

 - 프로그램 수정, 추가시 캡슐화를 통해 주변 코드에 영향이 적기때문에 유지보수가 용이함.

 

단점

 1) 실행속도가 느림.

 - 절차지향언어(C언어 등)은 컴퓨터의 처리구조와 비슷해 실행속도가 빠른 반면, 객체지향언어(C++, JAVA 등)은 상대적으로 실행속도가 느립니다.

 

 2) 프로그램 용량이 큼

 - 객체단위로 프로그램을 많이 만들다보면, 불필요한 정보들이 같이 삽입될 수 있고, 이는 프로그램의 용량 증가로 이어질 수 있습니다.

 

 3) 설계에 많은시간 소요

 - 클래스별로, 객체별로 설계하고, 상속 등의 구조 또한 설계하여야하기 때문에, 절차지향언어에 비해 설계에 드는 시간이 많습니다.

 

면접전에 이것만은 알고 가자!

 1) 객체지향언어는 태(state)와 행위(behave)로 이루어진 객체라는 기본단위로 나누고, 이 객체들간의 상호작용을 통해 프로그램을 설계하고 개발하는 것.

 

2) 객체지향은 캡슐화, 추상화, 상속성, 다형성 4가지 특징을 가지고 있음.

 

3) 객체지향 프로그래밍은 재사용이 용이하고, 생산성이 높으며, 유지보수가 용이한 장점이 있는 반면, 설계에 시간이 오래걸리고, 실행속도가 느린 단점이 있음.

 

실제 면접 기출 질문(2019년 상반기 건강보험심사평가원)

Q. 객체지향 언어에 대해 설명 해 보세요.

Q-1. 객체지향 언어의 장단점에 대해 설명 해 보세요.

 

 

※ 또 다른 면접 기출 질문도 있으니, 아래를 참고 해 주세요!

2020/09/15 - [IT이슈 및 정보] - [심평원 면접] 빅데이터 관점의 비식별 조치에 대하여

 

[심평원 면접] 빅데이터 관점의 비식별 조치에 대하여

「 데이터3법 · 빅데이터 · 비식별 조치 모든건 연계되어 있습니다 」 최근 데이터 3법이 통과됨에 따라 규제로 묶여있던 관련 사업들이 더욱 활성화될 것으로 기대되고 있습니다. (아래는 데

universitytomorrow.com

 

댓글