2023年5月14日日曜日

Q:質問:Pythonをビギナーで猛勉強中です。クラスの効果的な使い方がいまいち、よく分かっていません。普段クラスを使おうとするときは、どんなケースでしょうか?

https://jp.quora.com/Python%E3%82%92%E3%83%93%E3%82%AE%E3%83%8A%E3%83%BC%E3%81%A7%E7%8C%9B%E5%8B%89%E5%BC%B7%E4%B8%AD%E3%81%A7%E3%81%99-%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%AE%E5%8A%B9%E6%9E%9C%E7%9A%84%E3%81%AA%E4%BD%BF%E3%81%84%E6%96%B9/answers/1477743657644434#comments 


A:回答:

複雑な処理を行う時に使います。

クラスの一番大事な性質は「カプセル化」です。

つまり、クラスにすることで、「クラス内の事を外部から見れなくする」することで「1つの部品」にすることが出来るのです。

クラスを操作するには「メソッド」経由でないと出来ません。

つまり、メソッド経由で来た情報をクラス内だけで処理すればいいのです。

「イッツアスモールワールド」ですね😊
小さければ小さいほどデバッグはしやすいのです。

例えば真と偽だけを持つ変数でもそれが10個あれば1024の状態を持つのです。

これが5個の変数を持ったものなら32の状態に減るのです。32の状態をデバッグすれば済むのです。

小さい事の有用性がわかりますでしょうか。多分初心者のうちはわからないですよね😅

大規模開発をしない時でも「クラス化することで簡単に使いまわせる」というメリットがあります。

クラス化するのは面倒ですが、一度クラスにすれば後は「コピー」で使いまわせるのです。

ーーー

プログラムには「複雑度」というのがあり、複雑になる程プログラムのデバッグが大変になります。

UML図を覚えて下さい。

ユースケース図で必要な登場人物(物)を洗い出します。

その一つ一つがクラスになります。

シーケンス図でクラス間のメッセージのやり取りを書きます。メッセージがクラスのメソッドになります。

その後クラス図を書いて必要なプロパティを決めます。

クラスというのは外部とはメソッドでしかやり取りせず、クラス内は外からは見えません。

これを「カプセル化」と言います。

つまりクラス内の事はクラス内で閉じてクラス外の影響を受けないのです。

これがクラスの最も重要な機能です。

最初に述べた「複雑度」をカプセル化で減らす事が出きるのです。

大規模なソフトウェア開発を行うほどこれは重要になります。

小規模な開発でクラスが役に立つのは「使い回し」です。

クラス化しておけばカプセル化しているのでクラスを別なソフトで使うのも簡単なのです。

想像してみて下さい。

クラス化されていないベタ書きのコードから一部を取り出して別なプログラムに使おうとすると、必要な変数やコードが何か調べないといけません。

クラスはそれに必要な機能がクラス内だけに収まっているので他のプログラムにそのままクラスをコピーするだけで使えるのです。

もう一つのクラスの見つけ方に「バウンダリー」「エンテェティ」「コントローラー」でクラスを見つける方法があります。

バウンダリーは外部とのやり取りを行う所、エンテェティは内部的な塊、コントローラーはそれらを制御するものとしてクラスをわけます。

ロバストネス分析の目的 - Qiita
ロバストネス分析の目的 ロバストネス分析は、詳細設計の前に実施する予備設計です。予備設計をすることによってシーケンス図やクラス図を作成するときに仕様の詳細について調べたり考えたりする時間を省略することができます。ロバストネス図作...
石塚 正浩さんのプロフィール写真

クラスの効果的な使い方はモデルを使うこと
モデルの出番は複雑なシステムを作るとき
って事ですね!

実に真実だと思います。「勉強中」の「ビギナー」が実物に出会うのはだいぶん先かもしれませんが。

あまりに複雑すぎて変数を誰が変えているのかわからないくらいの規模のコードを見たことがないとカプセル化のありがたみがわからないかも知れませんね。

水谷 哲さんのプロフィール写真
この質問に対する他の5件の回答を表示

0 コメント:

コメントを投稿