Home 파이썬과 객체지향, 그리고 절차지향의 이해 (1)
Post
Cancel

파이썬과 객체지향, 그리고 절차지향의 이해 (1)


음.. 필자와 같은 비전공자 출신이 처음 프로그래밍을 접했을 때 당황하는 모먼트가 분명 몇가지 있으리라 생각한다.

혹자가 “가장 이해 하기 힘든 개념이 무엇이었나요?”라고 묻는다면, 지금 글을 쓰고 있는 시점의 나는 주저없이 class에 관해 얘기를 하지 않을까 싶다. 머릿속으로 이해를 해도 쉽게 생각한 부분이 이미지로 형상화가 잘되지않으며, class 안에 있는 속성 (instance)행위 (method)는 코딩을 할때마다 다시금 “이해를 하고 지금 코딩을 하는것인가?”라고 생각하게 만드는 기능이다.

간략하게 내가 이해한 절차적 프로그래밍(aka 구조적 프로그래밍, 함수지향적 프로그래밍)를 언급, 비교하면서 이번 포스팅을 작성하고자 한다.

절차적 프로그래밍

  • 대표적인 언어: c

    해결해야하는 문제를 기능 단위로 세분화

    하나의 기능을 다시 세부기능으로 나누고 또 나눈다. 그러다보면 더이상 나눌 수 없는 단위기능이 도출이 되는데 이를 함수(function) 형태로 구현한다. 누군가는 top-down 방식이라고 부르며, 또 혹자는 divide and conquer라고 일컫는 것을 봐왔다.

  • 대표적인 장점:

    1. 프로그램의 분과 설계가 쉽다 –> 코드로 작성하고 프로그램을 완성
    2. 프로그램의 구현시간이 짧다 –> 비용의 절감
  • 상대적인 단점:

    1. 프로그램 수정이 쉽지 않음, 기존 코드의 재활용성이 떨어짐 => 유지보수성이 떨어진다.

      1990년 들어오면서 인터넷 보급이 급속도로 빨라졌고, 사람들이 웹 인터페이스를 접하면서 요구사항이 많아지기 시작.

      프로그램 수정 요청이 많아지고 –> 개발비용보다 유지보수 비용이 급격하게 증가

      이때부터 설계는 어렵지만 유지 보수성이 훨씬 뛰어난 객체지향 방식에 대한 프로그래밍 수요에 붐이 일어난다.

    2. 이건 대표적으로 c 에 해당되며 장점이자 단점이다. 메모리의 직접적인 주소를 가져오고 제어할 수 있는데, 그래서 하드웨어 조작에 적합한 점을 갖고 있다. 그렇지만 반대로, 메모리 주소를 직접 가져오기때문에 상대적으로 다른 언어에 비해 보안성이 좋지 못하다.

이제 객체 지향 방식을 얘기해보자.

객체지향 프로그래밍

  • 대표적인 언어: Java, C++, C#

    객체 방식으로 프로그램을 분석, 설계, 구현한다.

  • 대표적인 장점: 프로그램의 유지보수성은 굉장히 뛰어나다. (객체를 사용하면 함수끼리 얽혀있는게 적기 때문)

  • 상대적인 단점: 상대적으로 프로그램을 설계하고 구현하는게 힘들다.

음.. 객체지향은 내가 해결해야 하는 현실세계의 문제를 그대로 프로그램으로 표현한다고 생각하면 도움이 되는거 같다.

프로그램을 기능으로 세분화 하지 않고, 프로그램을 구성하는 주체를 파악하고 이 주체들간의 DATA의 흐름에 초점을 둔다.

  • 우리가 현실세계에서 문제를 구성하고 있는 구성요소 => 개체 (object)
  • 프로그램적으로 문제를 구성하고 있는 구성요소 => 객체 (object)

그렇다면 어떻게 프로그램적으로 표현하느냐? class 를 사용.

class는 현실세계의 객체를 프로그래밍으로 모델링하는 수단이다.

객체지향 프로그래밍의 예시

은행 프로그램을 예로 들어보자.

  • 은행을 구성하고 있는 구성요소를 먼저 찾아본다.

    고객, 계좌, 은행 건물, 행원, 단말기, 테이블, 기타 등등…

    만약 프로그램을 할 때 테이블이 필요 없다? 그러면 날리면 됨.

    이렇게 필요한 구성요소를 파악한다.

    너무나 당연하게도 의문이 하나 들텐데 “사람마다 구성요소를 바라보는 시점, 판단 등과 같은 것들은 다 다르지 않을까?” 100% 동의한다. 그렇기때문에 객체지향 프로그래밍의 설계가 상대적으로 훨씬 어렵다고 평가를 받는다.

    하지만 그렇기 때문에 제대로 만들어 놓은다면, 현실 세계의 은행을 그대로 프로그래밍 적으로 묘사가 가능하다. 또한 파생적인 효과를 누릴수 있는 것중 하나가 모델링이 완벽하면 유지보수가 쉽다!!

    어떻게? 현실 세계에서 어떤 요소가 바뀌면, 프로그래밍에서 속성(instance)을 바꿔주면 됨. 함수로만 구현한게 아니니깐, 요소만 바꾸면 됨.

다음 시간엔 이런 이론을 기반으로 class 를 이용하여 객체를 만들어보도록 하자.

This post is licensed under CC BY 4.0 by the author.

git error 403 해결 방법

python NumPy 기초 (1)

Comments powered by Disqus.