Dúvida na criação de classe

2 respostas
java
phelpsmemo

Opa pessoa tudo bom, bem sou iniciante em OO e tenho uma dúvida relacionada a quando devo criar classes e aplicar herança. Veja estou criando um projeto simples, onde faço o cadastro de vários produtos, porém tenho em mente separar cada produto por tipo, e para isso fiz a criação de uma classe produto e dessa criei várias classes que herdam o produto, neste caso, da classe produto nasceu a classe ProdutoParaCachorros, e assim por diante.

Minha dúvida é, está é a melhor opção ? Fiz várias pesquisas sobre a manutenabilidade deste código, porém não consegui algo concreto.

Obrigado pela ajuda

2 Respostas

A

O produto tem um TIPO, logo ao meu ver, basta criar uma classe produto com os atributos necessários, como:

List<Image> imagens;
String nomeProduto;
long codigoProduto
Descricao descricao;//a descrição do produto é uma entidade a parte.
float Preco;
Avaliacao avaliacao; //a avaliação também é uma entidade a parte.
TipoProduto tipoProduto;//uma enum, que serve de filtro para pesquisas e padronização e se ficar complexa, você pode tentar usar o padrão Flyweight + Singleton (mais trabalhoso, para algo + complexo), removendo a enum
//outros atributos necessários

Assim, você poderia FILTRAR as pesquisas pelo TIPO do produto e NÃO pela CLASSE.
Neste caso, não vejo como usar herança.

Digo isto pois existe um problema que poucos prestam atenção: <strong>a ambiguidade da linguagem natural</strong>.

Exemplo:

Classe Pessoa;

Classe Cliente herda de Pessoa

Classe Funcionario herda de Cliente

Classe Gerente herda de Funcionário. (Erro semântico)

Estava aceitável até funcionário, só que gerente não é pessoa, é profissão.
Veja, a pessoa pode ser um funcionário e pode ser um gerente (na situação de pessoa).
Mas quando você diz que o gerente é uma pessoa, mas o trata como uma profissão, a herança foi aplicada de forma equivocada, pois o contexto de utilização é diferente.

Assim, a aplicação da herança, usando somente a pergunta é um, sem a análise de um contexto e sem levar em consideração a ambiguidade da linguagem natural é problemática.

Obs.: está é uma opinião pessoal de um estudante, não de alguém que trabalha na área.
Assim, aguarde por outras avaliações.

No geral, eu usaria herança, mas não neste caso.

Té+
Bom trabalho.

phelpsmemo

Entendi, pensei em fazer isso, porém me veio essa dúvida, justamente por esse fato, de um tipo um sendo criado a partir de outro. Acabei fazendo da forma de ir gerando classes, e depois que estava acabando o pequeno projeto percebi essa questão. E além dos pontos citados por você o projeto ficou muito complexo, para algo que é simples, que neste caso é cadastrar e consultar produtos.

Vou recriar agora orientando pelo tipo.

Obrigado pela ajuda =D.

Valeu

Criado 9 de setembro de 2017
Ultima resposta 9 de set. de 2017
Respostas 2
Participantes 2