강의/python3

[python3] 8강. programming 방법론

jinkwon.kim 2022. 4. 29. 23:51
728x90
반응형

목표

    1. 절차적 programming의 개념을 알아 봅니다.

    2. 객체 지향 programming의 개념을 알아 봅니다.

강의

https://www.youtube.com/watch?v=r6tyNwP-F7U&ab_channel=%EA%B9%80%EC%A7%84%EA%B6%8C 

절차적 programming(Procedural Programming)이란?

1. 정의

    - 문제를 해결 하기 위한 하나의 큰 목표를 세부 목표로 분리해 나가면서 programming 하는 방식

      여기서 목표는 절차를 뜻합니다.

2. programming 방식

    - 절차(순서)가 중심인 progarmming 방식 입니다. 

    - programming에서 절차란 function을 의미 합니다.

3. 예제 

    1) 자판기 

        자판기 전원을 켠다 -> 자판기 상태 확인 -> 동전 입력 대기 -> 동전을 넣는다 -> 돈이 충분한지 확인 -> 메뉴 선택받기
        -> 입력받은 상품의 제고 확인 -> 재고가 있다면 상품을 인도 -> 자판기 전원 종료

4. 장점

    1) program이 절차적으로 수행되기 때문에 구조 파악이 쉽습니다. 

    2) 절차 대로만 개발하면 되기 때문에 개발 속도가 빠릅니다. 

5. 단점 

    1) program 수정이 어렵다.

        - 절차에 맞춰서 개발되기 때문에 program 수정이 쉽지 않습니다.

        - program 중간에 절차가 바뀌면 그 뒤의 모든 절차에 영향이 갈 수가 있습니다.

    2) 재  사용성이 떨어짐

        - 절차에 맞게 function이 구성되기 때문에 다양하게 활용이 어렵습니다.

    3) 변수와 function의 관계 파악 어려움.

        - 변수와 function이 상관관계에 대한 정의가 없기 때문에 program의 상세 구조 파악이 어렵다.

        - 절차적 programming에서는 변수를 어떻게 관리할지를 깊게 다루지 않기 때문에  발생한 문제입니다. 

    4) program이 커지면 사용하기 어렵다

        - program이 커지면 이를 구현하기 위한 절차(function)는 점점 많아집니다. 그런데 이렇게 절차가 많아지면
          어디까지가 무엇을 처리하기위한 것인지 구분 하기가 점점 어려워지고 절차 간의 연관성 찾는 것도 점점 어려워집니다.

객체 지향 programming이란?

1. 정의 

    - 문제를  좀 더 잘 해결을 위해 실제 세계를 모델링하여 programming 하는 방식

2. 등장 배경

    - 절차적 proamming 방식의 한계인 변수와 function 간의 연관성이 적다는 것을 해결하기 위해서 나온 방식입니다.

    - class를 사용하여 변수와 function을 한 곳에 모아서 관리합니다.

3. programming 방식

    - program을 객체(모듈)로 분리하여 개발하고 마지막에 합치는 방식 입니다.

4. 예제

    1) 자판기

        (1) 구성 요소

            - 상품 화면 

            - 선택 화면

            - 동전 투입구 

            - 상품 출구

        (2) 동작 flow

            자판기 전원을 켠다 -> 자판기 상태 확인 -> 동전 입려 대기 -> 동전을 넣는다 -> 돈이 충분한지 확인 -> 메뉴 선택
            -> 입력받은 상품의 제고 확인 -> 재고가 있다면 상품을 인도 -> 자판기 전원 종료

5. 장점 

    1) 유지 보수가 편함. 

        - program을 객체를 조합하는 방식으로 만들었기 때문에 문제가 발생한 부분을 찾기 쉽습니다.

    2) 확장성

        - 새로운 객체를 만들어서 기능을 추가할 수 있습니다.

          예)  지폐 투입구, 종이 나오는 곳

    3) 이식성 

        - 객체는 이미 하나의 분리된 기능이기 때문에 다른 program에서 가져다가 쓰기 편합니다.

 

6. 단점

    1) 설계가 복잡

        - 객체를 하나하나 다 설계를 해야 합니다.

        - 객체 간의 중복 기능도 고려하여 설계해야 합니다.

 

참조

 

절차적, 구조적, 객채 지향에 대한 완벽한 설명

 

[프로그래밍 패러다임]순차적(비구조적),절차적(구조적),객체지향적 프로그래밍

Tistory에서 제일 처음 쓰는 글이 이 글이다. 제일 처음 쓰는 글의 주제에 맞는지는 모르겠지만 이 포스팅에서는 코딩 패러다임에 대해서 짧게 이야기하려고한다. 코딩패러다임이 무엇인지 아는

kamang-it.tistory.com

객체 지향 programming의 필요성에 대한 설명

 

728x90
반응형