[quote=drsmachado]Há uma grade diferença entre herdar e ser composto por.
Por exemplo, uma casa é composta por tijolos, embora ambos objetos possuam características comuns, uma casa não é um tijolo.
Casa e tijolo são objetos, logo, herdam características comuns a todos os objetos, como peso, tamanho, quantidade de lados, etc.
Casa é um tipo de abrigo. De abrigo, herda todos os comportamentos e todas as características. Um tijolo é um material de construção. De material de construção, herda todas as características, bem como, de outros tipos de objetos dos quais herda, quando o universo-problema é outro.
Por exemplo, um cachorro é um animal, quando o foco do universo-problema vê como necessária essa relação.
Mas cachorro também é um amigo, quando o foco é a relação de amizade.
Ou seja, vai depender do escopo de onde você quer colocar carro, porta e farol.
Porém, pela abordagem que usou, já começa errado. Porta, carro e farol TEM UM atributosCarro (peso, cor, etc).
Você é um filho, possui todas as características e operações comuns a todos os filhos. Mas, se ainda não é pai, não TEM UM filho, assim sendo, não pode dizer que herda de pai. Entendeu?[/quote]
Já esclareceu…
A minha dúvida é, estou começando a projetar um sistema e gostaria de começar certo! Usando herança acredito que com o crescimento dele terei prováveis problemas, por que o conceito de herança talvez não se encaixaria muito bem no futuro.
No meu sistema terei vários objetos que tem atributos em comum como peso, comprimento, tipo, modelo que poderia ser herdados de uma classe pai mas não se enquadrariam dentro do conceito “É UM”. Somente usaria para centralizar os atributos.
Outro caminho seria o uso de interface e composição… mas usando interface não poderei usar variaveis comente metodos???