🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

オブジェクト指向

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

Q&A

解決済

3回答

1179閲覧

どのようなコードをオブジェクト指向というのかについて

makisan

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

オブジェクト指向

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

0グッド

0クリップ

投稿2021/03/12 12:03

編集2021/03/12 12:18

例として、Javaなどのオブジェクト指向言語では、処理を記述する際に何らかのクラス内に記述すると思うのですか、そのように、何らかの処理がどれかしらのクラスに属して入れば、そのクラスの中でどのように処理されていても、それはオブジェクト指向で書かれているというのでしょうか?それとも、オブジェクト指向特有の、クラス内での処理の書き方があるのでしょうか?

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

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

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

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

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

m.ts10806

2021/03/12 12:03

何の言語を想定とした質問でしょうか。
makisan

2021/03/12 12:08

情報不足で申し訳ありませんでした。私としてはJavaを想定して記述しました。
m.ts10806

2021/03/12 12:09

質問に具体的に記載してください。タグも追加を。
hentaiman

2021/03/12 12:17

当サイトで「java オブジェクト指向」で検索したらたくさんヒットするのでとりあえず見てみたらどうですか
guest

回答3

0

「オブジェクト指向設計に基づいて実装されているコード」としか言いようがない。
オブジェクト指向設計原則がわかってないならググればいくらでも説明が出てくるけど

明確な境界線は存在しないんで、一部が原則から外れるケースもあるから、あとは主観の問題。

投稿2021/03/12 12:33

gentaro

総合スコア8947

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

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

makisan

2021/03/12 16:22

回答ありがとうございます。オブジェクト指向設計原則については詳しく知らなかったので、貼っていただいたリンクの内容がとても参考になりました。ありがとうございました。
guest

0

ベストアンサー

何を元にどういう方向性のアドバイス求めているのか分からないですが、
そもそも「概念」「考え方」なのでコードそのものを指すことはないです。

私としてはJavaを想定して記述しました。

Javaにおいて(というかほとんどの言語において)、全ての情報を「オブジェクト」として扱います。
変数1つ取ってもそうです。Stringやintも「そういう型のオブジェクト」です。
それらの情報をきちんと役割を与えてきちんと役割に合った仕事をさせること
が「オブジェクト指向」と言ってもいいと思います(100%の説明ってないです。概念なので)

なので、「すべての情報をオブジェクトで扱うよ」と言っても
役割曖昧で1つのメソッドであれもこれも詰め込んでしまっている場合は「オブジェクト指向から反する」と
言えるかもしれません。
ファットコントローラが一例です。

Javaであればパッケージも役割や意図をもって振り分けるべきだし、
依存しまくった作りはよろしくないです(「疎結合」「依存性の注入」で調べると良いです)

絶対の正解はないので、そこは考えるしかありませんし、アプリケーションによってそれぞれの役割は変わってくるので、CRUDのコア部分は同じとしてもコントローラやモデルの構成は要件によって変わってくることもあります。

投稿2021/03/12 12:05

編集2021/03/12 12:16
m.ts10806

総合スコア80875

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

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

makisan

2021/03/12 16:27

回答ありがとうございます。オブジェクト指向の考え方についてご教示いただいたおかげで、オブジェクト指向に対する理解が少し深まった気がします。教えていただいた用語を調べたり、過去質問を調べたりしてさらに理解を深めていこうと思います。ありがとうございました。
guest

0

オブジェクト指向については『調べてください』。
プロでも調べながらやっています。


オブジェクト指向(OOP)は『考え方』でしかないです。それ以上でもそれ以下でもないです。

OOPというのは、『データ(= フィールド) と処理(= メソッド) をひとまとめにしたオブジェクト』なるものを中心に見る考え方です。

オブジェクトだけが対象データと処理を知っている。だから管理を任せられる。
そういう考え方です。

そのオブジェクトを作るために、コンパイラやインタプリタに『こういうデータ構造があるので、よろしくね★』っていう提示をするためにクラスを定義します。
ただし、必ずクラスを組まないとOOPではない……ではないです。
JavaScriptの初期だと、クラスが無いです。その代わり、プロトタイプと呼ばれるものがあります。

そういう風にクラスは単にコンパイラとかに教えるだけのものです。

それで、定義するだけではオブジェクトが出来ません。なので newとかを使ってインスタンス化します。
C++の場合はnewを使わなくてもインスタンス化できますが。

メソッドはそのオブジェクトが行う処理。フィールドはオブジェクトが管理するデータ。

Javaでいう String を考えてみてください。

String s = "Hello";

としたら、オブジェクト s が持つデータは "Hello" ですね。
その処理として、『N番目のデータを取り出す』とか『空かどうか』をチェックしたり、
『文字列を分割』とかみたいなことが出来ますよね。

ヒント: String (Java Platform SE 7 ) - Oracle Help Center

そういう風に、オブジェクトだけが対象データや処理方法を知っているという状態にするために、OOPを用います。

だから『やればいい』っていう問題ではなく、『いつ使うか』とかが問題です。
使えば必ず良くなる……わけじゃないです。

順番が違うのです。クラス -> OOPだ!! ではなく、
OOPを再現するためにクラスやらなんやらがあるのです。

投稿2021/03/12 12:35

BeatStar

総合スコア4962

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

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

makisan

2021/03/12 16:20

回答ありがとうございます。ご教示いただいたオブジェクト指向の考え方を是非参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問