OOP uzmanları için soru. - sayfa 43

 
Andrey Barinov :

Peter, şiddetle tavsiye ederim

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

Teşekkür ederim. Alıp okumaya çalışacağım.
 
Artyom Trishkin :
Peter. Bu nedenle ben de konuşuyorum - düşüncesiz miras gerekli değil. Açık bölme ve sınıflandırma.

bir örnek vereceğim:

Kategori "Meyve" - temel nesne.

Sınıflar - "Meyveler", "Sebzeler" - "Meyve" sınıfının mirasçıları.

"Meyve" sınıfı, sınıfların ebeveynidir - Kivi, Mango, Limon, Portakal.

Yeni bir kategori belirir: "Narenciye".

Onu "Meyve" sınıfı ile mirasçıları - Kivi, Mango, Limon ve Portakal arasına koyduk.

"Narenciye", Limon ve Portakal'ın ebeveynidir.


Sonra, - Mango ve Lemon'ı geçip - Li-Mango nesnesini alıyoruz.

Nesne kısmen narenciye meyvelerinin ve kısmen - narenciye olmayan meyvelerin özelliklerini içerir. İKİ ebeveyni vardır ve bu Hiyerarşiyi optimize etmek imkansızdır.

Böylece, "Lee-Mango" nesnesinin çoklu mirasını ve "Meyve" temel nesnesine giden bir çift yolu elde ederiz: narenciye zinciri ve "Mango" zinciri aracılığıyla.

Bu zincirlerde, "Lee-Mango"nun bireyselliğini korumak için Ebeveynlerin ekstra özelliklerini atlamalıyız.

 

Peter, buna denir: kendi beynini becermek - aşılmaz zorluklarla ortaya çıkmak. Görevi somutlaştırmak ve bunun için sınıflar yapmak gerekir.

Neden bir ara sınıf "narenciye" tanıtalım? Belki de sorun, dinamik listeye "narenciye" özelliğinin eklenmesiyle çözülebilir.

 
Dmitry Fedoseev :

Peter, buna denir: kendi beynini becermek - aşılmaz zorluklarla ortaya çıkmak. Görevi somutlaştırmak ve bunun için sınıflar yapmak gerekir.

Neden bir ara sınıf "narenciye" tanıtalım? Belki de sorun, dinamik listeye "narenciye" özelliğinin eklenmesiyle çözülebilir.

Sadece özellikler hakkında yazmak istedim.
Tat özelliği, iki meyvenin özelliklerinin ortalaması olacaktır.
 

Ve bu. OOP tamamen aynı bir programlama aracıdır, verilerle çalışmanın bir yolu değildir (nasıl düzgün şekilde bölünür). Veri işleme aracı bir veritabanıdır.

Üç masa. Bir tabloda iki sütun vardır: meyve kimliği ve adı. Diğerinde iki sütun vardır: mülkün kimliği ve adı. Üçüncüsü iki sütuna sahiptir: meyve kimliği, özellik kimliği.

Sonuç olarak, sonsuz sayıda yeni özellikler eklemek, bunları meyvelere atamak ve böylece herhangi bir yeni meyve elde etmek mümkündür.

Problemi çözmenin araçları probleme uygun olmalıdır.

 
Dmitry Fedoseev :

Peter, buna denir: kendi beynini becermek - aşılmaz zorluklarla ortaya çıkmak. Görevi somutlaştırmak ve bunun için sınıflar yapmak gerekir.

Neden bir ara sınıf "narenciye" tanıtalım? Belki de sorun, dinamik listeye "narenciye" özelliğinin eklenmesiyle çözülebilir.

Bırak olsun.

Peki ya iki nesnenin özelliklerinin kesişmesi, yeni bir nesne oluşturması? Yeni nesne, diğer ikisinin özelliklerini kısmen devralır.

"Kısmi" mirası birden çok nesne (ebeveynleri) ile temel nesne arasında nasıl uygulanır?

 
Реter Konow :

Bırak olsun.

Peki ya iki nesnenin özelliklerinin kesişmesi, yeni bir nesne oluşturması? Yeni nesne, diğer ikisinin özelliklerini kısmen devralır.

Diğer birkaç nesneden "kısmi" mirası nasıl uygulanır?

Bu özel problemi çözmek için uygun algoritmanın uygulanması.

OOP, belirli bir bakış açısından birbirine nasıl karşılık gelirse gelsin, çevreleyen dünyayı tanımlamanın bir yolu değil, bir programlama aracıdır.

 
Dmitry Fedoseev :

Ve bu. OOP tamamen aynı bir programlama aracıdır, verilerle çalışmanın bir yolu değildir (nasıl düzgün şekilde bölünür). Veri aracı bir veritabanıdır.

Üç masa. Bir tabloda iki sütun vardır: meyve kimliği ve adı. Diğerinde iki sütun vardır: mülkün kimliği ve adı. Üçüncüsü iki sütuna sahiptir: meyve kimliği, özellik kimliği.

Sonuç olarak, sonsuz sayıda yeni özellikler eklemek, bunları meyvelere atamak ve böylece herhangi bir yeni meyve elde etmek mümkündür.

Problemi çözmenin araçları probleme uygun olmalıdır.

Mülkiyetle ilgili değil, mirasla ilgili. Yani - nesneler arasında özelliklerin ve yöntemlerin dağılımında.

Yeni nesneler, eski nesnelerin özelliklerini farklı kombinasyonlarda bağlayacak ve bu da zincirlerinin karmaşıklığını temel nesneye artıracaktır.

 
Реter Konow :

Mülkiyetle ilgili değil, mirasla ilgili. Yani - nesneler arasında özelliklerin ve yöntemlerin dağılımında.

Yeni nesneler, eski nesnelerin özelliklerini farklı kombinasyonlarda bağlayacak ve bu da zincirlerinin karmaşıklığını temel nesneye artıracaktır.

Nesnelerin kendileri bunu yapmayacaktır. Veritabanından bu meyvenin özelliklerini, başka bir meyvenin özelliklerini seçiyorsunuz, birleştiriyorsunuz (bir şey bırakın, bir şeyi atın) - yeni bir meyve alırsınız - veritabanına eklersiniz.

 
Doğa bile özelliklerin kombinasyonları için sınırsız olanaklara sahip değildir. Belirli sayıda kromozom vardır, özellikler kümesini sınırlarlar.