Programing

절자치향 프로그래밍과 객체지향 프로그래밍

BUST 2018. 12. 13. 21:33

절자치향 프로그래밍과 객체지향 프로그래밍

절자치향 프로그래밍

  • 프로그램 순서와 흐름을 먼저 세우고, 필요한 자료구조와 함수를 설계하는 방식

객체지향 프로그래밍

  • 자료 구조를 중심으로 한 모듈을 먼저 개발을 한뒤 이들의 실행 순서를 흐름 짜는 방식.
  • 객체지향 3대 특성
    • 캡슐화
      • 내부의 데이터 (attribute)를 감추고, 메서드를 통해 상호작용
    • 상속
      • 이미 작성된 클래스를 이어 받아 클래스를 생성하는 기법
      • 기존 코드를 재활용하여 사용한다.
    • 다형성
      • 하나의 이름(방법)으로 여러가지 상황에 대처하는 기법
      • 인터페이스는 동일하지만 실제 작동이 다르게 구현하는 방법.

그외 궁금점

  • 객체지향도 실행순서가 있는데 절차지향과의 차이는 점은?
    • 절자지향은 순서에 집중이 되어있다보니 문제의 표현 대상(해결하는 대상)이 정확하게 표현이 되어 있지 않다.
    • 객체지향은 표현 대상(해결하는 대상)에 표현을 하고, 이를 순서에 따라 실행하는 것이다.
  • 객체지향이 무조건 절자치향보다 좋은 것인가?
    • 객체지향으로 짜여진 코드는 읽기는 쉬우나 그만큼 컴퓨터의 자원을 사용해야 된다. 따라서 임베디드 같은 컴퓨터 자원이 극소를 제한이 된 환경에서는 객체지향보다는 절차지향적으로 프로그래밍을 한다. (물론 객체지향 언어 java 등도 많이 활용 된다)

Example

자판기를 만들어보자

절차지향 방식의 프로그래밍

순서를 먼저 정의를 한다.
  1. 사용자가 동전을 넣으면 인식이 된다.
  2. 사용자가 음료수를 클릭을 한다.
  3. 재고가 있으면 해당하는 음료수의 모터가 작동되어 음료수가 나온다.

객체지향의 방식의 프로그래밍

먼저 모듈을 정의를 한다.
  • 돈을 기능을 하는  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