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

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

新規登録して質問してみよう
ただいま回答率
85.35%
オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

1176閲覧

オブジェクト指向プログラミングがわからない

inarizushi

総合スコア5

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2021/02/18 15:41

編集2021/02/18 15:43

現在、Three.jsでちょっとしたものを作っているます。
その際いい機会だからと、オブジェクト指向を用いてコードを書こうと思い実践しているのですが、いまいち勘がつかめないです。
具体的には以下の点でどうすればいいのかわかりません。

  1. よく一つ一つのファイルを小さくしろと言われますが、細かくしすぎるとimport、exportが大変なことになりそう(なった)
  2. ほかにもカプセル化しろとよく書かれていますが、何でもかんでもカプセル化してインスタンス化するべきなのでしょうか
  3. 共通の値などが複雑に絡み合っている場合(そもそもこのことが悪いのかもしてませんが)いちいちコンストラクターに渡してやったりするべきなのでしょうか
  4. 値等をまとめたファイルなどを作成するべきなのでしょうか

4. 値等をどう渡せばいいのでしょうか(VueでいうところのStoreのようなものを作る、引数を渡し続ける、継承を繰り返し続ける)
主には上記の4点などです。

なにか根本的な部分がつかめず、無理にオブジェクト指向にしようとすると、むしろ意味不明なプログラムになってしまいました。
漠然とした質問で申し訳ないのですが、何かしらのアドバイスを言えただけないでしょうか。

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

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

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

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

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

hentaiman

2021/02/18 16:33

> 何かしらのアドバイス これは > 無理にオブジェクト指向にしようとすると 無理にオブジェクト指向にしようとしなければいいだけですが、 > 漠然とした質問で申し訳ないのですが、 短めに元のコードと、オブジェクト指向化したコードを載せれば分かる事があるかもしれません
gentaro

2021/02/18 16:42

まず動作するプログラムを作るのが目的なのか、オブジェクトを学ぶのが目的なのか、ハッキリさせましょう。 前者が目的なら「無理に」と思うならやらなくていい。
miyabi_takatsuk

2021/02/18 18:38

Three.js始め、他のライブラリとかは参考してみましたか?
guest

回答3

0

オブジェクト指向を用いてコードを書こうと思い
~~~
むしろ意味不明なプログラムになってしまいました。

いきなりエディタ上でコードを書き始めているのですか?
簡単なプログラムであったり、あなたが達人の域にいるならそれでもいいかもしれませんが、それなりのプログラムを書くのなら、実装行為の前に分析~設計フェーズをきちんとおいてみてはいかがですか。

とりあえず、クラス図など描いてみてはいかがでしょう。構造の整理に集中できると思います。

投稿2021/02/18 21:58

thkana

総合スコア7703

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

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

0

ベストアンサー

よく一つ一つのファイルを小さくしろと言われますが

どのよう単位で細かくしているかにもよりますが、機能別に分けた場合は至極合理的なので、importが多くなっても適当であると思います。
ようはimportだらけになるのは一般的だと、いうことです。
ただし、一つの大枠の機能で扱うべきものを、ただ一計算を行うだけの機能部分を分けるなどの極端な詳細分割は、分けすぎになるかと。

ほかにもカプセル化しろよとよく書かれ

なんでもかんでも、とは限りませんが、
一つのまとまった機能は、カプセル化すべきです。
それは、保守性に優れる事が大半だからです。
カプセル化しない場合、同じ処理を修正する時、書いた箇所毎に修正しなければいけない、
他のライブラリを読み込んだ時に、名称が被り、コードの保全がされない、
などの、多くのエラーの原因になったり、効率化が損なわれます。
カプセル化によってそれを防ぐことができます。

共通の値などが複雑に絡み合っている場合(そもそもこのことが悪いのかもしてませんが)

実装したいものによります。
コンストラクターに渡す時は、多くの場合は、
複数のインスタンスを扱う必要がある時です。
(各インスタンスで違う状態にしたい)
なので、共通の値を渡す、のであれば、
そもそもクラスの使い方がなっていない可能性があります。
処理の中で、共通の値を使って計算した値を使いインスタンスを生成する、ならわかりますが。

値等をまとめたファイルなどを作成するべきなのでしょうか

上記と似ていますが、コードの保守性の向上のためにすべきです。

値等をどう渡せばいいのでしょうか

私は、スタティックなプロパティのみを扱うクラスを作り、
そこから、各ファイルからインポートしてき、スタティックに値を呼び出す、という方法をよくとります。
幸いにして、JavaScriptはそれが可能な言語です。
(言語によってはかなり工夫が必要)

つらつらと書きましたが、
オブジェクト指向の話とは少し違うような気がします。
どちらかというと、プロジェクト実装のやり方の話題ではないかと。

投稿2021/02/18 19:04

編集2021/02/18 19:12
miyabi_takatsuk

総合スコア9555

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

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

0

よく一つ一つのファイルを小さくしろと言われますが、細かくしすぎるとimport、exportが大変なことになりそう(なった)

→1ファイル1クラスが基本です。

ほかにもカプセル化しろとよく書かれていますが、何でもかんでもカプセル化してインスタンス化するべきなのでしょうか

→人間がイメージ出来る形にカプセル化するといいです。
例えば「生き物」というカプセルを作り、そこから「動物」というカプセルを派生させる。さらにそこから「哺乳類」を派生させる。さらにそこから「類人猿」を派生させる。そして「人間」クラスを作る。

共通の値などが複雑に絡み合っている場合(そもそもこのことが悪いのかもしてませんが)いちいちコンストラクターに渡してやったりするべきなのでしょうか

→共通の値を意味のあるクラスにまとめた方が良いです。

値等をまとめたファイルなどを作成するべきなのでしょうか

→値だけを管理するクラスを作るべきです。

4. 値等をどう渡せばいいのでしょうか(VueでいうところのStoreのようなものを作る、引数を渡し続ける、継承を繰り返し続ける)

→継承の意味をちゃんと理解していないと思われます。

投稿2021/02/18 17:06

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hentaiman

2021/02/18 17:22

一体なんの説明をしているの
退会済みユーザー

退会済みユーザー

2021/02/18 17:24

変態マン
退会済みユーザー

退会済みユーザー

2021/02/18 17:26

て言うか、この説明で理解できないお前もオブジェクト指向を理解してないんじゃん?
hentaiman

2021/02/18 18:15

だからなんの説明をしているの?
退会済みユーザー

退会済みユーザー

2021/02/18 18:16

オブジェクト指向の説明
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問