프로그래밍 공부
작성일
2024. 1. 26. 17:03
작성자
WDmil
728x90

5. 객체를 이용한 디자인

객체 개념을 접목해서 더 좋은 디자인 개념을 배워보자. 단순히 객체를 이용하는 것과 객체지향 개념을 제대로 활용하는 것의 차이는 전체 프로그램 디자인에서 객체들이 어떤 관계를 갖게 만들어졌는가에 달려있다.

 

먼저 절차적 프로그래밍(C 언어 스타일) 에 대해 아주 간략히 알아보고, 그 다음으로 객체지향 프로그래밍(Object-Oriented Programming[OOP]) 에 대해 알아보자. 비록, 수년동안 객체를 이용해왔다고 하더라도, 객체지향 프로그램을 개발할 때 자주 부딛혔던 객체 간 관계의 서로 다른 형태를 다루어보고, 추상화 원칙이 객체 디자인에 어떻게 적용되는지도 알아보는 것이 좋은 경험을 선사할 것 이다.

 

객체지향 프로그래밍은 프로그램이 내부에서 어떻게 구동죄는지 생각하는 방법의 하나일 뿐 이다. C스타일의 절차적 코딩에서 C++의 객체지향 코딩으로 전환할 때는 생각하는 방법의 차이 이상도 이하도 아니라는 것을 알아야 한다.

 

그럼에도 너무 많은 프로그래머가 객체에 대한 이해를 하기도 전에 객체지향과 관련된 문법과 용어에 압도되어 버린다.

 

5.1 절차적 사고방식이란 무엇인가?

C와 같은 절차적 언어는 코드를 잘게 나누어 하나의 작업만 담당하게 한다. 만약 C에 절차적 방식을 사용할 수 없다면 main() 함수 안에 모든 코드를 한꺼번에 집어넣어야 하므로 가독성이 떨어지고 동료와 헙업하기 어려워진다.

 

컴퓨터 입장에서는 프로그램이 main()안에서 통으로 구동되든, 절차별로 나뉘고 이름이 부여되어 잘게 쪼개진 코드 조각들로 구동되든 아무런 상관이 없다. 사실 절차는 프로그래머가 코드를 이해하고 유지보수하기 쉽도록 도와주는 추상화 도구이다.

 

이 개념은 '이 프로그램은 무엇을 하는가?' 라는 근본적인 질문에 답하기 위해 도입되었다. 이 질문에 코드가 아닌 자연어로 대답함으로써 절차적으로 생각하게 된다.

 

에를들어 주식 투자 종목을 골라주는 프로그램을 디자인 한다면, 다음 순서대로 답을 만들어갈 것 이다.

  1. 인터넷에서 주식 시세를 얻어온다.
  2. 가져온 데이터를 특정 조건에 따라 정렬한다.
  3. 저장된 데이터를 분석한 후 결과에 따라 종목별로 사야 할지 팔아야 할지 추천 값을 출력한다.

C에서는 절차를 '함수' 라고 부르고 있기는 하지만 사실 C는 함수형 언어가 아니다. 절차에서 부르는 함수와 lisp같은 진짜 함수형 언어에서 부르는 함수는 의미가 아주 다르고 추상화 방법도 전혀 다르다.

 

절자척 접근 방법은 결국 작업 단계 목록으로 귀결된다. 하지만 규모가 큰 애플리케이션 이라면 선형적인 이벤트 순서만으로 이루어지기 어렵다. 사용자가 언제든 임의의 명령을 내릴 수 있다. 게다가 절차적 사고방식은 데이터 표현 방식에 대해서는 전혀 이야기해주지 못한다.

 

절차적 사고방식에 물들어 있더라도 걱정할 필요는 없다. 객체지향 사고방식이 더 유연한 대안이라는 사실을 깨닫기만 한다면 쉽게 몸에 익힐 수 있다.

728x90