どうもノンストップ飯田です。
自己紹介をアップしたきり、放置していましたが、ちょっとこちらにもプログラミングの記事なんぞを書いていこうかなと思っておりまむす。
あまり、順序性は考えずにポツポツ上げていこうと思います。
今日は、実際にコードを書いて何かを作ろうと思った時に、知っておくと超便利なクラスについて書きます。
classって何でしょうか?僕自身も非エンジニアで独学でPythonを学び初め、classについて学びましたが、はっきり言ってまるで理解不能でした。
でも、ある程度理解が進んだ今、classは無理やり覚えるものではなく、知っておいた方が便利というものだ理解しました。
例えば、RPGをプログラミングで作ろうと思った場合を想像して下さい。
パーティーには自分も含め、3人程度の仲間と、戦う相手として異なる種類のモンスターたちが登場することでしょう。
例えば、勇者・戦士・僧侶・魔法使いのオーソドックスな編成だったとします。
プレイヤーが側のステータス(データ項目)は、『名前』・『職業』・『HP』・『MP』・『攻撃力』・『防御力』・『精神』・『魔力』だったとします。
classなしに書くと・・・こんな感じになります。
まあ、なんというか・・・長いですね。
仮にルイー〇の酒場に武闘家や盗賊など、普段は連れていない仲間もいるとすると後、何人分このコードを書かなくてはいけないでしょうか・・・。
また、作成したプレイヤーを呼び出す場合、、、
かつ、例えばモンスターの先頭で'アリム'の攻撃力をプログラムで使う場合は、「player4_attack」を都度呼び出す必要があります。
もちろんこんな感じで一応出力はされます。
つまり、面倒くさいのです。何かと。
これがclassを使った場合、、、こうなります。
こんな感じで、Playerというclassを初めに定義し、インスタンス変数として『名前』等のステータスを引数として取れるようにします。
このclassを使って、勇者と戦士を作ってみましょう。
それぞれ上記の一行で済んでしまいます!
これなら、バンバン酒場で仲間を増やされても、楽チンですね!!
こうして作成したプレイヤー達を「オブジェクト」といいます。
各ステータスを属性として保持する、実態化したプレイヤーなのです。
なので、例えば、こうやって各属性が取り出し可能です。
更に、classには関数を定義することもできます。
例えば、全属性を出力するplayer_info関数を以下のように書いてみます。
勇者と戦士を作成したオブジェクトに対し、上記関数を実行すると・・・
ばっちりですね!このようにclassを定義して、オブジェクトを作成するとオブジェクトに色んな属性や関数を持たせることができるため、とても効率的にプログラムが書けるのです。
一番わかりやすい言い方は「設計図」だと思っています。progateでもそう説明されていました。
オブジェクトを量産するための、ベースとなる設計図があることで、オブジェクトの生産が効率的にできるということです。
別のサイトでもPython入門講座を書いていますので、良かったら遊びに来てくださいね!!
次回は、更にclassを活用できる「継承」等について書きたいと思います。
ちなみに、僕は自力で理解しようとしたので、classやオブジェクト指向の意義が理解できず、半年ほどプログラミングから逃亡する経験をしましたwww
この記事が、そんな僕みたいに挫折しかかっている誰かの足しになればと願ってます!読んでいただきありがとうございました。