ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 객체지향이란?
    Study/객체지향 프로그래밍 2020. 4. 27. 12:19

    객체지향 프로그램은 추상화라는 개념을 이용한다. 추상화는 자세한 사항을 다루는 것에서 해방시켜주는 개념으로, 자세한 묘사를 생략하고 특징만 포착해서 그리는 것이라고 할 수 있다. 객체지향 프로그램은 프로시저 추상화와 데이터 추상화를 묶어 놓은 것이다.

     

    프로시저 추상화

    프로시저 추상화란 특정 프로시저를 사용할 때 프로시저 안에서 어떤 계산이 이루어지는지 자세히 모르더라도 어떻게 호출하고 무엇을 수행하는지만 알고 있으면 자세한 것은 걱정할 필요가 없는 것을 의미한다. 

     

    데이터 추상화

    데이터 추상화란 데이터 자체만 정의하는 것이 아니라 데이터에 대한 조작, 즉 오퍼레이션도 함께 정의하는 개념이다. 데이터 추상화를 적용한 시스템은 서비스를 제공하는 객체들의 집합으로 볼 수 있다. 데이터 추상화는 시스템의 복잡성을 줄이는 데 도음이 된다.

     

    프로시저 추상화 관점

    절차지향 패러다임에서 프로그램은 프로시저의 집합으로 구성된다. 메인 프로시저가 다른 프로시저를 호출하고 이것들이 계속 다른 프로시저를 호출하는 것이다. 절차지향 프로그맹은 단순한 데이터를 계산하는 목적에는 적합하지만 복잡한 형태의 데이터를 가진 응용 문제에는 적합하지 않다. 각기 다른 데이터 타입에 대해 다른 프로시저가 작동하고, 각 프로시저마다 많은 데이터 타입을 고려해야 하므로 프로그램이 매우 복잡해지기 때문이다. 

     

    데이터 추상화 관점

    초기에 소개된 데이터 추상화 방법은 레코드나 구조체 개념을 적용한 것으로, 의미 있는 데이터들을 모아 큰 단위를 만들어 정의함으로써 편하게 조작하는 것이었다. 하지만 이러한 데이터 추상화를 따르더라도 절차지향 패러다임을 이용하는 프로그래머는 복잡한 코드를 작성할 수 밖에 없다.

     

    예를 들어 은행애서 사용하는 예금 계좌 관리 프로그램은 절차지향 방법으로 프로그래밍 한다고 생각해보자. 예금 계좌의 성격에 따라 이자 계산, 만기 계산, 인출 등의 방식이 다를 것이고, 따라서 다음과 같이 데이터 타입을 확인하는 부분이 프로그램 여기저기에 있을 것이다. 은행의 고객은 다른 계좌를 여러개 가지고 있고, 계좌들은 서로 연결되어 자동이체되는 식으로 복잡하게 얽혀 있다. 계좌의 성격에 따라 이자 계산, 예금, 인출 방법, 만기 계산 등 규칙이 달라 결국 다음과 같은 코드 조각이 '예금 계좌 관리' 시스템 여러 곳에 산재되어 이자율 등을 변경하기가 매우 어려워진다.

     

    if (account == '정기적금') then

        do something

    else if (account == '정기예금') then

        do something else

    else if (account == '보통예금) then

        do something else

    else

        do yet another thing

    endif

     

     

    'Study > 객체지향 프로그래밍' 카테고리의 다른 글

    소프트웨어 품질의 특성  (0) 2020.04.27

    댓글

Designed by Tistory.