아무거나 개발공부/C++

C++ - MFC 개요

코드 살인마 2021. 7. 9. 10:29
728x90

운영체제

  • 컴퓨터 주기억장치에 상주
  • 컴퓨터 시스템의 자원관리
  • 응용프로그램 수행제어
  • 사용자와 컴퓨터 HW 간의 인터페이스 담당
  • 관리하는 자원 - CPU, 기억장치, 입출력장치 등

윈도우 운영체제의 특징

  • Graphic User Interface
  • 메시지 구동 구조
  • 멀티 태스킹 - 운영체제가 여러 개의 응용 프로그램을 동시 실행, 멀티스레딩 - 응용 프로그램 내부에서 여러 개의 스레드를 통해 실행

윈도우 으용프로그램의 특징

  • 윈도우 API
    • 윈도우 운영체제가 응용 프로그램을 위해 제공하는 각종 함수의 집합 -> HW를 제어하는데 필요한 함수 사용
  • 메세지 핸들러 집합 - 메세지 핸들러는 메시지를 받았을 때 동작을 결정하는 코드 -> 메세지 핸들러 집합을 윈도우 프로시저라 부름
  • 실행 파일과 DLL 집합 - DLL(Dynamic - Link Library) - 프로그램이 실행 중에 결합하여 사용할 수 있는 코드와 리소스의 집합
    • 윈도우 운영체제가 제공하는 API는 DLL 형태로 제공되며, 응용 프로그래머는 필요한 기능을 DLL로 제작하기도 함
  • 장치 독립성 - 주변 장치가 바뀌어도 장치 드라이버만 설치하면 프로그램을 수정하지 않고 실행할 수 있음

윈도우 응용 프로그램의 개발 방식

SDK

  • 윈도우 API + 응용 프로그램 코드(C/C++ 언어)
  • API를 직접 다루기 떄문에 세부 제어가 가능함
  • 윈도우 운영체제가 제공하는 모든 기능을 사용 가능
  • 생성 코드의 크기가 작고 속도도 빠름
  • 다른 개발 방식에 비해 생산성이 매우 낮음

RAD(Rapid Application Development)

  • 시각적 화면 디자인 + 응용 프로그램 코드
  • 간편하고 직관적으로 프로그래밍 할 수 있음
  • 빠른 시간 내에 원하는 기능의 프로그램 개발 가능
  • SDK나 클래스 라이브러리를 이용한 개발 방식보다 생성 코드의 크기가 크고 실행 속도도 떨어지는 편임
  • 윈도우 운영체제가 제공하는 모든 기능을 활용한 세부적인 제어가 어려운 경우가 있음

클래스 라이브러리

  • 클래스 라이브러리 + 응용 프로그램 코드(객체지향언어)
  • SDK를 이용한 방식보다 생산성이 높음
  • API를 직접 사용해서 세부적으로 제어할 수 있음
  • RAD 개발 방식보다 코드 크기와 실행 속도 면에서 유리함
  • 객체 지향 프로그래밍에 익숙해야 함
  • 클래스 라이브러리의 구조와 각 클래스의 기능 및 관계를 파악하기 위한 초기 학습 기간이 긴 편임

.NET 프레임워크

  • 윈도우 운영체제에 설치할 수 있는 소프트웨어 개발 및 실행 환경으로 Micorosoft 사의 핵심 사업 전략
  • 공용 언어 런타임(CLR, Common Language Runtime)이라는 소프트웨어 가상 머신을 제공하며, 가상 머신의 제어 하에 응용 프로그램이 구동됨(장치 독립성)
  • 윈도우 API에 버금가는 방대한 라이브러리를 제공하며, 언어에 상관없이 라이브러리를 사용 가능(언어 독립성)
  • .NET 프레임워크 상에서 최적의 개발 언어 : C# 언어 - 개발이 편리하지만 속도가 느려서 고속 연산과 데이터 처리가 필요한 응용에 부적합