본문 바로가기
javascript

[프로그래밍기초] 절차지향 객체지향 프로그래밍

by jinbro 2017. 5. 6.
[프로그래밍이란 무엇인가]
- 컴퓨터의 하드웨어를 제어하거나 하드웨어를 활용해 연산하기위해 명령을 내리는 것
- C, C++, Java, Ruby, Python 등 프로그래밍에 사용되는 언어를 프로그래밍 언어라 함


[절차지향 프로그래밍이란 무엇인가]
- 절차에 맞춰 순서대로 나열하는 프로그래밍 기법을 말함

- 예를 들면 아래와 같음 : 음료수 자판기 프로그래밍(음료수 자판기만)
1) 동전을 넣는다
2) 음료 버튼 응답을 받고, 넣은 동전과 가격을 비교해봄(초과, 동일, 미만)
3) 동일할 경우 음료수 배출(동일한 경우만 나타냄)

- 단일 종류만 필요한 경우, 복잡한 절차가 필요한 경우가 아니면 절차지향 프로그래밍 언어를 통해 프로그래밍
- 절차가 길어지고 복잡해지면 코드를 한 눈에 알아보기가 힘듬
- 일부분을 고치려고 하다가 전체 절차를 고칠 수 있음(디버깅하기가...)
- 그럼에도 불구하고 어플리케이션의 사이즈가 크지않다면 절차지향 프로그래밍 방식에 머물러 사용
- 대표적 절차지향 프로그래밍 언어 : C


[객체지향 프로그래밍이란 무엇인가]
- 대상을 분류(특징, 하는 일 공통 중심으로, 자바의 클래스, 자바스크립트의 함수 프로토타입 객체)한 후 설계도를 만들고 각자 맞는 객체로 만들고 사용
- 전체 어플리케이션에 필요한 것들을 나열해두고, 공통되는 것들끼리 묶어 코드를 재사용할 수 있도록 하나의 설계도를 만든 후 사용하는 방식
- 프로그램의 절차(이벤트 처리에 있어서 절차)가 없어지는 것은 아님
- 절차지향 프로그래밍과 다른점은 대상을 추상화(분류화)시켜 설계도를 만들고, 설계도를 토대로 각자에 맞게  객체를 만듬(같은 프로퍼티지만 다른 값)

- 예를 들면 아래와 같음
1) 자판기가 있고, 자판기를 이용하는 사람이 있음
2) 자판기의 종류에는 음료수 자판기, 커피 자판기, 팝콘 자판기가 있음
3) 자판기를 이용하는 사람에는 여자 초등학생, 할머니, 남자 고등학생이 있음
4) 자판기, 자판기를 이용하는 사람 공통 프로퍼티, 메서드를 바탕으로 설계도를 만든 후(모듈화) 설계도를 바탕으로 객체를 만듬
- 공통 프로퍼티 : 예를 들면 자판기명, 자판기 위치, 사람 나이, 직업 등
- 공통 메서드 : 예를 들면 상품을 뽑다, 꺼내다, 동전을 넣다 등

5) 모듈화 결과물(설계도)을 가지고 어플리케이션의 흐름을 구성함

- 객체지향 프로그래밍의 핵심에는 상속, 데이터 캡슐화(깔끔한 코드), 다형성이 있음
- 대표적 객체지향 프로그래밍 언어 : Java


[절차지향과 객체지향]
- 절차지향과 객체지향은 완전 분리되어 완전 상반되는 개념이 아님
- 객체지향은 모듈화시키는 것이 핵심이지만 결국 실행흐름을 짬
- 실행에만 초점을 맞춘다면 절차지향, 모듈화시키고 모듈에 따라 다양한 객체를 만들고 실행 흐름을 짠다면 객체지향프로그래밍


[참고자료]
1) 한빛아카데미 도서, 컴퓨터 사이언스
2) 위시캣 블로그, 객체지향 절차지향 : https://goo.gl/pXSvLG
3) 절차지향 객체지향 구글링 결과



댓글