[VC++] 시리얼 통신 프로그램 만들기[1-2] – MFC 와 OOP

도스용, 혹은 콘솔 프로그래밍만 다뤄왔던 프로그래머가 C++ 문법을 익혔더라도 윈도우 어플리케이션 제작을 위해 Visual C++ 을 접하게 될 경우 몇가지 난제에 부딪히게 됩니다.
다분히 제 경험으로 미루어 짐작하건데 그 대부분의 원인은 OOP 와 MFC Frame Work 에 대한 생소함에 있음을 판단하고 이 글의 많은 부분을 OOP 에 대한 설명과 이것이 Visual C++ 에 어떻게 적용되는지를 다루게 될 것입니다.

컴퓨터를 소프트웨어로 제어하기 시작한 이래 프로그래밍 방식에 있어 다음과 같은 발전에 이루워져 왔습니다.

순차적 프로그래밍 —> 구조적 프로그래밍 —> 객체지향 프로그래밍(OOP)

순차적 프로그래밍
말 그대로 프로그램의 흐름이 코드의 시작부터 차례대로 진행되는 방식.
프로그램 중간에서 제어의 흐름을 변화시키기 위해서 LABEL 을 이용한 점프가 빈번하게 이루어지며 코드의 크기가 커질경우 제어의 흐름을 파악하기가 어려운 점이 있어 플로우차트(흐름도) 를 작성하여 이를 보완합니다.
기계어(어셈블러), 오리지널 베이직 이나 코볼 등 인터프리터 언어 및 각종 스크립트 언어가 이에 해당됩니다.

구조적 프로그래밍
위에서 언급한 순차적 프로그래밍의 단점을 보완하기 위한것으로 각 흐름의 점프되는 루틴들을 모듈로서 설계하여 코드 내에서 기능별 구조화를 이룰 수 있습니다.
대개 기능별 모듈들의 최소단위는 함수로서 정의 되어지며 프로그래머는 화일단위로 각 함수들을 큰 기능별로 분류하게 됩니다.
C 나 파스칼, MS Q-Basic 등이 이에 해당됩니다.

객체지향 프로그래밍 (OOP)
기능별 모듈을 클래스로서 한정시키고 속성과 실제 처리를 포함시켜 외부에서의 접근에 대한 보안을 설정하고 독립성을 유지시키기 위하여 은닉화(Encapsulation) 시킬 수 있으며 상속을 통해 메소드에 대한 중복정의(overloading)와 재정의(overriding) 로서 기능적 보완과 확장을 이룰 수 있도록 합니다.
C++, Java, Python, C#, 오브젝트 파스칼(델파이) 등이 해당됩니다

구조적 프로그래밍으로 설계된 기능별 모듈(함수, 같은 기능으로 묶여진 함수들을 포함하는 파일) 을 다른 환경의 프로젝트에 사용할 경우 다른 모듈과의 연계성(다른 모듈과의 데이터 교환을 위한 전역변수나 여러 설정등) 때문에 코드의 수정없이 이를 적용시키거나(프로그래밍시 처음 설계부터 각 모듈들의 독립성을 고려하여 설계되어야 함) 이 모듈의 기능을 확장시키기가 어렵습니다.

이런 단점들을 극복하기 위해 OOP 가 출현함으로서 코드의 재사용성과 이로 인한 프로그램 생산성 향상을 기대할 수 있습니다.

아래는 OOP 거론시 자주 언급되는 OOP 의 세가지 특징을 나열하였습니다.

1) 캡슐화(Encapsulation)
2) 상속성(Inheritance)
3) 다형성(Polymorphism) – 중복정의(overloading)와 재정의(overriding)

객체지향 프로그래밍을 한다고 하면 각 기능별 모듈들은 Class 단위로 정리되어지며 이들은 캡슐화에 의해 다른 모듈이나 객체들과 독립성을 유지하고 내부 변수나 함수들이 은닉되어 보안을 유지하며 Class 설계시 상속성과 다형성에 입각하여 초기 기본적 기능의 정의로부터 시작하여 부가,확장시켜 나가게 될 것입니다.

Visual C++ 로 윈도우 어플리케이션을 제작할 경우 C++ 로 MFC 라이브러리를 사용하여 제작하게 됩니다.
MFC Library(Microsoft Foundation Class Library) 는 윈도우 프로그램을 제작할 때 사용되어지는 C 함수인 Windows API 들을 위에서 설명한 객체지향 언어의 특징을 살려 C++ Class 들로 정리하여 정의해 놓은 것입니다.
윈도우 어플리케이션 프로그래머는 이 MFC 를 사용하여 자신이 필요한 기능의 객체(클래스)를 사용하거나 좀더 부가된 기능이 필요하다면 이를 상속받은 클래스를 정의하여 기능을 확장시켜줌으로서 윈도우 프로그래밍이 가능합니다.
이들 클래스들은 MSDN 문서에 예제를 포함하여 자세히 설명돼 있습니다.

마찬가지로 Java 에서도 MFC 와 같이 자바 프로그래밍에 있어 전부라 할 수 있는 Java Runtime Library 를 지원해주며 이에 대한 Document 는 아래 링크에서 볼 수 있습니다.
아래링크는 Java Standard Edition Runtime Library 의 API 문서이며 Java 프로그래밍시 빈번히 조회되는, MFC 프로그래머가 MSDN 을 띄워놓고 상시 참조하는것과 같은 성격의 사이트입니다.
http://java.sun.com/j2se/1.4.2/docs/api/

 

 

이 글을 공유하기:

Be the first to comment

Leave a Reply