ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [IT] 객체지향 프로그래밍이란?
    Computer Science 2019. 4. 25. 01:40

    요즘 IT업계에서 공부를 하거나 일하고 있는 사람들이라면 많이 들어봤을 단어.

    객체지향 프로그래밍, 객체지향 소프트웨어 공학, 객체지향 블라블라~~

     

    내가 배우고있는 자바스크립트라는 언어도

    객체지향적인 언어라고 할만한 요소들이 있고

    우리가 프로그래밍을 할 때도 객체지향 기법으로 해야한다고 하는데

    그래서 대체 이 객체지향 프로그래밍이라는 것이 무엇일까?

     

    뭔가 단어만 들으면 감이 안오고 생소한 객체지향이란 말은 사실 별게 아니다.

     

    객체지향 기법이란 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어,

    기계적인 부품을 조립하여 제품을 만들 듯이

    소프트웨어를 개발할 때에도 객체들을 조립해서 작성할 수 있도록 하는 기법이다.

     

    말은 댑따 어렵지만 개념을 쉽게 설명해보면 그렇게 어려운 것이 아니다.

     


     

    그러니까 개체란 우리 주변에 있는 모든 물체, 물건, 개념, 등등 모든 것을 가리킨다.

    사람이 될 수도 있고, 노트북, 컵, 고양이, 등등. 

    이 모든 것이 개체이다.

     

    개체와 속성, 관계를 표현한 그림

     

    우리는 수십, 수백가지의 부품들을 만들어 조립해서 노트북 한 대를 완성한다.

    그리고 노트북을 실행하면 그 수많은 부품들이 각각의 기능을 실행하며 유기적으로 작동하여 동작한다.

     

    즉, 이 노트북처럼 어떤 특정한 기능을 하는 소프트웨어를 만들어낼 때도

    객체(Object) 단위로 만들어 조립해서 하나의 소프트웨어를 완성시키는 것이 바로 객체지향 프로그래밍이다.

     

    이 객체지향 기법이 생겨나기 전에는 구조적 기법으로 프로그래밍을 했다.

    구조적 기법이란 프로시저에 근간을 두고 하나의 커다란 작업을 여러 개의 작은 작업으로 분할하고,

    분할된 각각의 소작업을 수행하는 모듈을 작성하여, 이것을 하나의 완벽한 프로그램으로 작성하는 기법이다...라고 책에 써있다.ㅋㅋㅋ

     

    이게 대체 무슨 말이냐 하면...

     

     

    예를 들어서 자판기의 매커니즘을 프로그래밍으로 만든다고 해보자.

    종래의 구조적 기법 프로그래밍으로 자판기 프로그래밍을 짠다면 이런 느낌일 것이다.

     

    구조적 프로그래밍

     

     

    자판기에 사용자가 700원을 투입하면, 돈을 받아서 음료를 찾아서 화면에 출력하겠지...

    그리고 사용자가 그 중에서 사이다를 선택한다면 사이다를 출력하고 거스름돈을 계산해서 출력하겠지...

    이러한 논리적 흐름대로 프로그램을 만드는 것이다.

     

    그럼 이 자판기 프로그램을 객체지향 방식으로 짜면 어떤 모습일까?

     

    객체지향 프로그래밍

    위의 그림을 보면 자판기라는 프로그램 안에 작은 단위의 메소드들이 있고,

    데이터를 주고받으며 서로 유기적으로 연결되어 있다. 

     

    즉, "돈을 받아서 음료를 찾고-" 이런 논리적인 흐름대로 프로그램을 만드는 것이 아니고,

    [돈을 받는 메소드] / [음료를 찾는 메소드] / [거스름돈을 계산하는 메소드] / [출력하는 메소드]

    이렇게 각각 따로 따로 개발을 해서 나중에 하나로 조립하는 방식으로 프로그램을 만드는 것이다.

     

    그러니까 저 작게 쪼개진 덩어리들을 우리는 객체라고 하고

    저 객체들을 조립하여 하나의 프로그램을 완성하는 것을 객체지향 프로그래밍이라고 한다.

     

    이런 방식의 장점은 나중에 유지보수를 하기 좀 더 쉽다는 데 있다.

    우리가 프로그램을 만들 때, 유지보수적인 측면에서 깊이 고려를 해야하는데

    그 이유는 유지보수에 가장 비용이 많이 들기 때문이다.

    그래서 우리는 추후에 누가 오더라도 알아보기 최대한 편하게 프로그래밍을 해야하는데,

    구조적 기법으로 짠 첫 번째 자판기 프로그래밍은 

    논리적인 흐름으로 프로그램이 나열되어 있기 때문에 

    중간에 특정 부분을 고치면 결과값이 달라지거나 오류가 발생하기 쉽다.

     

    반면에 아래의 객체지향 기법을 사용한 자판기 프로그램은

    각각 덩어리가 따로 나눠져있고 어떤 데이터가 어디에서 어디로 연결되는지 파악하기

    좀 더 쉽기 때문에 프로그램을 고치기가 좀 더 용이하다.

     

    게다가 아래의 방법은 각각의 기능별로 나눠서 개발하고 나중에 조립하는 방식이기 때문에

    여러 사람이 함께 협동하여 빠르게 개발할 수 있다.

     

    이제 이런 개념을 가지고 아래 용어들을 읽어보면 좀 더 이해가 쉬울 것이다.

     

     


     

    객체지향 기법의 구성 요소

     

    • 객체(Object): 데이터와 데이터를 처리하는 함수를 묶어놓은(캡슐화) 하나의 소프트웨어 모듈.
      1. 데이터(Data): 객체가 가지고 있는 정보, 속성.
      2. 함수(Method): 객체가 수행하는 기능. 객체가 갖는 데이터를 처리하는 알고리즘.
    • 클래스(Class): 공통된 속성과 연산(행위)를 갖는 객체의 집합. 각각의 개체들이 갖는 속성과 연산을 정의하고 있는 틀.
      1. 인스턴스(Instance): 클래스에 속한 각각의 객체.
      2. 인스턴스화(Instantiation): 클래스로부터 새로운 객체를 생성하는 것
    • 메시지(Message): 객체들 간에 상호작용을 하는 데 사용되는 수단. 객체에게 어떤 행위를 하도록 지시하는 명령 또는 요구 사항.
    반응형

    COMMENT