OOPの専門家に質問です。 - ページ 18

 

仮想関数は、基底クラスに格納される関数テンプレートで、子孫クラスでのみ実装可能です。 クラスはバーチャルにすることも可能です。仮想関数を含む仮想クラスは「インターフェース」と呼ばれる。これらは共に、主要なOOPメカニズムの1つであるポリモーフィズムを実装しています。

ただ、実際に使ってみると、どこに貼ればいいのかよくわからない...。

 
Georgiy Merts:

なぜ、そうしなければならないのか?

グローバルカーネルとOOPは相反するものではありません。

ウィンドウの中の要素だけ、ウィンドウズクラスの中にカプセル化されるべきで、「誰が見てもわかるようにごろごろしている」のではないのです。ただ、うっかり「入れ違いで」なんてことがないように。ある変数を変更して、巨大なグローバル配列の中の位置を間違えることは非常に簡単です。一方、正しいインターフェースを問い合わせた後、正しいオブジェクトの中の同じ変数を変更して間違えることは非常に困難です。

残念なことに、この2つは互いに相容れないものなのです。グローバルカーネルは、グローバルな可視性を意味します。

(1)コードのカプセル化において。どこからでもアクセスできるのに、なぜ?

(2)関数のオーバーロード 1つにまとめた方が簡単だし、結果も普遍的に見えるし、アクセスもしやすいのに、なぜ?

(3)ポリモルフィズム。1つのユニットでこれらのテンプレートの変種を処理できるのに、なぜ異なる実装を1つのテンプレートの下に隠すのでしょうか?コード量も少なくなり、構文も何倍もシンプルになるはずです。

OOPの要点は、次の点にある。

1.人間の記憶のオフロード。(オフロードがひどい。構文が多すぎる)。

2.チーム内の共通作業の分散(全員がコードの一部を知っているため、ビルドやデバッグの問題が発生する)。

3.コードのポータビリティ(これは本当にプラスです)。

4.マーケティング各種ガジェットの広告による開発環境、ライブラリの配布・販売。

 
Реter Konow:

嗚呼、排他的。グローバルカーネルは、グローバルな可視性を意味します。

(1)カプセル化コードにおいてどこからでもアクセスできるのに、なぜ?

(2)関数のオーバーロード 1つにまとめた方が簡単だし、結果も普遍的に見えるし、アクセスもしやすいのに、なぜ?

(3)ポリモルフィズム。1つのユニットでこれらのテンプレートの変種を処理できるのに、なぜ異なる実装を1つのテンプレートの下に隠すのでしょうか?コード量も少なくなり、構文も何倍もシンプルになるはずです。

OOPの要点は、次の点にある。

1.人間の記憶のオフロード。(オフロードがひどい。構文が多すぎる)。

2.チーム内の共通作業の分散(全員がコードの一部を知っているため、ビルドやデバッグの問題が発生する)。

3.コードのポータビリティ(これは本当にプラスです)。

4.マーケティング開発環境、ライブラリの配布・販売、各種ギミックの広告による販売。

あなたは誰で、何を証明したいのですか?OOPは悪で、一箇所にたくさんあるのは良いということ?そのためだけにこのスレを作ったのか?それとも、自分の超記憶力を褒めて自尊心を高めたいのか?あなたの分身みたいな感じですね。それ以上はない。
そうすると、このスレッドは実用的な意味を失います。"Look at me "というタイトルにすればいいのです。無駄なことだ。

言われたことはすべてすぐに疑問を持ち、自分はどうなのか、どうしているのか、すべてがよくて、もっとよくて、世界全体が愚かで、その他、人間の最も美しい現れである無学で負担の大きいニヒリズムに固有のものを付け加えることを忘れないようにする。

 
Artyom Trishkin:

あなたは誰で、何を証明したいのですか?OOPは悪で、一箇所にたくさんあるのは良いということ?そのためだけにこのスレを作ったのか?それとも、自分の超記憶力を褒めて自尊心を高めたいのか?あなたの分身みたいな感じですね。それ以上はない。
そうすると、このスレッドは実用的な意味を失います。"Look at me "というタイトルにすればいいのです。無駄なことだ。

言われたことはすべてすぐに疑問を持ち、自分は どうなのか、どうしているのか、すべてがよくて、もっとよくて、世界全体が愚かで、その他、人間の最も美しい現れである無学で負担の大きいニヒリズムに固有の ものを 付け加える ことを忘れないようにする。

また、やっちゃいましたね(笑))もうスレ荒らしはやめたのかと思ったけど、どうしても個人攻撃したくなるんだね。無理だ...)

私情を挟むということは、その人が何も言うことがないということです。どうやら、その主張は鉄板のようだ。
 

OOPの主張は単純で、人々に必要とされているからです。

この時点で、この話題は終わりにしましょう。

 
Реter Konow:

嗚呼、排他的。グローバルカーネルは、グローバルな可視性を意味します。

(1)カプセル化コードにおいてどこからでもアクセスできるのに、なぜ?

(2)関数のオーバーロード 1つにまとめた方が簡単だし、結果も普遍的に見えるし、アクセスもしやすいのに、なぜ?

(3)ポリモルフィズム。1つのユニットでこれらのテンプレートの変種を処理できるのに、なぜ異なる実装を1つのテンプレートの下に隠すのでしょうか?コード量も少なくなり、構文も何倍もシンプルになるはずです。

OOPの要点は、次の点にある。

1.人間の記憶のオフロード。(オフロードがひどい。構文が多すぎる)。

2.チーム内の共通作業の分散(全員がコードの一部を知っているため、ビルドやデバッグの問題が発生する)。

3.コードのポータビリティ(これは本当にプラスです)。

4.マーケティング各種ギミックの広告による開発環境、ライブラリの配布・販売。

つまり、これらは別物なのです。

私はどのEAでも(同じリーグで) - グローバルスコープを持つオブジェクトが存在します。

しかし、カーネルは多くの関数(ゲッター・セッター)を持つクラスとして表現することができ、その結果、非常に「OOP的」でありながら、グローバルなアクセスを可能にします。もちろん、OOPの主な利点 - カプセル化、継承、ポリモーフィズムなしですが。

OOPが何を拠り所にしているかについては、--1つ目は、メモリのオフロード(しかも非常によくオフロードする)だけでなく、コードのサポートや修正のオフロードによっても完成するはずです。ちなみに、「4-マーケティング」は、このような使い勝手の良さの結果です。

 
Artyom Trishkin:

言われたことはすべてすぐに疑問を持ち、自分はどうなのか、すべては善でより良いものなのか、世界中がバカなのか、など、学習能力のない、負担の大きいニヒリストが最も得意とすることを付け加えることも忘れてはいない。

アーテム、ピーターの記憶力がうらやましい...。

もちろん、ピーターが真の洞察を提供しようとしたことは言うまでもありません。

 

情報量は多いが、トピックスターターの読書には向かないメタファーで見るOOPパターン

純然 たるコンテンツ:アンチパターンとは?

 
Igor Makanu:

情報量は多いが、トピックスターターの読書には向かないメタファーで見るOOPパターン

純然 たるコンテンツ:アンチパターンとは?

2番目の記事はより有用で、どんなスタイルのプログラミングを実践しているかにかかわらず、すべての人にとって必読の記事だと私は考えています。
 
Реter Konow:

仮想関数は、基底クラスに格納される関数テンプレートで、子孫クラスでのみ実装可能です。クラスはバーチャルにすることも可能です。仮想関数を含む仮想クラスは「インターフェース」と呼ばれる。 これらは共に、主要なOOPメカニズムの1つであるポリモーフィズムを実装しています。

ただ、実際に使ってみると、どこに貼ればいいのかよくわからない...。

仮想関数とは、派生クラスでオーバーライドできる関数のことです。

特定の実装が基底クラスにあることはよくあることです。

クラスは仮想化できず、抽象化できる。仮想継承はあるが、それを気にする必要は全くない。

インターフェイスとは、大雑把に言えば、純粋な仮想関数だけを持つ抽象クラスです。

仮想関数はポリモーフィズムの一部であり、動的ポリモーフィズムです。

どこでもできる、フラットな表形式の思考ですべてを通すだけ。