일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Visual Studio Code
- 절차지향
- Angular.js
- jquery
- 생성자
- jre
- 변수
- 네이밍 컨벤션
- V8 자바 스크립트 엔진
- 생성자 네이밍
- jdk
- 기술면접
- DDL
- VS Code
- DCL
- JPQL
- javascript
- 깃허브
- json
- GitHub
- 무결성
- 앵귤러
- angular
- 자바스크립트
- DML
- js
- 기본키
- node.js
- 트랜잭션
- 외래키
- Today
- Total
console.log("연록")
[기술면접] 7. 객체지향 본문
공부 한 지 꽤 됐는데도 아직 생소하고 어려운 객체...
왜 이렇게 어려운 지 생각해보면 아무래도 '객체'라는 단어가 아예 처음 접하는 단어도 아닌데 또 그렇다고 많이 쓰이는 단어라 그 의미를 정확히 알기 어렵기 때문 아닐까 싶음
아직도 어려움 또르륵
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) 유지보수의 우수성
프로그램 수정시 추가, 수정을 하더라도 캡슐화를 통해 주변 영향이 적기때문에 유지보수가 쉬워서 매우 경제적
* 절차 지향 언어와 객체 지향 언어 비교
'etc.' 카테고리의 다른 글
[기술면접] 9. 자바 파일(.java), 클래스 파일(.class) (0) | 2022.04.12 |
---|---|
[기술면접] 8. 자바(JAVA) (0) | 2022.04.11 |
[기술면접] 5. 정규화(Normalization) (0) | 2022.04.07 |
[기술면접] 4. 트랜잭션(Transaction)과 TCL (0) | 2022.04.06 |
[기술면접] 3. 데이터베이스 언어(DDL, DML, DCL) (0) | 2022.04.05 |