C++프로 그래 밍 의 패 키 징 특성 을 깊이 분석 합 니 다.

공용 인터페이스 와 사유 실현 의 분리
C++클래스 를 통 해 패 키 징 성 을 실현 하고 데이터 와 이 데이터 와 관련 된 조작 을 하나의 클래스 에 패키지 하거나 클래스 의 역할 은 데이터 와 알고리즘 을 사용자 가 설명 한 추상 적 인 데이터 형식 에 패키지 하 는 것 입 니 다.
실제로 사용 자 는 클래스 의 내부 가 어떻게 실현 되 는 지 에 관심 이 없고 어떤 함 수 를 호출 하면 어떤 결 과 를 얻 을 수 있 는 지,어떤 기능 을 실현 할 수 있 는 지 만 알 면 된다.
하나의 클래스 를 설명 한 후에 사용 자 는 주로 공용 구성원 함 수 를 호출 하여 클래스 가 제공 하 는 기능 을 실현 합 니 다(예 를 들 어 데이터 구성원 에 대한 설정 값,데이터 구성원 의 값 표시,데이터 가공 등).따라서 공용 구성원 함 수 는 사용자 가 사용 하 는 공용 인터페이스(Public interface)또는 클래스 의 대외 인터페이스 라 고 할 수 있다.
클래스 에서 작 동 되 는 데 이 터 는 개인 적 이 고 실현 되 는 디 테 일 은 사용자 에 게 은밀 합 니 다.이러한 실현 을 개인 적 인 실현(private implementation)이 라 고 합 니 다.이런'유형의 공용 인터페이스 와 사유 실현 의 분리'는 정보 은폐 가 형성 되 었 다.
소프트웨어 공학 의 가장 기본 적 인 원칙 은 인 터 페 이 스 를 분리 하 는 것 이다.정보 은 폐 는 소프트웨어 공학 에서 매우 중요 한 개념 이다.그것 의 장점 은:
클래스 의 기능 을 수정 하거나 확장 하려 면 이 클래스 의 데이터 구성원 과 그 와 관련 된 구성원 함 수 를 수정 하면 프로그램 에서 클래스 밖의 부분 은 수정 하지 않 아 도 됩 니 다.
컴 파일 할 때 클래스 의 데이터 읽 기와 쓰기 에 오류 가 있 는 것 을 발견 하면 전체 프로그램 을 검사 할 필요 가 없습니다.이 클래스 에서 이 데 이 터 를 방문 하 는 소수의 구성원 함수 만 검사 하 십시오.
클래스 성명 과 구성원 함수 의 분리
대상 을 대상 으로 하 는 프로그램 개발 에서 일반적인 방법 은 클래스 의 성명(구성원 함 수 를 포함 하 는 성명)을 지정 한 헤더 파일 에 넣 는 것 이다.사용자 가 이 클래스 를 사용 하려 면 관련 헤더 파일 을 포함 하면 된다.
헤더 파일 에 클래스 성명 이 포함 되 어 있 기 때문에 프로그램 에서 이 클래스 로 대상 을 정의 할 수 있 습 니 다.클래스 에 구성원 함수 에 대한 성명 이 포함 되 어 있 기 때문에 프로그램 에서 이 대상 의 공용 구성원 함 수 를 호출 할 수 있 습 니 다.
지난 절 에 서술 한 정 보 를 은폐 하기 위해 서 클래스 구성원 함수 에 대한 정 의 는 보통 헤더 파일 에 두 지 않 고 다른 파일 에 두 었 습 니 다.
예 를 들 어 두 개의 파일 을 각각 쓸 수 있다.
student.h 헤더 파일

//  student.h   ,           
class Student //   
{
  public :
  void display( );//          
  private :
  int num;
  char name[20];
  char sex;
};
student.cpp

//             
#include <iostream>
#include "student.h"//      ,       
void Student::display()//     display   
{
  cout<<"num:"<<num<<endl;
  cout<<"name:"<<name<<endl;
  cout<<"sex:"<<sex<<endl;
}
완전한 원본 프로그램 을 구성 하기 위해 서 는 주 함수 의 원본 파일(main.cpp)도 있어 야 합 니 다.

//      
#include <iostream>
#include ″student.h″ //           
int main( )
{
  Student stud; //    
  stud.display( ); //  stud   display  
  return 0;
}
이것 은 세 개의 파일 을 포함 하 는 프로그램 으로 두 개의 파일 모듈 을 구성 합 니 다.하 나 는 메 인 모듈 main.cpp 이 고 하 나 는 student.cpp 입 니 다.주 모듈 에 헤더 파일 student.h 도 포함 되 어 있 습 니 다.사전 컴 파일 시 헤더 파일 student.h 의 내용 을\#include〃student.h 줄 로 대체 합 니 다.
사용자 의 현재 디 렉 터 리 에 헤더 파일 student.h 를 두 고 있 기 때문에 파일 이름 양쪽 에 괄호()대신 쌍 따옴표 로 싸 십시오.그렇지 않 으 면 컴 파일 할 때 이 파일 을 찾 을 수 없습니다.
C++컴 파일 시스템 을 사용 하여 두 개의 원본 파일 main.cpp 와 student.cpp 를 각각 컴 파일 하여 두 개의 대상 프로그램 main.obj 와 student.obj 를 얻 은 다음 에 다른 시스템 의 자 해 를 연결 하여 실행 가능 한 파일 main.exe 를 형성 합 니 다.그림 참조.
대상 파일 의 접 두 사 는 C++컴 파일 시스템 에 따라 다 릅 니 다.예 를 들 어 GCC 에서 접 두 사 는 o 입 니 다.여기 서.obj 를 사용 하 는 것 은 VC 6.0 에 있 습 니 다.

프로그램 을 실행 할 때 stud 의 display 함 수 를 호출 하여 각 데이터 구성원 의 값 을 출력 합 니 다.
어떤 독자 들 은 이러한 문 제 를 고려 할 수 있 습 니 다.만약 에 하나의 성명 이 여러 번 다른 프로그램 에 호출 되면 매번 구성원 함수 정 의 를 포함 하 는 소스 파일(예 를 들 어 위의 student.cpp)을 컴 파일 해 야 합 니 다.이것 은 개선 할 수 있 습 니까?확실히 매번 반복 해서 컴 파일 하지 않 고 한 번 만 컴 파일 하면 된다.첫 번 째 컴 파일 후 형 성 된 대상 파일 을 저장 하고 필요 할 때 프로그램의 대상 파일 과 직접 연결 하면 됩 니 다.이것 은 함수 라 이브 러 리 를 사용 하 는 함수 와 유사 하 다.
이것 도 구성원 함수 의 정 의 를 헤더 파일 에 두 지 않 는 것 이 좋 은 점 이다.구성원 함수 에 대한 정의 도 클래스 성명 의 헤더 파일 에 넣 으 면 이러한 종류의 모든 프로그램 을 사용 하 는 모든 컴 파일 에 구성원 함수 에 대한 컴 파일 이 포 함 됩 니 다.즉,같은 구성원 함수 의 정 의 는 여러 번 중복 컴 파일 됩 니 다.구성원 함수 에 대한 정 의 를 다른 파일 에 단독으로 넣 어야 만 단독 컴 파일 을 할 수 있다.
실제 업무 에서 하나의 성명 을 하나의 헤더 파일 로 만 드 는 것 이 아니 라 자주 사용 하 는 기능 이 비슷 한 몇 가지 성명 을 한데 모 아 라 이브 러 리 를 형성한다.
라 이브 러 리 는 두 가지 가 있 습 니 다.하 나 는 C+컴 파일 시스템 이 제공 하 는 표준 라 이브 러 리 입 니 다.종 류 는 사용자 가 자신의 수요 에 따라 만 든 사용자 라 이브 러 리 로 자신 과 자신 에 게 권한 을 수 여 받 은 사람 에 게 사용 하 는 것 을 사용자 정의 라 이브 러 리 라 고 합 니 다.프로그램 개발 작업 에서 라 이브 러 리 는 매우 유용 하 며,사용자 가 클래스 와 구성원 함수 에 대해 정의 하 는 작업량 을 줄 일 수 있다.
라 이브 러 리 는 두 가지 구성 부분 을 포함한다.클래스 성명 헤더 파일;컴 파일 된 구성원 함수 의 정의 가 있 습 니 다.대상 파일 입 니 다.
사용 자 는 클래스 라 이브 러 리 를 자신의 컴퓨터 시스템 에 불 러 오기 만 하면 됩 니 다.(일반적으로 C+컴 파일 시스템 이 있 는 하위 디 렉 터 리 에 설치 합 니 다)프로그램 에서\#include 명령 줄 로 관련 된 클래스 성명 의 헤더 파일 을 프로그램 에 포함 시 키 면 이러한 클래스 와 그 중의 구성원 함 수 를 사용 하여 프로그램 을 순조롭게 실행 할 수 있 습 니 다.이것 은 프로그램 에서 C++시스템 이 제공 하 는 표준 함 수 를 사용 하 는 방법 과 같 습 니 다.예 를 들 어 사용자 가 sin 함 수 를 호출 할 때 이 함 수 를 설명 하 는 헤더 파일 을 프로그램 에 포함 시 키 면 이 라 이브 러 리 함 수 를 호출 할 수 있 습 니 다.sin 함수 가 어떻게 실현 되 는 지 알 필요 가 없습니다(함수 값 이 어떻게 계산 되 는 지).
물론 전 제 는 시스템 에 표준 함수 라 이브 러 리 가 설치 되 어 있다 는 것 이다.사용자 원본 파일 을 컴 파일 한 후 시스템 라 이브 러 리(대상 파일)와 연결 합 니 다.
사용자 프로그램 에 클래스 성명 헤더 파일 을 포함 하면 클래스 성명 헤더 파일 은 사용자 가 사용 하 는 클래스 의 공용 인터페이스 가 되 고 헤더 파일 의 클래스 에 구성원 함수 의 함수 원형 성명 도 제공 합 니 다.사용 자 는 헤더 파일 을 통 해서 만 관련 클래스 를 사용 할 수 있 습 니 다.사용자 가 볼 수 있 고 접촉 할 수 있 는 것 은 이 헤더 파일 입 니 다.이 클래스 를 사용 하려 는 사용 자 는 이 헤더 파일 만 포함 하면 됩 니 다.구성원 함수 정 의 를 포함 하 는 파일 은 클래스 의 실현 입 니 다.
특히 클래스 성명 과 함수 정 의 는 일반적으로 두 텍스트 에 각각 놓 여 있 습 니 다.인터페이스 와 분 리 를 요구 하기 때문에 소프트웨어 개발 업 체 가 사용자 에 게 라 이브 러 리 를 제공 하 는 데 좋 은 조건 을 만 들 었 다.
개발 업 체 는 사용자 가 필요 로 하 는 각종 종류의 성명 을 클래스 별로 다른 헤더 파일 에 넣 고 구성원 함수 정 의 를 포함 하 는 원본 파일 을 컴 파일 하여 구성원 함수 정의 대상 코드 를 얻 었 다.소프트웨어 업 체 는 사용자 에 게 이 헤더 파일 과 클래스 의 실현 목표 코드 를 제공 합 니 다(함수 정의 소스 코드 를 제공 하지 않 습 니 다).사용 자 는 라 이브 러 리 의 클래스 를 사용 할 때 관련 헤더 파일 을 자신의 프로그램 에 포함 시 키 고 컴 파일 후 구성원 함수 가 정의 하 는 대상 코드 를 연결 하면 됩 니 다.
라 이브 러 리 의 등장 으로 사용 자 는 부품 을 사용 하 는 것 처럼 실천 에서 쌓 인 통용 되 거나 전용 클래스 를 편리 하 게 사용 할 수 있 기 때문에 프로그램 설계 의 작업량 을 크게 줄 이 고 작업 효율 을 효과적으로 높 일 수 있다.

좋은 웹페이지 즐겨찾기