C++클래스 와 대상 인 스 턴 스 분석(2)

C++는 대상 을 대상 으로 하 는 언어 이자 과정 을 대상 으로 하 는 언어 로 여기 서 중요 한 개념 인 클래스 가 있다.
        무엇 을 부류 라 고 하 는가?유형 은 대상 에 대한 추상 적 인 것 이다.예 를 들 어 모든 실제 존재 하 는 사람 은 하나의 대상 이 고 사람 은 공 통 된 특징(머리 하나,다리 두 개,걸 을 수 있 고 뛸 수 있다)이 많다.이런 공 통 된 특징 을 가 진 사람 은 하나의 유형 이 된다.클래스 는 추상 적 인 명사 이 고 모든 사람(즉 대상)은 이런 사례 이다.
        대상 간 에 가지 고 있 는 공 통 된 특징 은 대상 의 속성 과 행위 이다.비디오 는 하나의 대상 으로 그의 속성 은 생산 업 체,브랜드,무게,색채 등 이다.그의 행 위 는 바로 그의 기능 이다.예 를 들 어 비디오,영상 재생,빠 른 속도,후진 등 조작 이다.
C++프로그램 에서 다음 과 같은 종 류 를 정의 해 야 합 니 다.
  클래스 클래스
     {
        변 수 를 정의 합 니 다.
        ….
        정의 함수
      }
클래스 에 있 을 때 구성원 목록 은 데이터 와 조작 데이터 의 함수,즉 데이터 구성원,구성원 함 수 를 포함한다.이것 은 이러한 포장 성과 정보의 은밀 성 을 나 타 냈 다.
구성원 함 수 는 일반적으로 클래스 에서 설명 하고 클래스 체 외 에서 정의 합 니 다.
구조 함수:대상 에 대한 할당
분석 함수:함수 기능 영역 이 끝 날 때 대상 구성원 의 공간 을 방출 합 니 다.
내 연 함수:함수 호출 시간 을 절약 하기 위해
각종 기능 함수 완성...
대상 을 정의 하려 면 클래스 를 예화 해 야 한다.클래스 이름

        클래스 는 추상 적 인 것 으로 그 어떠한 메모리 도 차지 하지 않 고 사례 가 대상 이 된 후에 야 공간 을 분배 할 수 있다.
        컴퓨터 에 서 는 대상 으로 대 천 세계 의 사물 을 묘사 하 는 것 이다.대상 간 에 정 보 를 통 해 관 계 를 맺 고 함 수 를 통 해 다양한 기능 을 완성 합 니 다.
쉽게 말 하면 이것 이 대상 과 유형 이다.
다음은 실례 를 통 해 이해 하 겠 습 니 다.
【2-1】일 C++클래스 와 대상 기간 데 이 트 를 정의 합 니 다.이 대상 은 날 짜 를 저장 하고 제공 할 수 있 는 작업 은 날짜 값,년도,월 추출,날짜 추출 및 디자인 날짜 값 입 니 다.
[분석]이 프로그램 은 먼저 하나의 유형 을 정의 해 야 합 니 다.이러한 데이터 구성원 은 year,month,day 가 있 고 이 를 private 접근 권한 으로 설계 해 야 합 니 다.5 개의 멤버 함수 가 필요 합 니 다.각각:

void getdate();          //    ,   “year-month-day”
int getyear();          //   
int getmonth();         //   
int getday();          //   
void setdate(int y,int m,int d);    //     
      :
#include <iostream>
using namespace std;
class date
{
public:
 void getdate();
 int getyear();
 int getmonth();
 int getday();
 void setdate(int y,int m,int d);
private:
 int year,month,day;
};
int date::getyear(){ return year; }
int date::getmonth(){ return month; }
int date::getday(){ return day; }
void date::getdate()
{ cout<<"today is:"<<year<<"-"<<month<<"-"<<day<<endl; }
void date::setdate(int y,int m,int d)
{ year=y; month=m; day=d;  }
int main()
{
 date d;
 d.setdate(2011,2,1);
 cout<<"year="<<d.getyear()<<endl;
 cout<<"month="<<d.getmonth()<<endl;
 cout<<"day="<<d.getday()<<endl;
 d.getdate();
 return 0;
}
[총 결]이것 은 가장 간단 한 절차 이지 만 그 중에서 도 많은 문제점 이 존재 한다.예 를 들 어 setdate()함수 가 없 으 면 대상 에 게 초기 값 을 부여 할 수 없고 특정한 형식 에 따라 대상 에 대해 초기 값 을 설정 해 야 합 니 다.이 문 제 는 구조 함 수 를 이용 하여 대상 을 초기 화해 야 한다.
【2-2】예【2-1】을 개선 하고 구조 함 수 를 사용 하여 대상 을 초기 화하 고 형식 이 일치 하지 않 습 니 다.
[분석]이 예 는 구조 함 수 를 사용 하고 구조 함수 로 다시 불 러 오고 기본 매개 변수 값 의 구조 함수 와 복사 구조 함 수 를 사용 해 야 합 니 다.
프로그램 코드 는 다음 과 같 습 니 다:

#include <iostream>
using namespace std;
class date
{
public:
 date(int y=0,int m=0,int d=0)
 { year=y; month=m; day=d; }
 date(date &d)
 { year=d.year; month=d.month; day=d.day; }
 void getdate()
 { cout<<"today is:"<<year<<"-"<<month<<"-"<<day<<endl; }
 int getyear() { return year; }
 int getmonth() { return month; }
 int getday() { return day; }
private:
 int year,month,day;
};

int main()
{
 date d1(2011,2,1),d2,d3(d1);
 d1.getdate();
 d2.getdate();
 d3.getdate();
 return 0;
}

[총 결]프로그램의 대상 d1 에 완전한 실제 참조 표 가 있 으 면 구조 함 수 를 호출 하여 대상 을 초기 화 합 니 다.대상 d2 에 실제 인삼 표 가 없 으 며 시스템 역시 구조 함 수 를 자동 으로 호출 하여 대상 을 초기 화 합 니 다.다만 형 삼 의 값 은 기본 매개 변수 값 으로 초기 화 됩 니 다.대상 d3 에 대해 서 는 복사 구조 함수 로 초기 화 합 니 다.
【2-3】데 이 터 를 배열 내 구 화,최대 치,최소 치 와 평균 값 에 입력 한 후 출력 하여 구성원 함 수 를 클래스 밖으로 정의 합 니 다.
[분석]이 프로그램 에서 C 언어 에서 배 운 내용 에 대한 정 리 는 과정 에서 대상 을 대상 으로 하 는 비약 이다.이런 종류의 데이터 구성원 은 배열 을 포함해 야 한다.구성원 함 수 는 배열 입력 함수,배열 출력 함수,구 화 함수,최대 값 함수,최소 값 함수 와 평균 값 함수 가 있어 야 합 니 다.
프로그램 코드 는 다음 과 같 습 니 다:

#include <iostream>
using namespace std;
#define N 10
class array
{
public:
 void input();
 void output();
 int max();
 int min();
 int sum();
 float average();
private:
 int a[N],maxnumber,minnumber,sumnumber;
 float avenumber;
};
void array::input()
{
 int i=0;
 cout<<"Please input "<<N<<" numbers:"<<endl;
 for(i=0;i<N;i++)
 {
 cout<<"a["<<i<<"]=";
 cin>>a[i];
 }
}
void array::output()
{
 int i=0;
 cout<<"array a is:"<<endl;
 for(i=0;i<N;i++)
 cout<<a[i]<<" ";
 cout<<endl;
}
int array::max()
{
 int i;
 maxnumber=a[0];
 for(i=1;i<N;i++)
 if(maxnumber<a[i])
  maxnumber=a[i];
 return maxnumber;
}
int array::min()
{
 int i;
 minnumber=a[0];
 for(i=1;i<N;i++)
 if(minnumber>a[i])
  minnumber=a[i];
 return minnumber;
}
int array::sum()
{
 int i;
 sumnumber=a[0];
 for(i=1;i<N;i++)
 sumnumber+=a[i];
 return sumnumber;
}
float array::average()
{
 float ave=static_cast<float>(sumnumber/N);
 return ave;
}
int main()
{
 array a;
 a.input();
 a.output();
 cout<<"The max number is "<<a.max()<<endl;
 cout<<"The min number is "<<a.min()<<endl;
 cout<<"The sum number is "<<a.sum()<<endl;
 cout<<"The average number is"<<a.average()<<endl;
  return 0;
}
[총 결]위의 절 차 를 통 해 알 수 있 듯 이 클래스 array 에는 배열 에 대한 각종 조작 이 포함 되 어 있 는데 구 화,최대 치,최소 치 와 평균 치 를 구 하 는 등 을 포함한다.
【2-4】고양 이 를 나타 내 는 종 류 를 디자인 하 는데 고양이 의 색깔,체중,연령 등 데 이 터 를 포함 하고 고양이 의 색깔 을 설정 하고 고양이 의 체중,연령 등 을 수정 하고 표시 하 는 작업 을 한다.
【분 석】디자인 고양이 류 의 유형 은 Cat 이 라 고 하 는데 이런 것 은 3 개의 데이터 구성원 이 있 고 색깔 은 string 류 로 한 자 를 저장 할 수 있 으 며 체중 은 실수 유형 으로 표시 하고 나 이 는 정수 형 으로 표시 하 며 데이터 의 안전성 을 보호 하기 위해 3 개의 데이터 구성원 은 모두 사유 성 이다.고양이 의 속성 데이터 에 대한 설정 과 수정 은 모두 공유 함수 입 니 다.
프로그램 코드 는 다음 과 같 습 니 다:

#include <iostream>
#include <string>
using namespace std;
class Cat
{
public:
 Cat(string c="red",float w=1,int a=1);
 string get_color();
 float get_weight();
 int get_age();
 void display();
private:
 string color;
 float weight;
 int age;
};
Cat::Cat(string c,float w,int a)
{
 color=c;
 weight=w;
 age=a;
}
string Cat::get_color()
{
 return color;
}
float Cat::get_weight()
{
 return weight;
}
int Cat::get_age()
{
 return age;
}
void Cat::display()
{
 cout<<"The color of this cat is "<<get_color()<<endl;
 cout<<"The weight of this cat is "<<get_weight()<<endl;
 cout<<"The age of this cat is "<<get_age()<<endl;
}
int main()
{
 Cat c1,c2("yellow",1,2);
 cout<<"c1 is:"<<endl;
 c1.display();
 cout<<"c2 is:"<<endl;
 c2.display();
 return 0;
}
[총 결]위의 절 차 를 통 해 알 수 있 듯 이 구조 함 수 는 클래스 로 대상 을 초기 화 할 수 있 고 구조 함 수 는 다시 불 러 올 수 있다.
본 고 는 여러분 이 c++프로 그래 밍 언어 를 배 우 는 데 도움 이 되 고 여러분 이 계속 관심 을 가 져 주 셨 으 면 좋 겠 습 니 다!

좋은 웹페이지 즐겨찾기