데이터 은닉 및 캡슐화로 학생 데이터 유형을 만들고 싶다고 가정합니다. 학생은 first_name, last_name, age 및 class 항목이 있어야 하지만 이러한 변수는 직접 액세스할 수 없습니다. get_firstname() set_firstname(), get_age() set_age() 등과 같은 일부 함수를 정의하여 변수 값을 검색하고 업데이트하고 to_string() 함수를 사용하여 이 형식(age, first_name, last_name, class ). 콘솔에서 4개의 매개변수를 입력으로 받아 우리가 정의한 setter 메소드를 사용하여 설정하고 getter 메소드를 사용하고 마지막으로 to_string() 메소드를 사용하여 각 항목을 표시합니다.
따라서 입력이 다음과 같으면
priyam kundu 16 10
그러면 출력은
16 priyam kundu 10 (16, priyam, kundu, 10)
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
first_name, 유형 문자열 및 age, 유형 정수의 cl의 last_name으로 클래스 정의
-
모든 속성에 대한 getter 함수 정의
-
모든 속성에 대한 setter 함수 정의
-
string-stream 객체를 사용하여 to_string() 함수를 정의하고 출력 형식과 일치하는 형식화된 문자열을 만듭니다.
-
주요 방법에서 다음을 수행하십시오 -
-
각 줄을 읽고 각각 first_name, last_name, age, cl을 저장합니다.
-
이 값을 클래스 멤버로 설정하기 위해 setter 함수를 호출합니다.
-
getter 메서드를 사용하여 모든 속성을 인쇄합니다.
-
to_string() 함수를 사용하여 이 형식(age, first_name, last_name, cl)으로 학생 정보를 표시합니다.
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include <iostream>
#include <sstream>
using namespace std;
class Student{
private:
int age, cl;
string first_name, last_name;
public:
int get_age(){return age;}
int get_class(){return cl;}
string get_firstname(){return first_name;}
string get_lastname(){return last_name;}
void set_age(int a){age = a;}
void set_class(int c){cl = c;}
void set_firstname(string fn){first_name = fn;}
void set_lastname(string ln){last_name = ln;}
string to_string(){
stringstream ss;
ss << "(" << age << ", " << first_name << ", " << last_name << ", " << cl << ")";
return ss.str();
}
};
int main() {
Student stud;
int age, cl;
string first_name, last_name;
cin >> first_name >> last_name >> age >> cl;
stud.set_age(age);
stud.set_class(cl);
stud.set_firstname(first_name);
stud.set_lastname(last_name);
cout << stud.get_age() << endl;
cout << stud.get_firstname() << endl;
cout << stud.get_lastname() << endl;
cout << stud.get_class() << endl;
cout << endl << stud.to_string();
}
입력
priyam kundu 16 10
출력
16 priyam kundu 10 (16, priyam, kundu, 10)