절자치향 프로그래밍과 객체지향 프로그래밍
절자치향 프로그래밍
- 프로그램 순서와 흐름을 먼저 세우고, 필요한 자료구조와 함수를 설계하는 방식
객체지향 프로그래밍
- 자료 구조를 중심으로 한 모듈을 먼저 개발을 한뒤 이들의 실행 순서를 흐름 짜는 방식.
- 객체지향 3대 특성
- 캡슐화
- 내부의 데이터 (attribute)를 감추고, 메서드를 통해 상호작용
- 상속
- 이미 작성된 클래스를 이어 받아 클래스를 생성하는 기법
- 기존 코드를 재활용하여 사용한다.
- 다형성
- 하나의 이름(방법)으로 여러가지 상황에 대처하는 기법
- 인터페이스는 동일하지만 실제 작동이 다르게 구현하는 방법.
그외 궁금점
- 객체지향도 실행순서가 있는데 절차지향과의 차이는 점은?
- 절자지향은 순서에 집중이 되어있다보니 문제의 표현 대상(해결하는 대상)이 정확하게 표현이 되어 있지 않다.
- 객체지향은 표현 대상(해결하는 대상)에 표현을 하고, 이를 순서에 따라 실행하는 것이다.
- 객체지향이 무조건 절자치향보다 좋은 것인가?
- 객체지향으로 짜여진 코드는 읽기는 쉬우나 그만큼 컴퓨터의 자원을 사용해야 된다. 따라서 임베디드 같은 컴퓨터 자원이 극소를 제한이 된 환경에서는 객체지향보다는 절차지향적으로 프로그래밍을 한다. (물론 객체지향 언어 java 등도 많이 활용 된다)
Example
자판기를 만들어보자
절차지향 방식의 프로그래밍
순서를 먼저 정의를 한다.
- 사용자가 동전을 넣으면 인식이 된다.
- 사용자가 음료수를 클릭을 한다.
- 재고가 있으면 해당하는 음료수의 모터가 작동되어 음료수가 나온다.
객체지향의 방식의 프로그래밍
먼저 모듈을 정의를 한다.
- 돈을 기능을 하는 MoneyService
- 음료수를 내보내는 MotoControlService
- 음료수의 재고를 관리하는 DrinkStockService
'Programing' 카테고리의 다른 글
Deadlock (0) | 2018.12.21 |
---|---|
Change Data Capture (0) | 2018.12.16 |
Nexus Repository (0) | 2018.12.09 |
Blocking, NonBlocking, Synchronous, Asynchronous (0) | 2018.12.07 |
Thread와 Process (0) | 2018.11.29 |