SUGESTÕES PARA CRIA?ÃO DE CLASSES COM ATRIBUTOS

KELLY 13/08/2014 22:22:59
#440421
Boa noite turma,

Estou criando um sisteminha de controle de estoque onde também terei de armazenar informações referentes aos clientes, fornecedores e empregados, ambos são pessoas, mas pessoas físicas e jurídias. Os dados cadastrais são bem semelhantes aos três, como eu quero criar o sistema em camadas eu preciso criar uma classe de domínio contendo apenas os atributos. Achei estranho repetir os mesmos atributos três vezes em classes diferentes e mudando apenas um ou outro atributo. Se precisar eu posso postar a minha classe aqui.

O que vocês me sugerem?

Obrigada!

TUNUSAT 14/08/2014 09:10:43
#440427
KELLY,

Você pode criar um modelo genérico que tenha todas as características em comum das três pessoas. Depois cria três classes específicas com os dados que só aquelas pessoas tem. Neste ponto você pede para fazer uma [Ô]herança[Ô] para acabar de compor cada classe mais específica.
A ideia é fazer que cada classe específica herde todas as características do modelo genérico.
Nota: Este modelo genérico não precisa [Ô]utilizado na prática[Ô] (entre aspas) nunca, pois somente servirá de modelo para as classes.

A tabela no banco de dados pode ser a mesma e se você quiser ou achar interessante pode separar os dados específicos em outras três (uma tabela para cada pessoa) montando um relacionamento de 1 para 1 ou se não for o caso montar uma tabela única. Fica ao seu critério.

Coloquei estes links para você ler (de preferência tudo), mas separei o ponto específico onde aparece o que você quer fazer.

==============================================================

http://pt.slideshare.net/CursoSENAC/anlise-orientada-a-objetos-objetos-e-classes

==============================================================
...
46. Considere um programa para gerenciar clientes, empregados e fornecedores de uma empresa. Para cada tipo de objetos criamos uma classe com atributos e métodos. Exemplo Classes Pessoa e Empregado : Diagrama de Classes – Generalização ou Herança Pessoa nome sexo devolveSexo() devolveNome() imprime() Empregado nome sexo salario devolveSexo() devolveNome() devolveSalario() atualizaSalario(sal) imprime()

47. 1.Comparando as classes, observamos que:
1.Ambas possuem os atributos nome e sexo .
1.Ambas oferecem os mesmos métodos para buscar o nome e o sexo ( devolveNome() , devolveSexo() ).
1.A classe Empregado “adiciona” um novo atributo para armazenar o salário, e os métodos específicos de um empregado.
1.Portanto podemos dizer que um empregado é uma pessoa com algumas “coisas” a mais.
1.Seria interessante se não precisássemos repetir na classe Empregado o código comum à classe Pessoa .
1.Isto é possível se definirmos que a classe Empregado herda as características da classe Pessoa .

Diagrama de Classes – Generalização ou Herança

48. Representação Gráfica Diagrama de Classes – Generalização ou Herança Empregado Pessoa
...
==============================================================

http://pt.slideshare.net/Ridlo/uml-1858376

==============================================================

Diagrama de Classes
http://www.inf.ufpr.br/silvia/ESNovo/UML/pdf/ModeloConceitualAl.pdf

Observe o slide que tem:
[Ô]Métodos ou Serviços: Documento -> Carta, Fax ou Telefonema[Ô]
Veja que o [Ô]Fax[Ô] nem tem propriedades próprias!

==============================================================

Macoratti sempre é legal!
http://www.macoratti.net/net_uml1.htm

==============================================================

Se você quiser, posso montar para você um exemplo bacana para seu caso específico.


[][ô]s,
Tunusat.
KELLY 17/08/2014 22:32:43
#440510
Boa noite TUNUSAT, eu posso postar a minha classe para você me orientar como fazer a herança nesse meu projeto que estou trabalhando em camadas? Se fosse de outra forma eu saberia como fazer a herança, mas como estou utilizando camadas não sei como fazer sem utilizar herança múltiplas, coisa que em C# não é possível.

JABA 17/08/2014 23:02:18
#440512
Resposta escolhida
Vou te dar o caminho das pedras, veja:

class Pessoa
{
public int ID { get; set; }
public string Nome { get; set; }
}

class PessoaFisica
{
public string CPF { get; set; }
}

class PessoaJuridica
{
public string CNPJ { get; set; }
}

class Cliente : PessoaFisica
{
// coisas relacionadas ao cliente
}

class Funcionario : PessoaFisica
{
public decimal Salario { get; set; }
}

class Vendedor: Funcionario
{
// coisas relacionadas ao vendedor
}

class Fornecedor: PessoaJuridica
{
// coisas relacionadas ao fornecedor
}

KELLY 18/08/2014 21:13:09
#440570
Nossa!! Você não me deu o caminho das pedras, mas asfaltou toda a pista. rs!
Gostei do exemplo, eu coloco a classe pessoa primeiro e vou herdando as demais classes abaixo. Gostei do exmplo Jaba. Irei implementar dessa forma.

Muito obrigada!!

Tópico encerrado , respostas não são mais permitidas