コンテンツへスキップ

七十の独習

オブジェクト指向 Work-1-3

前回の関数を使ったプラ

ログラムをクラスを使ったプログラムに修正してみよう。

【例題1 店舗ごとの売上合計を計算する】
店舗名 ジャム ジュース ソース
本店 20000 18000 12000
支店 16000 14000 10000

クラスについては後にしっかり学ぶとして、とりあえずはクラスを使ったプログラムを書いてみる。

【クラスを使ったオブジェクト指向】sample1-3.php
  1. <?php
  2. //クラスの定義
  3. class Uriage
  4. {
  5.     public $name = "";
  6.     public $jam = 0;
  7.     public $juice = 0;
  8.     public $souce = 0;
  9. }
  10. //関数の定義
  11. function printSum(string $name, int $jam, int $juice, int $souce): void
  12. {
  13.     $sum = $jam + $juice + $souce;
  14.     echo($name."の売上合計は: ".$sum."円です。"."<br>");
  15. }
  16.  
  17. //インスタンスを格納
  18. $honten = new Uriage();
  19. $honten->name = "本店";
  20. $honten->jam = 20000;
  21. $honten->juice = 18000;
  22. $honten->souce = 12000;
  23. printSum($honten->name, $honten->jam, $honten->juice,$honten->souce);
  24. $siten = new Uriage();
  25. $siten->name = "支店";
  26. $siten->jam = 16000;
  27. $siten->juice = 14000;
  28. $siten->souce = 10000;
  29. printSum($siten->name, $siten->jam, $siten->juice,$siten->souce);
  30. ?>

上のコードは次の様になことだろう。

  1. Uriageと言うクラス(以下「Uriageクラス」)をを定義する。
  2. Uriageクラスには$mane、$jam、$juice、$souceのプロパティ(変数)がある。
  3.  publicと言うのは、アクセス修飾子と言われるもので、どこからでもアクセス可能なのが、public
  4.  売上の合計を計算する関数printSumを定義する。
  5. Uriageクラスから$hontenというインスタンス(以下「$hontenインスタンス」)を生成する。
  6. $hontenインスタンスの中のnameというプロパティに”本店”を代入する。
  7. 以下同様にして、jam、juice、souceに値を代入る。
  8. 関数printSumに変数を引渡し実行させる。
  9. $sitenプロパティについても同様な処理を行う。
【実行結果】

本店の売上合計は50000円です。
支店の売上合計は40000円です。

いいいよ、クラスを使ったプログラムだ。あまり馴染みのない書き方だが、‘Urigae’と言うクラスに、店舗名、ジャム、ジュース、ソースの各売上のデータ群が定義されていることがわかる。データを入れる型あるいは器のようなイメージか。

初めて見る演算子が出てきた。 -> だ。
アロー演算子と呼ぶのだろうか? 「アロー演算子」と呼ぶ人もいるようだが、PHPのマニュアルで探してみたが見当たらない。こう言うところで躓いてなかなか先に進めない。

名称はあきらめて、機能をネットで調べてみても珍紛漢紛。その中で少しはわかりやすかったのが、「クラスのメソッドやプロパティ(変数)にアクセスするための演算子」だった。

例えば、20行目の $honten->name = “本店”; では、 Uriageクラスで作られた$hontenというインスタンスの中にあるnameというプロパティにアクセスしている訳で、それに”本店”とい言う値を代入することを意味する。

これで良いのかな?

慣れないといけないのが、
$honten->$name = “本店”; ではなく、
$honten->name = “本店”; と記述しなければいけないこと。

やっていることはだいたい理解できた。
ある作業をクラス化しておけば、プログラムの本文がシンプルになるのは理解できる。

さて、参考書によれば、上記の記述法は「お作法」違反だそうだ。

【クラスのお作法】

  • クラス名はアルファベットの大文字で始める。
  • 1つのクラスは1つの独立したphpファイルに記述する。 クラスを記述する
  • phpファイルのファイル名は、「クラス名.php」とする。

お作法違反でもこのソースでちゃんと動くのだが、次回は笑われないように、お作法通りに書き直してみる。

ホーム » 七十歳からの独習 オブジェクト指向 work-1-3

七十歳からの独習 オブジェクト指向 work-1-3