console.log("연록")

[기술면접] 7. 객체지향 본문

etc.

[기술면접] 7. 객체지향

연 록 2022. 4. 10. 10:10
728x90

공부 한 지 꽤 됐는데도 아직 생소하고 어려운 객체...

 

왜 이렇게 어려운 지 생각해보면 아무래도 '객체'라는 단어가 아예 처음 접하는 단어도 아닌데 또 그렇다고 많이 쓰이는 단어라 그 의미를 정확히 알기 어렵기 때문 아닐까 싶음

 

아직도 어려움 또르륵

 


1. 절차 지향(Procedural Programming)

 

- 절차지향 프로그래밍이란 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법

 

 

2. 객체(Object)

 

- 세상에 존재하는 모든 것 (즉, 주변에 있는 사물이나 생명체 같은 모든 것들을 말함)
- 프로그래밍에서의 객체는 데이터의 분산을 막기 위해 데이터와 기능을 하나로 묶은 그룹

- ex) 컴퓨터(PC)
->컴퓨터(PC) = 데이터(본체, 모니터, 키보드, 마우스, 스피커.......등등) + 기능(화면제공, 소리, 입력, 출력.......등등)

 

 

3. 객체 지향 언어(Object-oriented Language)

 

- 객체를 만들고 객체를 사용하는 프로그래밍 방법
-> 다시 말해서 프로그램을 그저 데이터와 처리방법으로 나누는게 아니고, 프로그램을 다수의 "객체"로 만들고, 이들이 서로 상호작용을 통해 만들어지는 방식
- ex) 컴퓨터(PC)

-> 컴퓨터 한대를 완성하려면 CPU, RAM, BOARD, SSD, HDD, VGA, POWER, CASE 등 여러가지 부품이 있어야 함
-> 부품 하나하나가 연결이되고 조립이 되어야 컴퓨터의 기능이 제대로 작동되고 사용할 수 있음
-> 컴퓨터 부품(주변기기) = 객체
-> 고장이 나더라도 해당 부품만 수리 및 교체를 하면 간단하게 해결할 수 있음 (유지보수도 쉽고 편함)
- 즉, 명령어들로 이루어진 목록이 아닌 하나하나의 독립된 "객체"들의 그룹이고 객체간의 메시지를 주고 받음으로서 쉽게 연결이 가능

 

 

4. 객체 지향 언어의 특징

 

1) 캡슐화(Encapsulation)
- 데이터와 코드의 형태를 외부로부터 알 수없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐형태로 만드는 방법

 

2) 다형성(Polymorphism)
- 상속과 연관이 있는 개념으로 한 객체가 다른 여러형태(객체)로 재구성 되는 것 (같은 부모의 밑에서 태어난 자식(쌍둥이포함)이 똑같지 않은 것과 같음)

- 오버로딩(Overloading)과 오버라이딩(Overriding)이 다형성의 예시

3) 추상화(Abstraction)
- 추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는 것.
- 실제로 존재하는 객체들을 프로그램으로 만들기 위한 공통적인 특성을 파악해서 필요없는 특성을 제거하는 과정

 

 

5. 객체 지향 언어의 장점

 

1) 재사용성
상속을 통해 프로그래밍시 코드의 재사용을 높일 수 있음


2) 생산성 향상
잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상시킬 수 있음
 
3) 자연적인 모델링
우리 일상생활의 모습의 구조가 객체에 자연스럽게 녹아들어 있기 때문에 생각하고 있는 것을 그대로 자연스럽게 구현할 수 있음

4) 유지보수의 우수성
프로그램 수정시 추가, 수정을 하더라도 캡슐화를 통해 주변 영향이 적기때문에 유지보수가 쉬워서 매우 경제적

 

 

 

* 절차 지향 언어와 객체 지향 언어 비교