この問題を解くためには…
 → 基本編第3日目参照

問題3:アクセス指定子とカプセル化

prob3-1.(難易度:★)

以下のプログラムのクラスCDataに、メンバ変数のセッターおよびゲッターを追加し、ビルドが通るようにし、期待される実行結果を得られるように書き換えなさい。

prob3-1:data.h
#ifndef _CDATA_H_
#define _CDATA_H_

#include <iostream>
#include <string>

using namespace std;

class CData{
private:
	//	メンバ変数number
	int number;
	//	メンバ変数comment
	string comment;
public:
	//	初期化
	void init();
};

#endif // _CDATA_H_
data.cpp
#include "data.h"

void CData::init()
{
	number = 0;
	comment = "";
}
main.cpp
#include <iostream>
#include "data.h"

using namespace std;

int main(){
	CData d;
	d.init();	//	パラメータを初期化
	d.setNumber(100);
	d.setComment("Programming C++");
	cout << "number = " << d.getNumber() << " comment = " << d.getComment() << endl;
	return 0;
}
実行結果
number = 100 comment = Programming C++

prob3-2.(難易度:★★)

以下のプログラムは、二つの文字列を合成したり、その長さを求めるする機能を持つクラス、TwoStringsのヘッダファイルと、そのクラスを使ったサンプルプログラムです。このクラスのソースファイルである、twostring.cppを完成させ、実行結果の通りに動くようにしなさい。

prob3-2:twostrings.h
#ifndef _TWOSTRINGS_H_
#define _TWOSTRINGS_H_

#include <iostream>
#include <string>

using namespace std;

class TwoStrings{
private:
	//	一つ目の文字列
	string m_string1;
	//	二つ目の文字列
	string m_string2;
public:
	//	一つ目の文字列を設定
	void setString1(string s);
	//	二つ目の文字列を設定
	void setString2(string s);
	//	一つ目の文字列を取得
	string getString1();
	//	二つ目の文字列を取得
	string getString2();
	//	二つの文字列をつないだものを取得
	string getConnectedString();
	//	getConnectedString()で得られる文字列の長さを取得
	int getConnectedLength();
};

#endif // _TWOSTRINGS_H_
	
main.cpp
#include <iostream>
#include "twostrings.h"

using namespace std;

int main(){
	TwoStrings s;
	s.setString1("Hello");
	s.setString2("World");
	cout << "一つ目の文字列は" << s.getString1() << endl;
	cout << "二つ目の文字列は" << s.getString2() << endl;
	cout << "二つの文字列を合成したものは" << s.getConnectedString() << endl;
	cout << "合成した文字列の長さは" << s.getConnectedLength() << "文字" << endl;
	return 0;
}
実行結果
一つ目の文字列はHello
二つ目の文字列はWorld
二つの文字列を合成したものはHelloWorld
合成した文字列の長さは10文字

prob3-3.(難易度:★★)

以下のプログラムは、二つの整数の足し算と引き算を行うクラス、Calculationを用いて、二つの数の足し算と引き算の結果を出力したものである。実行結果と、以下に示す仕様をもとに、クラスCalculationを構成するヘッダファイルcalculation.hおよび、ソースファイルcalculation.cppを完成させ、動作するプログラムを完成させなさい。

main.cpp
#include <iostream>
#include "calculation.h"

using namespace std;

int main(){
	Calculation c;
	c.setNumber1(8);	//	一つ目の数をセット
	c.setNumber2(9);	//	二つ目の数をセット
	//	二つの数の和を表示
	cout << c.getNumber1() << " + " << c.getNumber2() << " = " << c.add() << endl;
	//	二つの数の差を表示
	cout << c.getNumber1() << " - " << c.getNumber2() << " = " << c.sub() << endl;
	return 0;
}
実行結果
8 + 9 = 16
8 - 9 = -1
クラスCalculationの仕様①メンバ変数(privateで隠ぺいすること)
メンバ変数 概要
m_number1 int 一つ目の数
m_number2 int 二つ目の数

クラスCalculationの仕様②メンバ関数
関数名 戻り値の型 引数 概要
setNumber1 void int n m_number1のセッター。引数nを代入する。
setNumber2 void int n m_number2のセッター。引数nを代入する。
getNumber1 int なし m_number1のゲッター。値を取得する
getNumber2 int なし m_number2のゲッター。値を取得する
add int なし m_number1とm_number2の和を返す。
sub int なし m_number1とm_number2の差を返す。