C++클래스 와 대상 인 스 턴 스 분석(2)
무엇 을 부류 라 고 하 는가?유형 은 대상 에 대한 추상 적 인 것 이다.예 를 들 어 모든 실제 존재 하 는 사람 은 하나의 대상 이 고 사람 은 공 통 된 특징(머리 하나,다리 두 개,걸 을 수 있 고 뛸 수 있다)이 많다.이런 공 통 된 특징 을 가 진 사람 은 하나의 유형 이 된다.클래스 는 추상 적 인 명사 이 고 모든 사람(즉 대상)은 이런 사례 이다.
대상 간 에 가지 고 있 는 공 통 된 특징 은 대상 의 속성 과 행위 이다.비디오 는 하나의 대상 으로 그의 속성 은 생산 업 체,브랜드,무게,색채 등 이다.그의 행 위 는 바로 그의 기능 이다.예 를 들 어 비디오,영상 재생,빠 른 속도,후진 등 조작 이다.
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++프로 그래 밍 언어 를 배 우 는 데 도움 이 되 고 여러분 이 계속 관심 을 가 져 주 셨 으 면 좋 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio에서 파일 폴더 구분 (포함 경로 설정)Visual Studio에서 c, cpp, h, hpp 파일을 폴더로 나누고 싶었습니까? 어쩌면 대부분의 사람들이 있다고 생각합니다. 처음에 파일이 만들어지는 장소는 프로젝트 파일 등과 같은 장소에 있기 때문에 파일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.