オブジェクト指向について勉強しています。
抽象クラスは実務でどういう形で使われるのでしょうか?
いまいちメリットがよくわからず・・・。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
解決されたようですが思うところを回答してみますね。
そもそもオブジェクト指向は「手段」であって必ず使わなければできないというモノはありません。
なので、ちょっと言い方良くないですが、
メリットだのなんだのを考えなければいけない状態で無理して使う必要があるものでもありません。
使わなくてもモノは作れます。もちろん使ってもモノは作れます。
その出来上がったシステムを使う側は要件通りに動けば中身なんてどうでもいいわけです。
さて、
おそらくこの質問を投稿するまでにネットで検索したり書籍などで考え方や基本などを学ばれたかと思います。
中には「5分でわかる!」なんて触れ込みの記事も目にしたかもしれませんね。
そのような記事は、検索すると上位に来ているものであれば、
それだけ注目度が高かったり読んだ人に何かしら影響を与えたり、評価が高いものと思われます。
つまり、そのような記事を以ても「いまいちわからず」という状態なのであれば、
ここであなたを納得させられる内容は、そのような優秀な記事よりも優秀な記事を回答として
書かなければなりません。
それは読む側からは「5分で読める、わかる」ものであっても書く側から「5分で書ける」ものではありませんね。
時には回答者自身の知識の裏付けをとったりミニマムコードを組んだり動作検証したり
質問者さんが理解できるようにかみ砕いたり文章にも工夫をしているかもしれません。
そこまでの時間や労力を割いて、優秀な記事や書籍以上のものが書けるのであれば、
とっくにネット上に記事を書いていたり、書籍を出しています。
つまり。
今追い求めるのは「オブジェクト指向ってなに」「抽象クラスってなに」「メリットって」ということではなく、
ちゃんと間違いのないプログラムを書くことです。
それが学校の勉強や新社会人であってもです。
メリットは生まれるものではなく、自分自身の力で生むものです。
プログラムは勝手に動くものはなく、自分自身の力で動くように組むものです。
プログラムは組んだようにしか動きません。
責任は参考にした記事やコピペしてきた記事を書いた人ではなく、
そのプログラムを作った他でもない自分自身です。
全てに意味のあるコードを書いてください。
それだけでどんなものでも「メリット」は作り出せます。引き出せます。
それがわからないうちは、手を出す必要はありません。
道具の使い方がわからないのと同じなので、そのメリットも最大限引き出すことはできませんね。
今、あなたもそれなりにコードは組んできたかと思いますが、
そのコードすべてに意味を持たせていますか?
オブジェクト指向を適用していない・できていないコードでも良いです。
そのコードで使っている関数はメリットを最大限引き出せていますか?
そこから考えてみてください。
参考まで。
投稿2018/09/28 10:00
総合スコア80850
0
ベストアンサー
たしかに勉強していると使用用途がわからず止まってしまう部分ではあります。
いろんな開発をしていくうちに分かるというのが経験則なのですが、
実務上での説明となると結構難しいですね。
実務上となると結構複雑というか大きな規模のものになりますし、
それを簡易的に説明するのが難しかったり、そもそもそういう話ができない場合もあります。
個人的に抽象クラスは以下のときに利用することが多いです。
・サブクラスの処理を共通化できる処理がある。(普通の継承と同様)
・サブクラス毎に呼び出しは同じだが、処理が異なるものがある(ココ重要)
なるべく伝わりやすい例でいうと、電話という抽象クラスがあり、サブクラスに
- 黒電話(ダイヤル回すやつ)
- ガラケー
- スマホ
というものがあったとします。
で、それぞれ電話をかけるという動作があるべきですが、かけ方は物によって異なります。
黒電話はダイヤルを回して電話をかけますし、
ガラケーはボタンを押して電話をかけます。
スマホはディスプレイをタッチして電話をかける
というように異なる処理になるので、親クラスで電話をかけるという処理を書くことができません。
しかし、電話をかける動作があることは明確にしておく必要があるので、抽象メソッドとして定義しておきます。
あくまでも説明のための例で、本当にこういう実装を実務でするかはわかりません。
一番の理解のためには少し規模が大きめのものを何かしら作ってみることです。
投稿2018/09/28 05:22
総合スコア5158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
抽象メソッドを定義できます。
抽象クラスから継承させたサブクラスで親のクラスの処理変えれますので、サブクラスごとに処理変えたいときに使えます
投稿2018/09/28 04:52
総合スコア16
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/28 04:54
2018/09/28 05:12
2018/09/28 05:14
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。