質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

6回答

4839閲覧

関数でなくクラスを使うと何が便利なのでしょうか?

nikuatsu

総合スコア177

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

4クリップ

投稿2022/05/24 07:17

編集2022/05/24 07:44

前提

クラスを使ったことがなくその利便性が理解できません。
関数でできるのになぜ使うのかを知りたいです。

現状の関数

現状では次の関数apply_row()を用いて、INSERT, DELETE, UPDATE などの処理をまとめています。

php

1// INSERT, DELETE, UPDATE の共通処理 2function apply_row( $type, $args ){ 3 $result = []; 4 5 // INSERT 6 if ( $type === 'insert' ) { 7 $result = insert_row( $args ); 8 9 // DELETE 10 } else if ( $type === 'delete' ) { 11 $result = delete_row( $args ); 12 13 // UPDATE 14 } else if ( $type === 'update' ) { 15 $result = update_row( $args ); 16 } 17 18 return $result; 19} 20 21// INSERT 22function insert_row( $args ){ 23 $sql = "INSERT INTO tbl (name, age) VALUES ($args['name'], $args['age']);"; 24} 25 26// DELETE 27function delete_row( $args ){ 28 29} 30 31// UPDATE 32function update_row( $args ){ 33 34} 35 36// INSERTを実行 37$args = ['name'=>'a','age'=>20]; 38$result = apply_row( 'insert', $args );

試したクラス

上記の関数に対し、ある方から「クラスを使うべし」とアドバイスを頂きました
そこで初めてクラスを調べ、上記関数と同じ動作を実現するクラスを書けたかと思います。

php

1// INSERT, DELETE, UPDATE の共通処理 2class apply_row { 3 public $id; 4 public $name; 5 public $age; 6 7 public function __construct( $args ) { 8 $this->name = $args['name']; 9 $this->id = $args['id']; 10 $this->age = $args['age']; 11 } 12} 13 14// INSERT 15class insert_row extends apply_row { 16 public function apply(){ 17 $sql = "INSERT INTO tbl (name, age) VALUES ({$this->name}, {$this->age});"; 18 } 19} 20 21// DELETE 22class delete_row extends apply_row { 23 public function apply(){ 24 25 } 26} 27 28// UPDATE 29class update_row extends apply_row { 30 public function apply(){ 31 32 } 33} 34 35// INSERTを実行 36$args = ['name'=>'a','age'=>20]; 37$insert_row = new insert_row( $args ); 38$insert_row->apply();

ですが、こうしてクラスを使うと何が便利なのか、よくわかりません。
クラスの利便性とはどのようなものなのでしょうか?

また、現状私のアプリケーションは全て関数で構成されているのですが、上のようにすべてクラスに置き換えた方がいいのでしょうか?

hoshi-takanori👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/05/24 07:24

クラスという概念は、オブジェクト指向プログラミングから来ているのですが、オブジェクト指向プログラミングについての理解はどのくらいでしょうか? オブジェクト指向プログラミング(OOP)とは - 意味をわかりやすく - IT用語辞典 e-Words https://e-words.jp/w/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0.html
nikuatsu

2022/05/24 07:30

コメントありがとうございます。「機能を最小限に分割して、必要に応じて組み合わせるという原則」のように捉えています。なので「細かい機能の関数に分けておけばいい」と考えていおり、やはりクラスを使う必要性に至れないのです。
hoshi-takanori

2022/05/24 07:31

質問文のコードの場合、クラスは 1 つで、insert, delete, update はメソッドにすると良いのでは。
nikuatsu

2022/05/24 08:15 編集

コメントありがとうございます。その正確な記述は不明ですが、恐らく class insert_row、class delete_row、class update_row の3つを、class apply_row の中に入れ、3つ共 class でなく function にする。というイメージを仰っているのかと思います。 しかし分からないのは、 「その class apply_row{} というクラスの中で、3つの関数を実行すること」は、 「現状の function apply_row(){} という関数の中で、3つの関数を実行すること」と比べて何が便利なのか? という点です。 (もちろんこのような質問だけの狭義にとどまらず、広くクラスの利便性をこの機会に掴みたいというのが本意ですが。)
Zuishin

2022/05/24 08:17

私が低評価したわけではありませんが、謎な回答なので低評価が二つついています。 回答の真意を本人から詳しく聞いてみてはどうでしょうか? その質問特有の問題だと思うので、一般論では語れないのではないかと思います。
nikuatsu

2022/05/24 08:26

コメントありがとうございます。低評価が二つついた謎な回答とは、どちらの件でしょうか?
Zuishin

2022/05/24 08:27

質問からリンクされている、この疑問の発端になった回答です。
nikuatsu

2022/05/24 08:34

あ、なるほどあちらの質問でしたか。ありがとうございます。
m.ts10806

2022/05/24 09:27 編集

タイトルだけに応えると、過去に多く語りつくされてきているものなので、 過去質問、Web検索 して一通り読んでから来た方がいいです。 そのほうが回答もしっくりきて、今後どう活用できるかまで見えるはずです。
nikuatsu

2022/05/24 09:37

コメントありがとうございます。ネットにある一般論や例で理解する力が無いので、自分の例で質問させて頂きました。大変申し訳ございませんがどうかご容赦ください。
m.ts10806

2022/05/24 09:53

回答も結局ネットにある一般論や例と変わらないですよ。
nikuatsu

2022/05/24 09:56

そうなのですね。ネットで見つけることができずに質問してしまい大変申し訳ございません。
m.ts10806

2022/05/24 10:49

質問内容から何も調べずに質問してるような印象を受けましたので。
nikuatsu

2022/05/24 11:23

そうでしたか。確かに何を調べてどうわからないのかきちんと書かないとダメですね。大変申し訳ございません。
guest

回答6

0

ベストアンサー

それを素直にクラスにするとこんな感じでしょうか。ポイントは、

  • 適切なクラス名を付ける (name と age があるので「人」としてみましたが、ユーザーとか、選手とか、目的に応じて適切な名前にすると良いでしょう)
  • 人ごとに別々のオブジェクト (インスタンス) を生成する
  • 人に対してできる操作をメソッドにすることで、対象->操作() という統一した書き方になる

php

1// 人を表すクラス 2class Person { 3 public $id; 4 public $name; 5 public $age; 6 7 public function __construct($id, $name, $age) { 8 $this->id = $id; 9 $this->name = $name; 10 $this->age = $age; 11 } 12 13 // INSERT 14 public function insert() { 15 $sql = "INSERT INTO tbl (name, age) VALUES ({$this->name}, {$this->age});"; 16 } 17 18 // DELETE 19 public function delete() { 20 // TODO 21 } 22 23 // UPDATE 24 public function update() { 25 // TODO 26 } 27} 28 29// INSERTを実行 30$person = new Person(null, 'Taro', 20); 31$person->insert();

元の関数を使った書き方では、$args = ['name'=>'a','age'=>20]; が 1 人のデータを表していると思います。これに対して、上のクラスを使うと $person = new Person(null, 'Taro', 20); になります。この 2 つを比べると、

  • クラスを使うと、それが何のデータなのかがはっきりする
  • 連想配列を使う場合、キーの綴りを間違えたり、キーを追加・変更するのが面倒では
  • 関数の場合、関数とそれにわたすデータの組み合わせを間違えないようにする必要がある

などの違いがあるかと。

投稿2022/05/24 08:55

hoshi-takanori

総合スコア7895

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nikuatsu

2022/05/24 11:19 編集

> 人に対してできる操作をメソッドにする こういう理解はありませんでした。なるほど。 従来私がやっていた関数は、操作(追加など) の中で 対象(人) を分岐するもの↓という感じで、 function 追加( $target, $args ){ if( $target === '人' ){ } } 他方クラスは、対象(人) の中に 操作(追加など) があるもの↓なのですね。 class 人( public function 追加(){}; public function 削除(){}; ) であれば確かに、 > クラスを使うと、それが何のデータなのかがはっきりする と言えて、関数との違いが明確になりますね。なるほど。 こちらのご回答は「関数をどうクラス化したらいいのか」という指針において、大変重要なアドバイスになりました。 すなわち「操作対象をクラス化し、操作内容をクラス内に関数化する」ですね。腹落ち致しました。 誠にありがとうございます。
hoshi-takanori

2022/05/24 10:29 編集

オブジェクト指向はさんざん語り尽くされてきたテーマではありますが、それでも路頭に迷う初心者がいっぱいいるので、たぶん一般論や他人が考えた例ではなかなか身に付かないんだと思います。 今回の質問は、質問者さんが重要だと思ったポイントを端的にまとめたコード例を貼ってくれたので、有意義なものになったんじゃないかと勝手に思ってます。
nikuatsu

2022/05/24 11:21

2年以上わからないまま放置して関数だけでやってきたのですが、今回初めて取っ掛かりを掴んだ感触があります。 本当に助かりました。
guest

0

クラスを作って使う意味ねぇ……そうだ
少し古い記事ですが、貴方と同じような事を感じていた頃に読んでたバイブルがあったので共有します。

参考記事: PDOの真の力を開放する - PHPでデータベースを扱う(3)
関係ないけど1-2話目が読みたければこちらの記事から飛んでね

これを読んでからPHPのフレームワークの実装・使い方をいくつか調べましたが、
当時この記事の実装・思想のレベルが高すぎて、
記事と比較するとフレームワークのDB周りの実装は初心者が書いたクソコードにしか見えませんでした。

私はそれからPHPからNode.jsに移ったのでPHPの最新のフレームワークのことはわかりませんが、
今でもこの思想は十分通用すると思います。
デフォPDOを操りながら一度はこの思想で自分のシステムを仕上げてみることをオススメします。

そこから自分が考える最強のDBフレームワークの実装を盛り込んで試行錯誤して……
こういう経験があれば一気にオブジェクト指向プログラミングの経験値も身につきますしね。


さて、一般的なオブジェクト指向プログラミングは何が素晴らしいのでしょうか?に関しても記載していきます。

別に関数でも全てを表現出来る。
クラスやオブジェクト指向プログラミングなんて要らん。
それも真実です。

しかし可読性を考慮した場合、
オブジェクト指向プログラミングの存在意義が見えてきます。

可読性は様々な意味を含む広い意味の単語なので、
その中でも「インスタンス変数を減らせ」に絞って記載していきます。
参考記事: 良いコードの書き方 - Qiita


質問者さんは一つのPHPファイル、一つの関数の中で何個の変数を宣言していますか?

変数は小説で言う「登場人物」に相当します。
読者は小説の情景を思い描き、そこに登場人物を配置していきながら読み進めます。
実はこの登場人物を思い描くというのは、とても頭に負荷がかかる重い作業なのです。

小説で同じ場面に10人も20人も詰め込んで交互に喋らせるようなのは粗悪な駄文です。
なのでもし小説を書くなら、登場人物は常に削れ・キャラ被りさせるな、お前居なくても話が進むようにしろとなるわけ。
余程の場面で無ければそもそも同行させない・仲間同士で一塊にしてやる工夫が必要となります。

コードも同じです。
PHPは変数を定義しないとコードを書き進めるのが難しい言語で、
常に5個程度の変数を同時展開するような状況に陥りがちです。既に可読性は最悪です。
あなたは既に上司・レビュワーから1個でも良いから変数は多く削れと常に怒られています。

そんなクソみたいな状況を救ってくれるのがクラスです。


クラスから生成したインスタンス君。

インスタンスはプロパティを何個でも所持出来ます。
動作に必要なインスタンス変数は全部中に突っ込みましょう。

インスタンスはメソッドを所持出来ます。
関数を包んで持たせてあげましょう。

そしたら値1個だけ持ち回せば良いので話が早いですね。
言うなれば「なんでも解決してくれますボタンがついたスイッチ」をポケットに入ってる状況になるよって事。
これが第一段階のカプセル化です。

これだけだとやってる事をクラスの中に丸投げしてるだけなんで、何も解決してないですね。
クラスの中は死ぬほど読みづらいままです。
次の施策が必要になります。


次に必要なのはDIコンテナです。

検索すると小難しい話がいくらでも出てきますが、
要はプロパティにインスタンスを保存させて、必要になったタイミングで決め打ちでメソッドを叩けって事です。

インスタンスを「なんでも解決してくれますボタンがついたスイッチ」と表現して進めて行きますが、
一つのクラス・インスタンスの中で所持出来るインスタンスをもたせたプロパティは複数です。

大きな仕事を細分化させた、「ぷち問題を解決してくれるボタンがついたスイッチ」を沢山用意してプロパティとしてもたせましょう。
if-else文で押すボタンを制御したり、
10個のインスタンスを並べてforeach文で次々とボタンを押したり、
仕事をどんどん細分化していきましょう。

トリッキーな所としては、
「お前(インスタンス)はこの情報持ってるだろ?お前の所で情報包んで作った新しいインスタンス用意してreturnでこっちにくれない?」みたいなやり取りも出来ます。
最初に話したPDOの記事ではsaveメソッドを準備したインスタンスを即席で作って返す離れ業をやってのけます。
なのでプロパティの値を上書きしてsaveメソッドを叩けばSQL文のupdateが起動するんですね。

最終的には「一つの事を上手くやるクラス」が大量にできて
それを「状況判断してインスタンスを使いこなすクラス」ができて
そいつに命令すれば全部やってくれるという流れが出来ます。


プロパティに想定外のインスタンス持たせて、
決め打ちで実行しようとしたメソッドがなかったらどうするねん。

プロパティやメソッドの存在証明はinterface継承を使いましょう。
また関数やメソッドで引数を受け取る時に型宣言しましょう。

これらの工夫により、決め打ちでメソッド実行しに行ってメソッドが存在しないとか、
同姓同名のメソッド名は存在するが、使い方が違って重篤な不具合を引き起こすとかという問題を未然に防ぐ事が出来ます。

後はDIを駆使して仕事を細分化する感覚を研ぎ澄ますだけです。
とはいえ、最低でもこの辺りまで学習が進まないと「オブジェクト指向プログラミングやクラスって便利だね」とは到底思えないですね。

長い道のりですが、PHPをやるなら避けては通れない道ですし、
RubyやPython、JavaScript等もオブジェクト指向プログラミング言語なので得た経験は無駄にはなりません。
頑張ってください。

投稿2022/06/01 06:31

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi-sun

2022/06/01 06:54 編集

実際問題、全ての処理をクラスに包んで1メソッドで完了までやると道のりが辛すぎて死ぬので、 1個の小さなテーマの中でオブジェクト指向プログラミングで作ってみてください。 例えばPDOを使ったDB処理周り(冒頭の話)とかね。 責務の範囲は明確だし、様々なフレームワークに模範解答例があるし、 オブジェクト指向プログラミング初心者が触るにはもってこいのテーマです。 その次はcurlを使ったHTTPリクエストを飛ばす機能とかあると嬉しいかもしれないですね。 curlをまともに使うとメソッドをあちこち叩きまくってすぐ+30行とか行くので可読性が最悪ですし。
nikuatsu

2022/06/05 13:14

ありがとうございます。メタファーにはいくつか目を通してきたのですが、やはり具体的なケースを何度も実践してみないと理解に至れないという感覚です。しばらく実践してからまた読み返させて頂きたいと思います。
guest

0

歴史を見ると、オブジェクト指向はGUIと共に発達したと言えると思います。
オブジェクト指向言語では、インスタンス生存中はインスタンス変数として状態を保持する特徴があると思います。
例えばGUIオブジェクトなら、位置、形状、色などを、インスタンス変数として状態を記憶するという事です。
GUIではその特長を使って、複数のオブジェクトを生成し、各々を移動したり変形させたりします。
このように、オブジェクト指向には関数の様なステートレスな使い方とは異なる特徴があると言えるのではと思います。

投稿2022/05/31 03:23

szkhd

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nikuatsu

2022/06/05 13:15

ありがとうございます。
guest

0

ことさら説明文を考える手間も時間も惜しいので、
学べる教材をいくつか示すことにします。

15分でわかる かんたんオブジェクト指向 - Qiita
オブジェクト指向とは?メリットは?例を使ってわかりやすく解説! | Webpia
【初心者必見】オブジェクト指向を分かりやすく解説 | CodeCampus


ユーザーの追加・削除・修正、ですかね。
でも、システムの中では、例えばユーザーマスターに変更があると
組織マスターに影響が出たり、
権限マスターに影響が出たりと、
単体テーブルを操作するだけで終わらなかったりしますよね。

関数で処理を束ねるだけだと、
例えばユーザーを追加するぞっていう処理の中で、
ユーザーマスター、組織マスター、権限マスターなどそれぞれ操作する関数を呼びますよね。

これ、クラスで置き換えると、
クラス"ユーザー"のメソッド「ユーザー追加」を一つ呼ぶだけで、
その一連の処理を行う主体をクラス"ユーザー"の下で行うことができます。
もちろん、クラス"組織"、クラス"権限"など設けても良いです。

で、ユーザーじゃなく従業員だったら? 契約社員だったら? バイトだったら?
クラス"雇用"のメソッド「新規雇用」ってのに情報を渡すと、
そのメソッドの中でクラス"ユーザー"、クラス"組織"、クラス"権限"など駆使して
一連の処理をやってくれる、というふうになります。

で、もし組織変更が加わったら?
関数で処理を束ねるだけだと、
様々な処理を再度チェックして変更をすべての処理に加えることになりますけれど、
クラスで構成していればおそらくクラス"組織"をいじるだけで済むわけです。

保守性が良くなり、テストもしやすくなります。
そういうことなのかなと。
雑な説明ですが。

投稿2022/05/24 08:10

編集2022/05/24 08:35
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nikuatsu

2022/05/24 08:28

ありがとうございます。拝見させて頂きました。
nikuatsu

2022/05/24 09:01

加筆ありがとうございます。 一般ユーザー追加と、新規雇用によるユーザー追加では処理の流れが異なるが、クラスを用いればそこんとこを ”よしなに” してくれる。という感じですよね。 うーん、しかし関数を用いてもその引数に「新規雇用によるユーザー追加か否か」のフラグを渡しておけば、次のように ”よしなに” しれくれるだろうと思ってしまいます…。これも「> ユーザー追加を1つ呼ぶ」だけですし。 function insert_user( $args, $is_employment ){ if ( $is_employment ) { // 新規雇用によるユーザー追加 } else { // 一般ユーザー追加 } } 無論 ”よしなに” が意味する利便性こそが大きく違うのでしょうけれど、なかなか掴みきれません…。 クラスを用いた掲示板サイトのソースコードなど、実際の一連の流れが見れれば良いかもしれません。Gihubとか探したらありそうですね。
guest

0

関数が単一の機能だとするとクラスはそれを連携して利用する機能郡です
一定の動作をクラスにまとめておけばインスタンスから必要な機能を呼び出すことで
作業がやりやすくなります。

PHP

1$myclass = new myClass; 2$myclass->insert($args) 3$myclass->delete($args) 4$myclass->update($args)

投稿2022/05/24 07:56

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nikuatsu

2022/05/24 08:13

ありがとうございます。 $myclass = new myClass; $myclass->insert($args) のように、クラスを用いてインスタンスから必要な機能を呼び出すことと、 apply_row( 'insert', $args ); にように、関数の引数を用いて必要な関数を実行することと、 この2つの違いがやはり掴みきれません…。慣れですかね💧
hoshi-takanori

2022/05/24 08:55

$args は new myClass の引数にしたいですね…。
yambejp

2022/05/24 09:31 編集

クラスを利用するメリットについては本質的な話なので学習するしか無いでしょう クラスの基本としてカプセル化や継承、多相性などメリットがあげられますが それを便利だと思わないならそれまでです。 極端な話hello worldをクラスをつかって実装するのは無駄です。 なんでもかんでもクラスを使えという話ではないです。 たとえば普通にPHPで処理するにあたっても様々なクラスを利用します 命題のようなDB案件ではPDOのクラスを利用するでしょう。 手続き型の処理とオブジェクト指向型の処理があるので両方学習すれば クラスのメリットがつかめるかもしれません。 もちろん理解できないなら使わなくてもかまいませんが、より高度なことをするにつれ 様々な障害がでてきますので自己責任で対応ください
nikuatsu

2022/05/24 09:51

なるほど。手続き型というい方面でも調べてみます。ありがとうございます。
guest

0

クラスを使わずに済む、うちは殊更クラスを使う必要はありません
プログラム規模が大きくなって、関数やらソースの管理が難しくなってきたときに、その真価を発揮するものです
使用する関数の数が、数十以上の単位となったとき、クラス化する、というのを考えてみましょう

クラスは、多数の関数、変数をまとめて管理できる単位として使うことができます

投稿2022/05/24 07:55

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nikuatsu

2022/05/24 08:04

ありがとうございます。現状356個の関数がありました。クラス化は急務でしょうか。 しかしクラス化すべきか否かが「管理が難しくなったら」という線引きですと少し判別がつきません。 「管理が難しい」というのは、まぁ…そうですが、比較対象であるクラスの利便性を知らないために、「難しさ」がただの体感にすぎません。例えば1メートルの棒を渡されて「長いかどうか」を聞かれれば、まぁ…長いかなと答える感じです。クラス化による利便性で10センチになると知っていれば「1メートルは明らかに長い」と分かるのでしょうけれど。
Zuishin

2022/05/24 08:25

> 使用する関数の数が、数十以上の単位となったとき、クラス化する、というのを考えてみましょう クラスの使い方が間違っています。 必要ならば関数はいくつあっても問題ありませんし、少なければクラス分けしなくて良いというものでもありません。
y_waiwai

2022/05/24 08:35

まあ、クラスを使わないうちは機能ごとにファイルで分けたり、関数の接頭語を機能で統一したりとしてるかと思います これを、クラス名、という旗印のもとにまとめることができます こういう動作をする関数、という区分が、こういう機能を司るクラス、と、も一つ大きいくくりで考えることができ、より大きい単位で理解できるようになります
y_waiwai

2022/05/24 08:45

まあぶっちゃけ、クラスというものを実装するには、メモリも余分に食う、クラス管理で余計なオーバーヘッドがある、と、無駄に大きく遅くなるもの、ですが、 それでもなお、大規模なグループ単位で管理しやすく、理解しやすくなる、ということが、それらのデメリットを許容しても有り余るメリットがある、と考えられています #まあ、規模、と言うのはクラスの一面だけを表すもんですが、そんでも一番大きな存在理由だと思っとります
nikuatsu

2022/05/24 09:03

ご返信ありがとうございます。まさに仰る通り接頭語などで関数をたくさん作っている状況です。メモリなどのデメリットは初耳でした。やや抽象的で腹落ちできませんが、今後の理解の一助になるようなアドバイスをありがとうございます。
Zuishin

2022/05/24 09:08

メモリのデメリットはデマです。
y_waiwai

2022/05/24 09:27

まあ、クラス、というのもオブジェクト指向、ってのも、抽象的なもんなんで、実際にやってみてそのメリットを目の当たりにしないと理解しづらいかもしれません ですが、それが理解できたとき、世界が広がったことを実感できるかと思います
nikuatsu

2022/05/24 09:50

なるほど。お二方コメントありがとうございます。勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問