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

 
Andrey Barinov:

ピーターさん、おすすめです

https://en.wikipedia.org/wiki/Code_Complete

ありがとうございます。入手し、読んでみようと思います。
 
Artyom Trishkin:
ピーターだから私は、「心ない相続は必要ない」と言うのです。分離・分類を明確にする。

以下はその一例です。

カテゴリー "Fruit "をベースオブジェクトとする。

クラス - "Fruit "と "Vegetable "は "Fruit "クラスの子孫である。

Fruit "クラスは、"Kiwi"、"Mango"、"Lemon"、"Orange "クラスの親クラスです。

新しいカテゴリーとして「柑橘系果実」が追加されました。

フルーツ "というクラスと、その後継であるキウイ、マンゴー、レモン、オレンジの間に置いてください。

"シトラス "とは、レモンやオレンジの親である。


次に、MangoとLemonを掛け合わせて、Lee-Mango オブジェクトを得ます。

このオブジェクトは、部分的にシトラスの特性を含み、部分的に非シトラスの特性を含んでいます。2つの親を持ち、このHierarchyは最適化することができません。

つまり、Lee-Mangoオブジェクトの多重継承と、その下にあるFruitオブジェクトへの二重のパス、citrusチェーン経由とMangoチェーン経由があるわけです。

これらのチェーンでは、「Lee-Mango」の個性を生かすために、不要なParentプロパティをバイパスする必要があります。

 

ピーター それは、「自分の頭脳をねじ伏せること」、つまり、乗り越えられない困難を考え出すことなんだ。タスクを指定し、そのためのクラスを作る必要があります。

なぜ「柑橘類」という中級クラスを導入したのか?もしかしたら、ダイナミックリストに「柑橘類」のプロパティを追加するだけで、この問題は解決するかもしれません。

 
Dmitry Fedoseev:

ピーター それは、「自分の頭脳をねじ伏せること」、つまり、乗り越えられない困難を考え出すことなんだ。タスクを指定し、そのためのクラスを作る必要があります。

なぜ「柑橘類」という中級クラスを導入したのか?もしかしたら、ダイナミックリストに「citrus」プロパティを追加するだけで、この問題は解決するかもしれません。

ちょうど今、物件について書きたかったんです。
味の特性は、2つの果実の特性の平均値となる。
 

そして、これ。OOPは結局のところ、プログラミングの道具であって、データの道具ではないのです(どう言えばいいのでしょう)。データツールはデータベースです。

3つのテーブル1つのテーブルには、果物のidと名前の2つのカラムがあります。もう一つは、プロパティのidと名前の2つのカラムを持つ。3番目は、fruit idとproperty idの2つのカラムを持つ。

その結果、新しい性質を無限に追加し、それを果実に割り当てることで、任意の新しい果実を得ることができるのです。

問題を解決する手段は、その課題に適したものでなければならない。

 
Dmitry Fedoseev:

ピーター それは、「自分の頭脳をねじ伏せること」、つまり、乗り越えられない困難を考え出すことなんだ。タスクを指定し、そのためのクラスを作る必要があります。

なぜ「柑橘類」という中級クラスを導入したのか? おそらく、ダイナミックリストに「柑橘類」のプロパティを追加するだけで、この課題は解決できるだろう。

そうであってほしい。

しかし、2つのオブジェクトのプロパティを掛け合わせると、新しいオブジェクトが生成されるのはどうでしょうか?新しいオブジェクトは、他の2つのオブジェクトのプロパティを部分的に継承します。

複数のオブジェクト(その親)とベースオブジェクトの間の「部分」継承をどのように実装するか?

 
Реter Konow:

そうであってほしい。

しかし、新しいオブジェクトを生成する2つのオブジェクトのプロパティを交差させるのはどうでしょうか?新しいオブジェクトは、他の2つのオブジェクトのプロパティを部分的に継承します。

他のオブジェクトからの "部分 "継承をどのように実装するか?

この特定の問題を解決するために適切なアルゴリズムを 適用することで、この問題を解決することができます。

OOPはプログラミングの道具であって、ある観点から見てどう対応するかはともかくとして、周りの世界を記述する手段ではない。

 
Dmitry Fedoseev:

そして、これ。OOPは結局のところ、プログラミングの道具であって、データの道具ではないのです(どう言えばいいのでしょう)。データツールはデータベースです。

3つのテーブル1つのテーブルには、果物のidと名前の2つのカラムがあります。もう一つは、プロパティのidと名前の2つのカラムを持つ。3番目は、fruit idとproperty idの2つのカラムを持つ。

その結果、新しい性質を無限に追加し、それを果実に割り当てることで、任意の新しい果実を得ることができるのです。

問題を解決する手段は、問題にマッチしていなければなりません。

プロパティの話ではなく、継承の話です。つまり、オブジェクト間のプロパティとメソッドの分配です。

新しいオブジェクトは、以前のオブジェクトのプロパティをさまざまな組み合わせでリンクし、ベースオブジェクトへの連鎖を複雑にしていきます。

 
Реter Konow:

プロパティの話ではなく、継承の話です。つまり、オブジェクト間のプロパティやメソッドの分配です。

新しいオブジェクトは、以前のオブジェクトのプロパティをさまざまな組み合わせでリンクし、ベースとなるオブジェクトへの連鎖が複雑化します。

オブジェクトそのものがそうなるわけではありません。ある果物の特性と別の果物の特性をデータベースから選択し、組み合わせる(何かを残し、何かを捨てる)-新しい果物ができる-それをデータベースに追加する。

 
自然界といえども、特性の組み合わせは無限に あるわけではありません。染色体の数は決まっていて、その性質も限定されています。