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

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

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

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

Q&A

解決済

7回答

860閲覧

オブジェクト指向がいまいち理解できません

kobe2018

総合スコア21

Java

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

1グッド

4クリップ

投稿2020/07/04 13:39

編集2020/07/04 15:26

オブジェクト指向が分からなくなってきました。

最初にオブジェクト指向を学んだとき、以下のような例がでてきました。

例)Hero(※簡単なRPGをプログラムする際の主人公を意味します)
Heroクラス   :ヒーローが備えるべき性質、行動をまとめたもの(設計図)
Heroインスタンス:実際のヒーロー(人)

これは理解できました。しかし、実際に存在しないものに関してはどうしても違和感があります。
例えば以下のクラスとインスタンス。

例)StringBuilder(文字連結)
StringBuilderクラス   :文字連結に必要な操作をまとめたもの
StringBuilderインスタンス:???

なぜインスタンスをつくるのかわかりません。
Heroの例にたとえると、文字連結の実際の何か???(書いていてわからない)
インスタンスを作らずStaticメソッドだけでいいのではと思ってしまいます。

なぜインスタンスを作るのか、そのインスタンスはどういう役割をしているのか、教えて頂きたいです。

追記
皆さん、回答ありがとうございます。
回答を読んでなるほどと思った反面、もう少し時間を置きたいと思いました。
というのも、いままでしっくり来ていなかったことなので、分かった気になっているだけかもしれないからです。
もう一度、自分の中で本当に理解できているのか、疑問点はないのか確かめたうえで回答およびベストアンサーを決めさせていただきます。

nico25👍を押しています

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

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

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

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

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

Zuishin

2020/07/04 14:37

わからなくなったのではなく、最初からわかってないのです。 Hero の例をうのみにしたことにより、わかったつもりになっただけです。 オブジェクト指向を物にたとえてしまうと、そこで嘘が刷り込まれてしまい、理解にかなり時間がかかるようになる上に完全に抜け出すのがとてつもなく困難になりがちです。 Hero や犬や車や電子レンジの例は可能な限り早く忘れ、そのような一見わかりやすく見える本は捨てましょう。
m.ts10806

2020/07/04 23:07

本だけ読むより実際に設計してみてそれぞれの役割を考えた上でオブジェクトを整備してたくさんコードを組んでいった方が理解か深まるでしょう。 つまり、本質問のゴールを「オブジェクト志向の本質的理解、使いこなす」に置いてしまうとしばらく解決できないことになります。 もう少しゴールを近くに置いた方が着実に進むのでは
guest

回答7

0

ベストアンサー

なぜインスタンスを作るのか、そのインスタンスはどういう役割をしているのか

たとえば、

java

1String hero = "ヒーロ"; 2String villain = "悪役";

というのがあったときに、hiroとvillainが異なるっていうのは、わかりますか?

当たり前じゃない

って思うでしょ?
そう、当たり前なので解説を見ないのですが、異なる変数に異なるインスタンスを作るって結構あたりまえなのです。

なんでか?っていうと変数は一時的なものが多く、どんどん変更されることが多いため
使い切りになるケースが少ないからです。

StringBuilderも文字列加工は途中の状態がいくつも続くor 続けられるように
インスタンス化して別々の文字列を加工できるように設計されています。

以下のような場合に、複数インスタンスが作れないと面倒くさそうだなというのが、わかると思います。

java

1StringBuilder heroNames = new StringBuilder(); 2StringBuilder villainNames = new StringBuilder(); 3for(story : storys) { 4 heroNames.append(story.getHero().name()); 5 villainNames.append(story.getvillain().name()); 6}

逆に状態を管理する必要がない。
または複数のインスタンスで共通にしたいものがスタティックで設計されます。

たとえば、String#join なんかは、加工するというか、ただ連結するだけですがスタティックなメソッド
なので、インスタンス化せずに利用できます。

同じクラスでも個々に状態を簡単に管理したいというのがインスタンス化したい。
という理解でよいと思います。

※既回答にありますが、インスタンス化しなくても、そのように設計/実装すれば複数の状態を管理することはできます。

投稿2020/07/04 14:50

momon-ga

総合スコア4826

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

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

kobe2018

2020/07/04 15:12

回答ありがとうございます。 インスタンスの作成は個々の区別のため、というのがしっくりきました。 確かにStringBuilderもバッファーを個々に管理できると提示していただいた例では便利だと思います。
xebme

2020/07/06 02:54

異なる状態を管理したいからインスタンスが必要 状態とはクラスの(複数の)フィールドの値でメモリに存在する 状態が矛盾しないように管理したければカプセル化してメソッドを用意する 「スッキリ…」の文章をよく読むとこんなことが書いてありますが、文章は記憶に残りません。だからこれは絵本ですね。絵本からいきなり大人の会話について行こうとすると悩みます。 Heroでわかったつもりになっているのは、現実の事物の比喩としてプログラムを見ているからです。オブジェクト指向とは、プログラミング世界のなかの構造、振舞いの比喩です。インスタンス、is-a、has-a構造なのであって現実世界とは関係ありません。
Bindi

2020/07/10 13:16

低評価の理由 > 異なる変数に異なるインスタンスを作るって結構あたりまえなのです。 異なる変数に同じインスタンスを作ることもある。そのまえに変数じゃない、それは、オブジェクト。 また StringBuilder heroNames = new StringBuilder(); StringBuilder villainNames = new StringBuilder(); このとき、heroNames と villainNames は同じもの。異なるものと説明しているのに、同じものになっている。 > 変数は一時的なものが多く、 そんなことはない。プログラム起動時に作って、終了まで使う変数はある。変数ではなくてオブジェクトだが。 > どんどん変更されることが多いため使い切りになるケースが少ないからです。 そんなことはない、変更しないで比較対象だけにすることもある。基準値(基準オブジェクト)として。 > 文字列を加工できるように設計されています。 設計どうのこうのいうより、StringBuffer の責務を説明したほうがいい。設計うんうんいうのなら、ソースコードがどうなっているのか説明すべき。そうすれば、あぁ、そうして設計しているんだなってわかる。 > 同じクラスでも個々に状態を簡単に管理したいというのがインスタンス化 個人の主観であって、実際に実装した人の考え方ではない。 status を management ? その理由がインスタンスの生成の理由になるとは思えない。 一番さいご、質問者が > もう少し時間を置きたいと思いました。 私も質問者と同じ気持ちになりました。この回答では理解ができない。
guest

0

インスタンス や static の使い道は momon-ga さんの回答で既に述べられているので省略します。

加えて、全てのメンバーに対して static をつけて作ったらどう困るか という視点で考えるのも疑問点を整理する1つの手だと思います。試しに架空の StringBuilder を作り、全てのメンバーを static にしてみましょう。

java

1public class StringBuilder{ 2 private static String value = ""; 3 public static void append(String s){ 4 value += s; //説明するために & 実装が楽なのでこうしている 5 } 6 7 public static String convertToString(){ 8 return value; 9 } 10} 11public class Main{ 12 public static void main(String[] args){ 13 //"Hello,Takashi."と出したい 14 printHello("Takashi"); // Hello,Takashi. 15 16 //"Hello,Masaru."と出したい。しかし… 17 printHello("Masaru"); // Hello,Takashi.Hello,Masaru. 18 } 19 20 public static void printHello(String name){ 21 StringBuilder.append("Hello,"); 22 StringBuilder.append(name); 23 StringBuilder.append("."); 24 System.out.println(StringBuilder.convertToString()); 25 } 26}

StringBuilder の全てのメンバーが static だった場合、こういうときに困りませんか。
他のクラスに関して同様の違和感を感じた場合も、上記と同じように もし〇〇がなかったらどう困るのか という視点で考えると同様に疑問点が整理できると思います。


疑問点は、インスタンス化しなくてもできるのに、なぜインスタンス化するのか。

先に結論を書けば、**オブジェクト指向プログラミングができないから**です。オブジェクト指向プログラミングができず、Javaという言語を利用して効率的にコードを組めないからです。

Javaは(クラスベースの)オブジェクト指向プログラミングという[プログラミングパラダイム](https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%83%91%E3%83%A9%E3%83%80%E3%82%A4%E3%83%A0#:~:text=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%83%91%E3%83%A9%E3%83%80%E3%82%A4%E3%83%A0%20(%E8%8B%B1%3A%20programming%20paradigm,%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%91%E3%83%A9%E3%83%80%E3%82%A4%E3%83%A0%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82)を有しており、当然言語仕様もそれに合わせて作られています。クラスベースなオブジェクト指向言語において、インスタンスの生成は効率的にコードを書くために必要な手段になります。

一方、staticはJavaのMathクラスのような副作用のないメソッドを呼び出す場合においてはstaticである方が便利です。しかし、オブジェクト指向プログラミングを行う場合においては別で、staticなメソッドを呼び出す際はあらゆるオブジェクト指向の機能が使えません。例えば、継承・実装・ポリモーフィズム・カプセル化などが該当します。

オブジェクト指向を使うことのメリットは変更に対して柔軟になることですから、継承・実装・ポリモーフィズム・カプセル化を使わずにstaticで実装するとなると、めちゃくちゃなプログラムが出来上がるでしょう。

「副作用なんて悪いことばかりだし、必要ないじゃん」
「オブジェクト指向なんていらないじゃん」

と思われるかもしれません。(思わなかったらスルーしてください)
確かにその考えもその通りです。

しかし、先述したようにJavaのプログラミングパラダイムがそのようになっていますから、Javaにおいてはオブジェクト指向を利用したコーディングをする方がstaticで対応するよりも効率的です。そうなるよう言語仕様が決まっているのです。

なので、もし kobe2018 さんが本当に「オブジェクト指向なんて抽象的で分かりづらい、全部staticで良いじゃん」と思われるようであれば、プログラミングパラダイムは1つだけではありませんから、色々な言語を触ってみると良いと思います。
(副作用があることが嫌なのであれば、関数型言語はいかがでしょう。私は興味ありますが、触ったことはありません)

投稿2020/07/04 18:13

編集2020/07/10 15:51
BluOxy

総合スコア2663

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

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

kobe2018

2020/07/06 12:04

回答ありがとうございます。 valueを2個自分で用意すればと思ったのですが、そうなると自分の手間が増えてしまいますね。 個別でvalueを用意する手間をStringBuilderが担ってくれているとわかりました。
Bindi

2020/07/10 13:30 編集

> こういうときに困りませんか。 どういうときですか?状況の説明がない。 「こういう」というあいまいな言葉を使って説明しても、相手に伝わらない。 static で作っても困ってないから、なぜ?って質問しているのに、困るのか考えてくださいという回答は、適さない。 疑問点は、インスタンス化しなくてもできるのに、なぜインスタンス化するのか。 static で困ってないのに、どうすれば困ることができるのかの説明がない。 質問者と同じ気持ちです。 わかった気になっただけで、まったく理解ができない回答です。
BluOxy

2020/07/10 17:37 編集

師匠、コメントありがとうございます。 疑問について自分なりの回答を書いてみましたが、これでは伝わらないでしょうか。 > kobe2018 さん 解決した後にはなりますがよろしければ読んでください。伝わらない部分があれば、それももしよろしければ、何が分からないか教えてください。より良いQ&Aが出来れば幸いです。
BluOxy

2020/07/10 17:36 編集

※余談 … 2020/07/10 11:10 と 2020/07/10 11:17のコメントはBindiさんを批判したくて書いた訳ではないことが伝われば嬉しいです。 正直な話、特に他意もなくふとした疑問を投げたつもりだったので、「それは違うんじゃねーの?」とか「お前がそう思うならそれが質問者が求めていたものなのかもな、知らんけど」とかの反応が来たり、もしくは有益でも何でもないコメントだからと返事なくスルーされたりする程度だと浅はかに考えていました。
Bindi

2020/07/13 04:42

だから…。 批判でもいいです。疑問でもいいです。そこは問題ではない。 軽い気持ちなのもわかってたし、他意もないのもわかっていた。スルーすることもできた。 じっさい、疑問の返事を考えたけど、長くなって面倒になってやめようと思ったし。 あなたが「スルーされたりする程度」と思うように、スルーできると私も思った。 だから、問題はそのあとなのです。 そのあとの話が、お互い話が噛み合わなかったことが。 書いてあることは読まないし、自分に都合よく解釈するし、正当化するし。 > 浅はかに考えていました。 うん、だからなに?つづきは? なんでもかんでも、話の途中で終わらせるから、あなたの意図が伝わらない。 いいたいことだけいって、はいさようなら。そういうのを便所の落書きっていうんです。
BluOxy

2020/07/13 05:49

問題とは下記でしょうか。 > 否定はするなよ。人がどう捉えようと自由ではないか。わかりにくい説明をしている。その理由は混在しているから。だから混在させるなといってきた。それは理解できる。私もそれでは理解ができない。だから、賛同しない理由はそこではない。賛同しない理由は「混在していない」からである。 だとしたら、申し訳ないですが、私は問題が混在していると考えてコメントしたつもりはないので答えようがありません。他の問題は…申し訳ないですが、私の読解力では読み取れませんでした。 正当化したというより、私は自分がどんな悪いことをしたのかが分からないのです。つまり、問題を自覚していません。問題とは話を汲みとらないことでしょうか。私の感覚では、ふとした疑問を投げたらいきなり否定するなと怒られた感覚でいます。
BluOxy

2020/07/13 05:59 編集

> インスタンスを生成しないという表現を使わないのはおかしい インスタンスの意味が私とBindiさんで違っていたのかもしれません。 私の中のインスタンスとは、JavaScriptでいうconst hoge = {};であり、C#やJavaでいうHoge hoge = new Hoge();のような表現(どちらもオブジェクト≒インスタンスの生成)のことを想像していました。それがないオブジェクト指向言語とは何なのかと、純粋に疑問を抱いていました。
BluOxy

2020/07/13 06:02 編集

> あなたが言う、「差」がわからないのに、クラスベースの方を知りたいと断言する根拠 これは、単純に kobe2018 さんが、Javaのタグをつけて質問している(= Javaはクラスベース)ので、そうではないかと考えていました。まだクラスベース/インスタンスベースな言語の区別ができるレベルではないでしょうから。
BluOxy

2020/07/14 02:45 編集

本人がオブジェクト指向自体をよく知らない状況なので、今回質問しているJava以外の言語(とくに、JavaScriptやPHPのようなインスタンスベース)の回答はきっと分からないんじゃないかなあ…と思ってコメントしてみました。間違っていると書いたつもりも、否定したつもりもありません。(間違っているか厳密に精査はした訳ではありませんが)
guest

0

例)StringBuilder(文字連結)
StringBuilderクラス   :文字連結に必要な操作をまとめたもの
StringBuilderインスタンス:???

例えるなら「文字連結業」という職業がクラスで、その技術を身に付けたひとが「文字連結屋さん」というインスタンスです。クラスに書かれたソースコードが「文字連結業」を営むに当たって必要な作業が書かれたマニュアルです。

自分が具体的な手順を知らなくても彼または彼女に頼めば作業を行って結果を返してくれます。
必要なのは頼み方の手順を覚えることだけです。
その代わり「文字連結屋さん」は少なくとも文字連結業として期待される作業は実行できるようになっている必要があります。
行うべき作業を全部自分ひとりで行うのではなく、詳細を知る別のひとに作業を頼むことによって自分がやる作業の詳細を他人任せにすることが出来るようになります。

例え話から話を戻すと、クラス分割して必要な手続きの詳細をクラス内のソースコードに隠すことにして、必要に応じて呼び出し手続きを行うことが出来るようにすれば、その分呼び出し側の負担が減ることになります。
(ただしそうなるためには適切なクラス設計がされているのが前提です。)

投稿2020/07/04 15:17

編集2020/07/04 15:19
hidezzz

総合スコア1248

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

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

kobe2018

2020/07/06 12:09

回答ありがとうございます! 文字連結屋さんが複数いるのは、それぞれが詳細情報を担っているからというのが、インスタンスの考え方ですね。 具体例を頂き、ありがとうございます。
Bindi

2020/07/10 13:36

この中の回答では一番だが、最適ではない。 文字連結屋さんは個性をもてる。という説明がはいれば、良いかと思いました。 同じもののコピーなら、まじで static だけでいい。
hidezzz

2020/07/10 16:09

> インスタンスを作らずStaticメソッドだけでいいのではと思ってしまいます。 確かに質問者のこの疑問には答えられていなかったですね。 質問者のコメントを見る限り自ら疑問解決出来たようです。
guest

0

なぜインスタンスを作るのか

使いまわしできるように、です。
いかに使いまわしをして楽をするか、に重点を置かれてます。
同じクラスでも、ちょっと変えて使いまわしできるように、少々効率が悪くても、無駄が出ても、とにかく使いまわしで楽ができる、というこをと主眼に置かれています

投稿2020/07/04 13:44

y_waiwai

総合スコア88042

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

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

0

インスタンスやクラスがないオブジェクト指向のプログラム言語があります。なので、オブジェクト指向が、なんなのかを知ることとと、Java を知ることは異なります。

オブジェクト指向を理解していれば、 Ruby や Python は理解できるが、 Java のオブジェクト指向の実装を理解しても、JavaScript は全く理解できないと思います。

質問に答えると、 インスタンスを作るという実装をしているから、インスタンスを作っている。
(もう少し突っ込むと、クラスという実装をしているから、インスタンスが必要になってくるのですが。)

インスタンスを作らずStaticメソッドだけでいいのではと思ってしまいます。

そのとおりです。そのようなプログラム言語はあります。

特定のプログラム言語を用いない、オブジェクト指向プログラミングの書籍があればよいのですが…。

投稿2020/07/09 03:33

Bindi

総合スコア129

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

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

momon-ga

2020/07/09 03:40

オブジェクト指向と、プログラミング言語とオブジェクト指向プログラミングの話を混在して語ろうとしてるので、わかりにくいと思いますし、初心者には何いってるか、わからないのでは・・・
Bindi

2020/07/09 04:10

混在している? ということは、オブジェクト指向と、プログラミング言語と、オブジェクト指向プログラミング、この3つは異なるものなので、個別で説明する必要がある。そうすれば初心者にわかりやすくなる。ということですか? もしそういうことならば、私はその意見にまったく同意ができません。 あと momon-ga さんが理解しにくい説明と指摘しているのなら理解できるのですが、他人がそれではわからない、と想像(思い込み?)で言っている意味がわかりません。
momon-ga

2020/07/09 04:15

オブジェクト指向とプログラミング言語は違うものって説明がいるかは、わからないですが。 オブジェクト指向がわかると、Rubyがわかるとか、説明が足りてないのでは? > Java のオブジェクト指向の実装を理解しても、JavaScript は全く理解できないと思います。 は、当たり前でしょ?って感想になるし、”全く”の度合いは、やっぱり説明不足で オブジェクト指向がわかると、Rubyがわかるがわかるなら、多少は理解できるんじゃないかなぁと。 まぁ思い込みではありますが、論理破綻してる説明をわからないと思う人はいるだろうなという感想です。
Bindi

2020/07/09 04:31

> オブジェクト指向とプログラミング言語は違うものって説明がいるかは、わからないですが。 混在しているから、理解が難しいという意見を **あなた** は言っているのに、別の説明はいらないかもしれないって、どういうことですか? 論理破綻している?どこが? ここでは、オブジェクト指向がわからない。インスタンスがわからない。 そこで、他の言語の話をだしてオブジェクト指向って概念なので、プログラミング言語によって実装は異なる。だから、インスタンスを知ることが、オブジェクト指向を知ることではないと、私はいいたかった。 > 当たり前でしょ? あなたはそうかもしれないが、そう思わない人もいます。 なぜ、そう断言できるのでしょうか。 あなたは自分の思い込みが強すぎると思います。 ということで、議論でも何でもなくて、ただの揚げ足取りになってきたので、もう書き込みません。 すいませんでした。
momon-ga

2020/07/09 04:36

なんか、ごめんなさい。
momon-ga

2020/07/09 04:47 編集

> 当たり前でしょ? ここについてだけ すいません。言葉足らずでした。誰もが思う当たり前でなく、 そもそも違うもの(オブジェクト指向と、プログラミング言語(javascript))と認識している人にとってはですね。 そもそも違うもの(オブジェクト指向と、プログラミング言語(javascript))の話をしていて、 > 全く理解できない のは、私は当たり前だと思いますが、 異なるものを比べている時点で、意味がわからないし・・・ そのあたりを説明不足や、比較している時点で初心者は同じようなものだと勘違いして、わかりにくいと思いました。
momon-ga

2020/07/09 04:58

>> 個別で説明する必要がある。そうすれば初心者にわかりやすくなる。ということですか? > もしそういうことならば、私はその意見にまったく同意ができません。 私も、わかりやすくなるとは思いません。 そもそも、説明が必要といっていないので・・・ 異なる概念を比べて、理解できる/全く理解できないを論じても、わかりにくいと言っています。
BluOxy

2020/07/10 02:10

インスタンスを生成しないオブジェクト指向言語って何があるんでしょうか。クラスベース・プロトタイプベース、どちらのオブジェクト指向言語でもインスタンスは生成すると思うので、純粋に気になりました。
BluOxy

2020/07/10 02:17

おそらく、kobe2018 さんはオブジェクト指向言語初学者であり、かつクラスベースとプロトタイプベースの差を認識していないと思われるので、Javaにおけるオブジェクト指向、すなわちクラスベースなオブジェクト指向について理解したいのだと読めます。
Bindi

2020/07/10 09:59

「もう書かない」といっているのに、なぜ突っ込んでくる。 私の意見や考え方は、尊重されないのか。あなたたちは、絶対に正しいのか。 あなた達が満足するまで、私は答えないといけないのか。 私は、あなた達の質問に対して答えているだけで、あなた達の考え方は一切否定をしていない。 オブジェクト指向の説明に物体を出すから、わけがわからなくなる。(川とか自動車とか) そのとおりである。 オブジェクト指向の説明に物体を出したほうが、説明しやすい。 そのとおりである。 間違いも正しいもない。人それぞれの考え方なのだからだから。 そこは理解しろよ。賛同しなくてもいいからさ、否定はするなよ。 人がどう捉えようと自由ではないか。 わかりにくい説明をしている。その理由は混在しているから。 だから混在させるなといってきた。それは理解できる。私もそれでは理解ができない。 だから、賛同しない理由はそこではない。 賛同しない理由は「混在していない」からである。 混在しているからわからない。逆も真。 混在していなければ理解ができる。だったら、混在させなければいい。 そうだよな、そう言っているんだから。そこは間違ってないだろ。 そういっているのはあなたなのだから。ここは否定できないからね。 しかし、そのまえに議論すべきは「混在しているどうか」なんですよ。 それについて、私は混在してないといっている。だから理解できないと。 そう答えたのだから、混在している理由を述べよ。 なのに、混在している理由を述べずに、「わかりやすくなるとはいっていない」とか、「説明するとはいってない」とか、なぜ論点をそらすのか? 私は、あなたのベストアンサーにけちつけた? 私は、けちつけたいのよ。そんな説明はないだろと。 当たり前って言葉を、気軽に使うなと。 あんたの当たり前と、私の当たり前ちがうから。 けど、そんなこといったか? 質問した人がベストといったんだから。私になにをいう権利がある。 なにもいっていない私に、けちをつけるなよ。 あなたが満足しないからか? 「わかりにくい」といってきたのはだれなのか。いいたいことをいうだけの場なのか。ここは。 あなた達の聖地を荒らした私に罪があるのか。 > 差を認識していない。 だから、実装で異なるよってことを伝えたのです。異と差はまったく意味が違うけどさ、突っ込むのはやめとくよ。(異なるだけで差があるわけではない。差の意味わかってる?でも答えなくていいよ。感情的になって、怒りを自分自身にいっているだけだから。) クラスベースとか単語を出すと余計わからなくなると思ったから、そんな単語を出していないのです。というか、そんな単語しらなくてもいいし、そんな知識は知る必要もないし。 客観的にみれば思ったことが、感じたことが同じ。私もあなたも。 なのに、なぜ表現が違うだけで突っ込んでくる。 > インスタンスを生成しないオブジェクト指向言語 だから概念と実装なんだよ。 Wikipedia でみたら、クローンって言葉つかっているのね。どう表現しようが自由だろ。 それクローンではない、インスタンスの生成だっていいたいの?あなたは。 ちなみに inscance を英和辞書で調べて、用例をみてみて。たくさんあるから。 日常で普通に使う言葉なのインスタンスって。あなたは使わないかもしれないけど。 それで、インスタンスを生成しないという表現を使わないのはおかしいって、意味がわからない。 > クラスベースなオブジェクト指向について理解したい。 あなたが言う、「差」がわからないのに、クラスベースの方を知りたいと断言する根拠はどこにあるんでしょうか。質問の中に、どのプログラム言語と書いていません。 StringBuffer って文字あるから?そんなの想像ですよね? C++ の書籍で、自前で StringBuffer クラスを作って説明しているかもしれないし、いろいろな書籍をみて、たまたま出しただけで、別に Java が知りたいわけでもないかもしれないし、断言できる根拠にはならない。自分の意見は、皆の意見みたい表現をして、私に押し付けるのをやめてもらえますか。 逆をいうと、 差がわからないのに、差がわかっている前提で説明をしている。Java のオブジェクト指向を知りたいのに、 Python のオブジェクト指向の話を出すな! というツッコミなら、まだ理解はできる。そんな意見には賛同しないが。理解はできる。 なんどでもいうよ、あなたの意見は正しい。しかし私は賛同しません。 各個人の想像や妄想で、なぜ私がここまで突っ込まれるのでしょうか。 考え方だから、それは各個人がもっているもの。 その考え方を否定するのは、おかしい。 質問に対して適切でなければ、低評価をするだけですむ。なぜそうしないのか? 質問者にわかるように、またこれを見た他の人にもわかるように、間違いを具体的に指摘して、またその指摘が個人的意見で主観的ではないことを確認して、低評価を押す。 なぜできないのか、あなたたちは。 前にも書きましたが、揚げ足の取り合いに意味があるのか? 私は、コメントに対して答えているだけで、揚げ足を取っているつもりはまったくないが、他人から見れば、私も揚げ足をとっている。そして議論にまったくなっていない。 しかし、感情的になっていてもたっていられなくなりました。黙っていることはできませんでした。 ほんと怒りがこみ上げてきます。まったく止まる気配がありません。 あなたたちの意見や表現は否定しません。しかし、誹謗中傷するのは、やめてほしい。 私からのお願いです。たのむから私の意見も尊重してくれ。
Zuishin

2020/07/10 10:24

私は低評価していませんが、この回答の意味がわからないので尊重できません。 > 質問に答えると、 インスタンスを作るという実装をしているから、インスタンスを作っている。 「それで終わり?」と思いました。 ここが結論だと思いますが、この前後は思いつきを並べただけで文の流れが繋がっていないので、全部バッサリ切っていいと思います。かわりに、結論部分を詳しく説明してください。
momon-ga

2020/07/10 10:57

> 誹謗中傷するのは、やめてほしい。 誰もしていないと思うのですが・・・ 私も低評価してないですからね。念のため。 説明は求めませんが、わからない部分について > オブジェクト指向が、なんなのかを知ることとと、Java を知ることは異なります。 わかる。が、なぜこの比較をした意図がわからない。 > オブジェクト指向を理解していれば、 Ruby や Python は理解できるが、 わからない。上記のjavaの場合は違うという説明だと思っていたのに・・・ > Java のオブジェクト指向の実装を理解しても、JavaScript は全く理解できないと思います。 わかる。が、なぜこの比較をした意図がわからない。 ネコを理解してもラーメンを全く理解できないです。という主張ぐらい何がいいたいのか、わからない ※オブジェクト指向とJavaの比較も同様 > 質問に答えると、 インスタンスを作るという実装をしているから、インスタンスを作っている。 わかる。
Bindi

2020/07/10 11:09 編集

なに意味がわからないことをいっているの? 回答に対して尊重しろ? 同意できません、反対です。でもいい。 また、意味がわからないから、否定も肯定もできない。でしょ? 回答に対して尊重しろ?誰がいったのそんなこと。 意味がわからないです。 ここが結論?意味がわかりません。 それでおわり?それはおかしい。 それはわかる。そんなんでは、わからない。もっと説明しなさい。 それはわかる。あなたの意見なのだから。尊重します。 しかし、そんなことに感情的になってない。 そいうことを言っているのではないのです。 それで感情的になっているのではないのです。 > ここが結論だと思いますが、この前後は思いつきを並べただけで文の流れが繋がっていないので、全部バッサリ切っていいと思います。かわりに、結論部分を詳しく説明してください。 結論?意味がわかりません。 この前後?どの前後?どれが前でどれがあと。 文の流れがつながっていない。その文章? ばっさり切っていい?どこの部分?どの文章? 誰が書いた文章? 結論部分ではなくて、 > インスタンスを作るという実装をしているからインスタンスを作っている。 この一文が理解できない。もうすこし詳しく説明してくれでしょ? 結論なの?この一文が。意味がわからない。だれが結論っていったの? あと、思いつきってなんだよ。 人をバカにしていない? ここにあるコメントを全部すっとばして、(読んでないことにして) 「わからないから説明しろ」 なら、理解できるが、ここのコメントすべて読んでからの、あなたのコメント(意見)は、意味が理解できません。 結論と決めたのは、あなたであって私ではない。だから理解できない
Zuishin

2020/07/10 11:08

誰がと言われても > たのむから私の意見も尊重してくれ。
Zuishin

2020/07/10 11:10

言ってることの八割がた意味がわからないけど、とりあえず、そこが結論ではないということはわかりました。そうすると後はもう回答になっていないので低評価します。
Bindi

2020/07/10 11:14

いじめられているこが、いじめられてるといっている。 いじめているほうは、いじめていないといっている。 これって、誰もいじめてないことになるのか? 低評価してるとかしてないとか…。ちっちゃい。 いいじゃん私はしました!っていっても。 問題ないでしょ。正当化するのやめません? 低評価したのだれって、犯人探しなんかしてないし。 そんなの私もとめてた? 私は低評価するべきだと思います。客観的に考えて。
momon-ga

2020/07/10 11:19

Bindiさんの意見に乗っかるので低評価します。 ・私(Bindiさん)は低評価するべきだと思います。客観的に考えて ・実際に低評価していないのに、してると思われるのがイヤなので。ちゃんとカウント増えたの確認できればよいのですが。
Zuishin

2020/07/10 11:20

九割がた意味が分からないけど、私は自分がこの回答を低評価した事実とその理由を述べただけで、それ以上でもそれ以下でもありません。
Bindi

2020/07/10 11:21

> オブジェクト指向が、なんなのかを知ることとと、Java を知ることは異なります。 わかる。が、なぜこの比較をした意図がわからない。 質問のはじめの一文で、「オブジェクト指向がわからない」と書いてある。 その後で、インスタンスがあーだこーだいっている。 インスタンスの生成って、そうなんだ!ってわかっても、 JavaScript でよし!インスタンスの生成だ!って、なったとき、どうやるんですか?私にはわかりません。 だから、オブジェクト指向を知ることと、特定のプログラム言語のオブジェクト指向の実装を知ることは同意ではない。 だから、最後に > 特定のプログラム言語を用いない、オブジェクト指向プログラミングの書籍があればよいのですが…。 と書いた。 と、ここまでかいて思ったが、比較してるの?この文章って。比べているの? すいません、比較しているとは思えないです。 1 > 0 これは比較しているけど、 1 < 'test' これって比較しているといえるの? 異なるものって比較できるの?
Bindi

2020/07/10 11:25 編集

一割でも理解できないから低評価してもいいから。問題ないから。 いちいちコメントしないでくれ。なんか自分が正しい意見をいっているようにいわないでくれ。 正しいも間違いがない。あなたが低評価ならそれでいい。 いいわけしなくていいから。 宣言して低評価するって、意味がわからない。 回答を尊重しろって、いってないって、何度言えばわかるの? コメントだって、いっているのは、コメントの文章!
momon-ga

2020/07/10 11:31 編集

オブジェクト指向を知ること != javaを知ること 比較だと思ってます。(比較しようとしてると思ってます) > 異なるものって比較できるの? 比較できないと当初から言ってるつもりでした・・ > なんか自分が正しい意見をいっているようにいわないでくれ。 思い込みが激しい方のように感じたので、もう黙ります。
Zuishin

2020/07/10 11:26

低評価したときには理由を述べるというルールがあります。それに従っただけです。
Zuishin

2020/07/10 11:27

脅しやいじめと感じているなら思い違いです。
BluOxy

2020/07/10 11:30

インスタンスを生成しないオブジェクト指向言語が何か純粋に疑問だったので説明を頂きたかっただけでした。不愉快にさせてすみません。失礼します。
Bindi

2020/07/10 11:38

> オブジェクト指向を理解していれば、 Ruby や Python は理解できるが、 わからない。上記のjavaの場合は違うという説明だと思っていたのに・・・ オブジェクト指向は概念。 それが理解できていれば、あぁ、この言語はこういう実装してんだ。と理解できると思ったから。 オブジェクト指向が定義だったら決められたものなら、なんだよ!これオブジェクト指向なプログラミング言語じゃない!ってなると思ったから。 クラスないじゃん!これオブジェクト指向ではない。とか。 実際、概念なんだとおもったら、なんでもかけるようになったし。いちいちインスタンスの生成とか考えないし、他人にもインスタンスという単語を使って説明しなくなったし。 それまでクラスって定義をかいて、 new しないと実際にそのオブジェクトは存在しないから、 call できないとか。それがオブジェクト指向だと思っていたから。 1オブジェクト1責務とか、まぁいろいろあるけど。 クラスがない、オブジェクト指向プログラミング言語といわれて、あぁそうなのって悩まなかったし。 python に new なんかないし。あぁ、そうなのねってなったから、私は。
Bindi

2020/07/10 11:39

低評価するときは、理由を述べるって、規約に書いてあるんですか?
Bindi

2020/07/10 11:42

異なるから比較できない。 だから、異なるって書いてあるのに、なんで比較しているっていっているのでしょうか。 同じ意見ですよね?比較できないって、異なるって。 理解できているのに理解できていないって、どういうことですか?
Bindi

2020/07/10 11:50

> インスタンスを生成しないオブジェクト指向言語が何か純粋に疑問だったので説明を頂きたかっただけ 問題はどこではない。理解もしていました。 だから、その一文だけなら、不快に思わない。ちゃんと伝えなきゃって思いましたから。 しかし、そのあとの一文で不愉快になった。 それと前のコメントで、揚げ足取りになるから、このままだと感情的にもなるし、書きたくないと思った。 そのあとは、だれが書き込もうが無視しようとおもったのだが、不愉快になって頭にきて、カーっとなった。 書き込まないといっているのに、ばんばんツッコミくるから。 ほっておいてほしかった。 あと、知りたいのなら個人的に連絡してください。 ここで、それを書いたところで有益になるとは思えない。 そんなこともあり、書きたくなかったのです。 個人を非難する場所なのかと、ここは。 個人宛に非難とかするなら、いいけど。 ここは公共の場所なのだから。
Bindi

2020/07/10 11:50

知りたいのなら、ここで質問すればよいと思いました。 とある雑誌でこう書いてありました!ってのみますし。 ここで、こういう回答していましたが、本当にそうでしょうか。 教えてくださいと。
Bindi

2020/07/10 11:52

思い込みが激しい…。それと同関係があるのでしょうか、黙っているのと 相手が理解できない言葉で伝えているから、相手が理解できないといっているのに、それを黙っているっておかしい。 あなたの言っていることが理解できないのは、私が悪いのでしょうか?
Bindi

2020/07/10 12:13

> ネコを理解してもラーメンを全く理解できない そのとおりではないですか! だから、質問の最初に「オブジェクト指向がわかりません」 次は「インスタンスがわかりません」 だから、インスタンスがわかればオブジェクト指向がわかったことになって、他のプログラミング言語もわかったことになるのを避けたかった。 だから最後の一文で、 特定のプログラム言語を用いない、オブジェクト指向プログラミングの書籍があればよいのですが…。 読解力がないのは、わたしだけ? 説明が足りないのは、わかります。そっけないとか。 なぜ最後の一文の意味が、理解できないのだろう。 最後の一文が理解できないのなら、そこは突っ込むべきだと思う。 > 脅しやいじめと感じているなら思い違いです。 勝手な妄想しないでください。 脅している?いじめている?誰がそんなこといいましたか? > これって、誰もいじめてないことになるのか? これの回答は、いじめている or いじめていない ですよね? ほかに何があるのか。 そして、ここから妄想して、脅しとかになるのでしょうか? あなた、いじめられているこに、「それ、思い違いだよ。」 って、いうひとなんですね。ひどいひとだ。
Bindi

2020/07/10 12:29

人の意見にのっかって低評価にします? 自分を正当化していませんか? だれがなんといおうと、私はよいとは思わないので低評価なら理解できます。 このひとがいったから、あの人がいったから、それであなたの評価かわる? それって、ひどくないですか。 評価は、みんながよいからするのではなく、みんながわるいからするのではなく、自分がどう思っているのか、どういうおもいなのか自分は、それで自分が評価するものでは?
Bindi

2020/07/10 12:36

評価なので、その答えがよいのかわるいのかではないでしょ? 「その理由を明確に伝え、回答を適切に修正してもらいましょう。」とある。 明確に伝わって、回答を適切に修正してもらえたのでしょうか? いっていることと、やっていることが違う。
Bindi

2020/07/10 12:49

ちなみに、私が低評価する理由は、 コメントで話しているが、その内容で回答がよくなるとは思えない。 質問者を無視した議論になっている。 とかかな。書くならば。別に書かなくてもいいけど。 私は、くだらなさすぎるから、明確に伝える気も、適切に修正してもらう気がおきないが。 コメントしているんだから、責任もとうぜ! そう書いてあるから、そうコメントしたなんて、いいわけにしか聞こえない。
Bindi

2020/07/10 13:40

冷静に他の人の回答を読んだが、全部だめじゃん。 よくまぁ、人のこといえたもんだ。 どうして、そんなに人はえらくなれるんだ?
Bindi

2020/07/10 13:59

stackoverflow.com で、似たような質問さがしてみたけど、わかりやすいものばかりだった。 オブジェクト指向がわかりません、と言っているのにオブジェクトという単語が一切でてこない。 static だとこまるとか、そんなことどうでもよくて、オブジェクトで扱っていくと、こんなことができるとか、そういう説明をするべきだろ。 static にできるんだから、static を使ってなにがわるいんだ?
Bindi

2020/07/10 14:15 編集

stackoverflow.comgithub.com の issues に書き込んだりしたり、他にもいろいろやってきたが、お前の英語がわらかないと言われたことはあっても、お前の言っている意味がわからないなんて、言われたことがない。必ず理解するまで聞いてくるし、君の言っていることはこうかい?とか例に出したりしてくる。 よいディスカッションができる。しかし、あなた達はそうではない。 あなたたちは、私より劣っているとしか思えない。全てにおいて。
Zuishin

2020/07/11 01:38

> 必ず理解するまで聞いてくるし、君の言っていることはこうかい?とか例に出したりしてくる。 それは「わからない」と言われたのと同じですね。 違いは、あなたの言うことをわかろうと努力したかしないかだけです。わたしは最初、あなたとコミュニケーションをとろうとしましたが、罵倒が帰ってきただけなのでそれ以降の努力を放棄しました。 恐らく GitHub でも Stack Overflow でも今回のように罵倒していたら違った結果になったと思います。
Bindi

2020/07/13 04:50

> それは「わからない」と言われたのと同じですね。 なにと同じなのでしょうか。意味がわかりません。 > それ以降の努力を放棄しました。 だから、それはわかってる。だからなに? > 罵倒していたら違った結果になったと思います。 それもわかっている。だからなに? なにをいいたいのか、さっぱりわかりません。 そもそも、罵倒する理由を作ったのはだれですか? なんで、こっちは聞いているのに答えてくれないのでしょう。 どうでもいいことの感想はいうだけで。 コミュニケーションを放棄したっていうけど、そのまえにコミュニケーションしてないと思います。
Zuishin

2020/07/13 04:55

してませんよ。放棄したので。
Bindi

2020/07/13 05:17

そうか、あたまでっかちなんだ コミュニケーションはなにかわかっている。だから私はコミュニケーションしている。 といいたいのはわかったが、実際の行動に出ていない。 だから、なんなの?っていいたくなるのです。 そもそも、コニュニケーションの定義を語ること自体がいらない。 コミュニケーションしていないといわれて、それを正当化するために、コミュニケーションの定義をはなした。わたしは知っていると。 だからなに? あなたがたは、首尾一貫して、自分の感想や考え方をいうだけで、相手の思いに対して答えていない。 こうなることははじめからわかっていたから、一番始めに「議論にならないから書かない」といっている。 あななたちは、会話のキャッチボールができないから。 だから、回答もキャッチボールできない文章。あいてをいいくるめるような文章。 上から目線な回答だとは私は思わないが、そう言われてもしかたがない。 だから、「わかったような、わからないような」という質問者の言葉が漏れてくる。 主観はどうでもいいから、あなたがたの考えはどうでもいいから、事実は事実でしっかり受け止めようよ。
Zuishin

2020/07/13 05:19

どうぞ事実を受け止めてください。
Bindi

2020/07/13 05:22

放棄する前にしていたのではないですか? わたしは、はじめからコミュニケーションをしていないといっているのです。 私の言っていることが、理解されていないのですか? > 放棄した それは事実ではなくて、あなたの主観
Bindi

2020/07/13 05:25

あと、会話のキャッチボールができたいないといっているのですが、それはどうなんでしょうか。 こっちは投げているのに、返していないのはあなたがただと思っています。 返しているのなら、どこをどのように返しているのか説明してください。 なんどでもいいいますが、あなた方はいいたいことだけをいっているだけ。
Zuishin

2020/07/13 05:29

九割方大暴投なので、それを拾いに行けと言われても困ります。 あなたは意味不明な回答を低評価されて大暴れしたというのが事実です。受け止めてください。
Bindi

2020/07/13 05:33 編集

ほら、話がづれた。 低評価にしてもいいといっているし、私も低評価するといっていて、それについて怒っていない、と書いてあるのですが、読まれました? そもそも低評価されるまえから、始まっているし。 ほんとうに、あなたはコミュニケーションできるひとなのでしょうか?
Zuishin

2020/07/13 05:32

放棄しています。
Bindi

2020/07/13 05:36

ほらずれた。 放棄しているのはわかっているって。だって、あなたがそう言ったから。 私は、コミュニケーションできる人なのか?という問いかけをしているのです。 その問いかけについて、「答えません」ならわかるが、まったく違う話をする。 そして、それは事実。その事実があるから、あなたは会話のキャッチボールができないひと。 それを証明しているだけで、私の主観ではありません。
Zuishin

2020/07/13 05:37

私もあなたとのキャッチボールは不可能だと感じています。意見が一致したのでこれで問題ありませんね。
Zuishin

2020/07/13 05:38

ちなみにあなたがキャッチボールできないのは、私だけではありません。どの回答者ともできていません。
Bindi

2020/07/13 05:42

ほら、また話がづれた。 キャッチボールが不可能。それはあなたの主観。私は不可能なんていっていない。 私は、キャッチボールができないひとなのですか?と聞いている。 >いっちしているから、問題ない。 それもあなたの主観。どこも一致していないし、問題がないと私はいっていない。 もちろん私は、問題があるとかないとか、いっていない。 意見が一致しないから問題だ!といったことは一度もない。 > 私も だから、それはあなただけですって。
Bindi

2020/07/13 05:45 編集

訂正。主観と書いたところは、すべて「あなたがいいたいこと」 いいたいことだけをいって、さっていく。 あなたは、ひとりよがりのひと。コミュニケーション能力はなく、会話のキャッチボールができない人。 けっして、コミュニケーションを放棄したのではなく、そもそもコミュニケーション能力をもっていない (これは私の主観。)
Zuishin

2020/07/13 05:45 編集

そしてあなたはどの回答者とも会話できていません。その事実を認めてはどうでしょうか。
Bindi

2020/07/13 05:46

また、ひとりよがりのいいたいことだけをいっている。 会話できない人に、会話できないっていわれたくないですね。 私は、あなたが会話できない説明をなんどもしている。
Zuishin

2020/07/13 05:48

私とあなたは会話ができません。これは事実です。そして追加の事実ですが、 あなたは誰とも会話できていません。
Bindi

2020/07/13 05:49

> 回答者とも会話できていません。 していない。それは相手もいることだから、しょうながい。相手がしたくないんだったら。 それと会話ができない(会話する能力がない)とは、別の話。 で、会話できていません。それで、なにがいいたいのでしょうか? 事実は認めていますよ。そんなのしっていますよ。 だからなに?
Bindi

2020/07/13 05:50

さぁ、事実をみとめたよ。その次はなに?
Zuishin

2020/07/13 05:51

では、会話ができない件にも決着がつきました。低評価の件にも先ほど決着がついたので、これ以上の議題は無いと思いますが、いかが?
Bindi

2020/07/13 06:36

会話していない事実を理解しろと、あなたがいった。 私は、それに答えた。 それから、どう話がつながるのか期待していたが、やっぱり無理だったか。 > 会話ができていない件 決着? あなたが会話の能力がない話をしていたのですが、その決着はどこにあるのでしょうか? あなたが、「会話の能力がない」といえば、決着がついたといえるが。もしくは「会話の能力がある」ということをいえば。 「あなたが会話の能力がない」話の中で、あなたが「他の回答者と会話してない」と見当違いの質問をしてきたから、「はい、会話していませんよ、ほかの回答者と」と答えた。で、それからの話はどこへいった。 あぁそうか、コミュニケーション能力がないから、論点をずらすことしかできないのか。 > 低評価の件 決着?そもそもそんな話はしていないですよね。 そもそも、怒ってない。それをあなたが勘違いして、怒っているといったから、説明しただけなのですが。2度も、同じことを。 コミュニケーションあるひとなら、「わかりました」とか、いいませんか? 相手のことを理解ぜず、読みもしないで勝手に妄想してしまうのだから、しかたがないか。 すいませんでした。 それの、どこが決着といえるのか。 話の決着はついていないですが、あなたがやめたいのはわかりました。 (そもそも始めたのは、あなた。そして私は決着をつけたいとも思っていない。) > これ以上の議題は無いと思います 私は、はじめから議論にならないといいました。そして、そのとおりでした。 しかし、あなたは、いままでの経緯を議論だとおもっていたとは…。 失礼しました、議論だと思っていたことを理解できませんでした。 論点をずらす、話を無視することが、自分をまもる方法なのがわかりました。 そうしてきたら、会話しちゃだめなんですね。相手をしてはいけないんですね。 勉強になりました。ありがとうございました。
Zuishin

2020/07/13 06:37 編集

どういたしまして。次回から気をつけてください。
Bindi

2020/07/13 06:40

大笑い コミュニケーション能力がないひとに、注意されたw 能力がないひとが、自分をまもるって大変なんですね。
Zuishin

2020/07/13 06:41

みたいですね。頑張ってください。
guest

0

自分的には、StringBuilderならギリギリ理解できるかな?といった感じです。

例えば、ターミネーター(The Terminator)という映画がありましたが、ターミネーターはただ一人ではなく未来において量産化されているロボットですね。英語で-er, -orで終わる語は結構気軽に使われている気がします。

オブジェクト指向が分からない、と言ったときに、クラスの継承をあげるのではなくJavaクラスライブラリ(Javaの標準ライブラリ)のクラス名をあげているのは、センスあるなあと思いました。

オブジェクト指向には〜Manager, 〜Listenerといった、一回聞いただけじゃなんのことか分からないクラス名がたくさん出てきますがそこは慣れの問題、といったところだと思います。オブジェクト指向でないライブラリ、例えばC標準ライブラリやWin32 API(Windows API)を参照すると頭を抱えると思います。結局のところ使う分に関しては学習曲線はあまりかわらないと思うのですが…

オブジェクト指向で注目すべきは、継承やインターフェース(この書き方はよくされるのだが、スーパークラスとインターフェース、または継承と実装、というのが正しいのだろう)による「内部コード」の効率化と外側から見たときのAPIの秩序が明確化するといったところでしょうか。

クラスベースのAPIが関数ベースのAPIに比べてコンパイルも実行ももっさりしているように思えるのだろうけど、それでもクラスベースのAPIはAPIの秩序が整っているので楽といえば楽ですね。あるクラスを知っていればその兄弟のクラスの振る舞いについても感覚で分かってしまう感じ、そして関数ベースのAPIだと一つ一つ手作りなので「欲しい機能がない」ということが頻発します。開発者も利用者もAPIの全容を把握していないので起こることなのですが、クラスベースのAPIだとAPIのインターフェース(Javaのインターフェースと紛らわしい)が半自動化されているので「欲しい機能がない」という悩みが少ないと思います。その代わりもっさりしているんですけどね…。

投稿2020/07/04 14:23

anndonut

総合スコア667

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

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

kobe2018

2020/07/04 15:02

回答ありがとうございます。 クラスごとに管理することにより、内部コードと外部コードの両方にメリットがあると実感しました。
guest

0

「ある数値のリストがあって、奇数と偶数に分けてそれぞれ文字列化して連結しなさい」
StringBuilderが同時に一つしか存在できないと困りますね。

(無理やりひねり出した例なんで普通に+で連結したり、偶数と奇数のリスト2つに分けてから連結したりで回避できますけれども。)

投稿2020/07/04 13:48

ozwk

総合スコア13553

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

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

kobe2018

2020/07/04 13:54

回答ありがとうございます。 つまり、インスタンス化する目的は、複数の文字連結を区別するため。 インスタンスには情報(フィールド)としてバッファーの位置があり、 操作(メソッド)としてバッファーへの文字の追加や、追加された文字の連結がある。 という認識で合ってますでしょうか。
ozwk

2020/07/04 14:17

はい
kobe2018

2020/07/04 14:49

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問