Uma pergunta para os especialistas do OOP. - página 43

 
Andrey Barinov:

Peter, eu recomendo altamente

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

Obrigado. Vou tentar obtê-lo e lê-lo.
 
Artyom Trishkin:
Peter. É por isso que eu digo - não há necessidade de uma herança sem sentido. Separação e classificação claras.

Aqui está um exemplo:

A categoria "Fruta" é o objeto de base.

Classes - "Fruta" e "Vegetais" são descendentes da classe "Fruta".

A classe "Fruta" é a mãe das classes "Kiwi", "Manga", "Limão", e "Laranja".

Existe uma nova categoria "Citrinos".

Coloque entre a classe "Fruta" e seus sucessores - Kiwi, Manga, Limão e Laranja.

"O Citrus é o pai do Limão e da Laranja.


A seguir, - atravessamos Manga e Limão e obtemos - um objeto Lee-Mango.

O objeto contém parcialmente propriedades cítricas e parcialmente propriedades não cítricas. Ela tem DOIS pais e esta Hierarquia não pode ser otimizada.

Portanto, temos herança múltipla do objeto Lee-Mango e um caminho duplo para o objeto Fruit subjacente: através da cadeia cítrica e através da cadeia da Manga.

Nestas cadeias, temos que contornar as propriedades dos pais desnecessárias a fim de preservar a personalidade do "Lee-Mango".

 

Peter, chama-se: lixar o próprio cérebro - surgindo com dificuldades intransponíveis. Você precisa especificar a tarefa e fazer classes para ela.

Por que introduzir uma classe intermediária chamada "frutas cítricas"? Talvez o problema possa ser resolvido simplesmente adicionando a propriedade "frutas cítricas" à lista dinâmica.

 
Dmitry Fedoseev:

Peter, chama-se: lixar o próprio cérebro - surgindo com dificuldades intransponíveis. Você precisa especificar a tarefa e fazer classes para ela.

Por que introduzir uma classe intermediária chamada "frutas cítricas"? Talvez o problema possa ser resolvido simplesmente adicionando a propriedade "cítrica" à lista dinâmica.

Queria escrever agora mesmo sobre as propriedades.
A propriedade gustativa será a média das propriedades das duas frutas.
 

E isto. O OOP é, afinal, uma ferramenta de programação, não uma ferramenta de dados (como faço para corrigir isso). A ferramenta de dados é um banco de dados.

Três mesas. Uma tabela tem duas colunas: a identificação da fruta e seu nome. A outra tem duas colunas: a identificação do imóvel e seu nome. A terceira tem duas colunas: id de fruta, id de propriedade.

Como resultado, é possível acrescentar infinitamente novas propriedades, atribuí-las à fruta e assim obter qualquer nova fruta.

Os meios para resolver o problema devem ser apropriados para a tarefa.

 
Dmitry Fedoseev:

Peter, chama-se: lixar o próprio cérebro - surgindo com dificuldades intransponíveis. Você precisa especificar a tarefa e fazer classes para ela.

Por que introduzir uma classe intermediária chamada "frutas cítricas"? Talvez a tarefa possa ser resolvida simplesmente adicionando a propriedade "frutas cítricas" à lista dinâmica.

Que assim seja.

Mas e quanto a cruzar as propriedades dos dois objetos que geram um novo objeto? O novo objeto herdará parcialmente as propriedades dos outros dois objetos.

Como implementar sua herança "parcial" entre vários objetos (seus pais) e o objeto de base?

 
Реter Konow:

Que assim seja.

Mas e quanto ao cruzamento das propriedades de dois objetos que geram um novo objeto? O novo objeto herdará parcialmente as propriedades de dois outros objetos.

Como implementar sua herança "parcial" de vários outros objetos?

Aplicando um algoritmo apropriado para resolver este problema em particular.

O OOP é uma ferramenta de programação, não um meio de descrever o mundo ao redor, não importa como ele corresponda um ao outro de algum ponto de vista.

 
Dmitry Fedoseev:

E isto. O OOP é, afinal, uma ferramenta de programação, não uma ferramenta de dados (como faço para corrigir isso). A ferramenta de dados é um banco de dados.

Três mesas. Uma tabela tem duas colunas: a identificação da fruta e seu nome. A outra tem duas colunas: a identificação do imóvel e seu nome. A terceira tem duas colunas: id de fruta, id de propriedade.

Como resultado, é possível acrescentar infinitamente novas propriedades, atribuí-las à fruta e assim obter qualquer nova fruta.

Os meios para resolver o problema devem ser compatíveis com o problema.

Não se trata de propriedades, mas sim de herança. Ou seja - a distribuição de propriedades e métodos entre objetos.

Novos objetos ligarão as propriedades dos objetos anteriores em diferentes combinações, o que aumentará a complexidade de suas cadeias ao objeto base.

 
Реter Konow:

Não se trata de propriedades, mas sim de herança. Ou seja, a distribuição de propriedades e métodos entre objetos.

Novos objetos ligarão as propriedades dos objetos anteriores em diferentes combinações, o que aumentará a complexidade de suas cadeias ao objeto base.

Os próprios objetos não farão isso. Selecione propriedades de uma fruta e propriedades de outra fruta do banco de dados, combine (deixe algo, descarte algo) - você recebe uma nova fruta - adicione-a ao banco de dados.

 
Mesmo a natureza não tem possibilidades ilimitadas de combinar propriedades. Há um certo número de cromossomos, e eles estão limitados a um conjunto de propriedades.
Razão: