オブジェクト指向プログラムは仕様(実行したいこと)の追加、変更に強いプログラムを目指しています

クラスが異なれば同じ名前のメンバ変数宣言、メンバ関数宣言を使用することは可能です

ソーラー「再び


クラスGameCharacter



クラスDragonが用いられた次のプログラムをご覧ください」

👇


#include <iostream>

#include <string>//文字列を取り扱うためにヘッダファイル <string>をインクルードしています

using namespace std;


//👇🌞🌞🌞クラスGameCharacterです🌞🌞🌞

class GameCharacter {


public:

string name;

int HP;

int MP;


void statusDataDisplay();


//クラスGameCharacterにはuseFireRecovery(GameCharacter& a)を設定しません

};



void GameCharacter::statusDataDisplay() {


cout << name << "\n";

cout << "HP " << HP << "\n";

cout << "MP " << MP << "\n";

}



//👇🌞🌞🌞クラスDragonです🌞🌞🌞

class Dragon {


public:

string name;

int HP;

int MP;


void statusDataDisplay();


void useFireRecovery(GameCharacter& a);


};



void Dragon::statusDataDisplay() {


cout << name << "\n";

cout << "HP " << HP << "\n";

cout << "MP " << MP << "\n";

}


void Dragon::useFireRecovery(GameCharacter& a) {

cout << name << "は灼熱のフレアを" << a.name << "に吐いた !" << "\n";

cout << a.name << "は灼熱のフレアを受け燃え上がった!" << "\n";


a.HP += 10;


cout << a.name << "の体力は10回復した" << "\n";


}



int main() {


GameCharacter Lyliane;


Lyliane.name = "リリアーネ";

Lyliane.HP = 10;

Lyliane.MP = 8;


Dragon Pokky;

Pokky.name = "ポッキー";

Pokky.HP = 15;

Pokky.MP = 5;


Lyliane.statusDataDisplay();

Pokky.statusDataDisplay();


Pokky.useFireRecovery(Lyliane);


Lyliane.statusDataDisplay();

Pokky.statusDataDisplay();



return 0;

}


プログラムの実行結果


リリアーネ

HP 10

MP 8

ポッキー

HP 15

MP 5

ポッキーは灼熱のフレアをリリアーネに吐いた!

リリアーネは灼熱のフレアを受け燃え上がった!

リリアーネの体力は10回復した

リリアーネ

HP 20

MP 8

ポッキー

HP 15

MP 5


ソーラー「このときの


クラスGameCharacter



クラスDragon


のクラス宣言に御注目下さい」

👇


//👇🌞🌞🌞クラスGameCharacterのクラス宣言です🌞🌞🌞

class GameCharacter {


public:

string name;

int HP;

int MP;


void statusDataDisplay();


//🔥クラスGameCharacterにはuseFireRecovery(GameCharacter& a)を設定しません🔥

};

//👆🌞🌞🌞クラスGameCharacterのクラス宣言です🌞🌞🌞


//👇🌞🌞🌞クラスDragonのクラス宣言です🌞🌞🌞

class Dragon {


public:

string name;

int HP;

int MP;


void statusDataDisplay();


void useFireRecovery(GameCharacter& a);


};

//👆🌞🌞🌞クラスDragonのクラス宣言です🌞🌞🌞


ソーラー「この2つのクラスの


メンバ変数宣言

メンバ関数宣言に御注目下さい


とくに


string name;

int HP;

int MP;


void statusDataDisplay();


です」



マックス「マックス「よくみると


クラスGameCharacterのクラス宣言でも

クラスDragonのクラス宣言でも


       

       😊全く同じ😊


メンバ変数宣言


string name;

int HP;

int MP;


メンバ関数宣言


void statusDataDisplay();



設定されているじゃないか


しかし、プログラムはビルドエラーになることもなく


実行できている?」


ソーラー「そうなんです


この


クラスGameCharacter

クラスDragon

のように


クラスが異っていれば


 同じ名前の変数名、関数名を使用することができます


ちょうど


自作関数内と


main関数内で


つまり


異なる関数内で


同じ名前の変数名が用いられても


異なる変数とみなされるのと一緒です


そして


よくみると


GameCharacterのクラス宣言に


メンバ関数宣言


void useFireRecovery(GameCharacter& a);


を付け加えたものが


Dragonのクラス宣言なんです」


マックス「めっちゃ 構造がにているな」


ソーラー「通常


ゲームに登場してくる


ゲームキャラクター(GameCharacter)



すべて


name(名前)

HP

MP

のデータをもっていますし


それらのデータをコマンドプロンプト画面に表示するための関数


statusDataDisplay()


必要です


そして


Dragonもゲームキャラクターの1種なので


name(名前)

HP

MP

のデータをもっていますし


それらのデータをコマンドプロンプト画面に表示するための関数


statusDataDisplay()


必要です


だから

GameCharacter のクラス宣言

Dragonのクラス宣言



似てくるんだね」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る