ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JavaScript] 객체 지향 프로그래밍 (OOP)
    카테고리 없음 2020. 2. 6. 21:24

    대표적인 프로그래밍 방법론으로 절차적 프로그래밍(Procedural Programming)이 있다. 순차적인 처리가 중요시되며, 프로그램 전체가 유기적으로 연결되어 있다. 컴퓨터의 처리구조와 유사해 빠른 실행이 장점이다.

    예를 들어
    점심으로 볶음밥을 만들기로 했다. 팬을 달구고, 계란, 야채 등 재료른 준비해 넣고, 밥을 넣어 볶는다. 이 모든 과정이 순차적으로 이루져야 할 것이다. 해야 할 행동을 코드로 나타내면 다음과 같다. 

    console.log('팬을 달굽니다')
    console.log('재료를 넣습니다')
    console.log('재료를 다같이 볶아줍니다')
    

     

    세 줄의 코드로 요리가 가능해진다. 그런데, 오늘 점심 뿐만 아니라 오늘 저녁도 볶음밥을 먹게 된다면 어떻게 될까?

    //점심 볶음밥 만들기
    console.log('팬을 달굽니다')
    console.log('재료를 넣습니다')
    console.log('재료를 다같이 볶아줍니다')
    
    
    //저녁 볶음밥 만들기
    console.log('팬을 달굽니다')
    console.log('재료를 넣습니다')
    console.log('재료를 다같이 볶아줍니다')
    

     

    코드가 여섯 줄로 늘어났다. 그런데 볶음밥에 된장국도 같이 먹어야 한다면? 혹은 볶음밥 레시피가 바뀐다면? 코드를 매번 하나하나 쓸 수는 없는 노릇이다. 이처럼 절차적 프로그래밍에는 실행 순서가 정해져있어 코드가 바뀌면 프로그램 전체에 영향을 줄 수 있기 때문에 유지보수 및 협업이 어렵다는 단점이 있다. 



    객체지향 프로그래밍(Object Oriented Programming)은 절차적 프로그래밍의 단점을 보완해준다. OOP는 순차처리 방식이 아니라, 먼저 기능 모듈을 만든 다음 이를 조립하여 사용하는 방식이다. 모듈을 반복적으로 재사용할 수 있기 때문에 효율성이 높다. 모듈 방식이기 때문에 협업도 용이하다..

    위 사례의 경우, 효율성을 위해 명령들을 아래와 같이 한 덩어리로 묶어줄 수 있다. 

    // 식사 : 볶음밥 + 된장국
    var meal = {
    	friedRice : function(){
                      console.log('팬을 달굽니다')
                      console.log('재료를 넣습니다')
                      console.log('재료를 다같이 볶아줍니다')
                        },
    
    	soup : function(){
                      console.log('물을 끓입니다')
                      console.log('재료를 넣습니다')
                      console.log('재료를 다같이 끓여줍니다')
                  }
    }
    
    meal.friedRice();
    meal.soup();

     

    위와 같이 코드를 사용하면 메소드를 사용해 쉽게 반복적으로 조리(명령 실행)가 가능하며, 레시피 변경(코드 수정)도 용이하다.

    객체 안에 함수를 넣어 쓰고 싶을 때만 불러 실행시킬 수 있도록 했다. 마치 모듈처럼 만들어 내가 필요할 때 꺼내 쓰는 것이다. 매번 하나하나 명령을 입력하지 않고 메소드를 실행시키면 되니 훨씬 간편해졌다. 이와 같이 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들어 개발 및 보수, 그리고 협업을 용이하게 한다.

    댓글