none
Dúvida de OOP com C# RRS feed

  • Pergunta

  • Prezados

    Estamos com uma dúvida, creio eu que mais relacionada a OOP do que a C# propriamente dito mas gostaria de ouvir a opinião de vocês.

    CENÁRIO:
    Imaginem um cadastro de PESSOAS onde neste cadastro poderei veicular a cada pessoas os veículos que a mesma possuí.
    Minha UI chama um SERVIÇO que por sua vez chamará a camada BLL que chamará a DAL que por fim a MODEL.
    No projeto na camada MODELS eu tenho 2 entidades: PESSOA e VEICULO_PESSOA sendo que cada uma destas, tem suas propriedades e o RETORNO DAS MESMAS É UMA COLEÇÃO.

    Na minha camanda BLL terei situações que:

    1) Precisarei retornar apenas a coleção PESSOAS;
    2) Precisarei retornar a coleção PESSOAS e também a coleção VEICULO_PESSOA referente a cada pessoa da coleção pessoa;

    Em tese: Preciso retornar a coleção de pessoas com seus respectivos veículos.

    Pensando em OOP e boas práticas qual seria a forma correta de se tratar esta situação?

    Agradeço a atenção!


    Eduardo Agostinho Analista Programador - C# Developer

    quarta-feira, 19 de setembro de 2012 14:51

Respostas

  • Eduardo, 

    Utilize essa sugestão que já te deram, acredito ser a melhor forma, pois, é assim que o próprio entity faz

    Como você tem uma Classe Model Pessoal e outra Veiculo_Pessoa

    Faça na classe Pessoal uma propriedade para a coleção de Veiculos

    public class Pessoa
    {
        List<Veiculo_Pessoa> Veiculos;
    }

    E pensando em OOP, sem duvida nenhuma é a melhor solução


    Bruno Viegas D. Ribeiro

    Nunca abandone sua thread!
    - Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
    - Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil.

    • Marcado como Resposta EAgostinho quarta-feira, 19 de setembro de 2012 18:25
    quarta-feira, 19 de setembro de 2012 16:31

Todas as Respostas

  • Eduardo, Boa tarde

    De uma olhada no Entity Framework, se no seu banco de dados essas estidades estão estão ligadas, o proprio entity já vai fazer isso para você

    http://msdn.microsoft.com/en-us/library/aa697427(v=vs.80).aspx


    Bruno Viegas D. Ribeiro

    Nunca abandone sua thread!
    - Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
    - Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil.

    quarta-feira, 19 de setembro de 2012 15:08
  • Prezado Bruno, agradeço a atenção.

    Concordo com sua observação, mas na verdade não utilizamos o Entity Framework visto que nossa aplicação pode utilizar vários tipos de bancos, sendo assim, nossa classe de acesso ao banco utiliza DbProviderFactory e de acordo com o tipo de banco instancio um objeto de acesso a dados baseado em um contrato.

    A dúvida está no retorno visto que utilizo WCF e em alguma situações vou retornar apenas a PESSOA em outras vou retornar a PESSOA e os VEÍCULOS da mesma. Se meu retorno é uma coleção como tratá-lo?

    Uma sugestão que me deram, foi de criar uma propriedade _veiculoPessoa dentro da entidade PESSOA que retornará a COLEÇÃO -> CLASSE VEÍCULO_PESSOA na própria classe PESSOA.

    Espero que tenha conseguido explicar.

    Aguardo sugestões



    Eduardo Agostinho Analista Programador - C# Developer

    quarta-feira, 19 de setembro de 2012 16:05
  • Eduardo, 

    Utilize essa sugestão que já te deram, acredito ser a melhor forma, pois, é assim que o próprio entity faz

    Como você tem uma Classe Model Pessoal e outra Veiculo_Pessoa

    Faça na classe Pessoal uma propriedade para a coleção de Veiculos

    public class Pessoa
    {
        List<Veiculo_Pessoa> Veiculos;
    }

    E pensando em OOP, sem duvida nenhuma é a melhor solução


    Bruno Viegas D. Ribeiro

    Nunca abandone sua thread!
    - Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
    - Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil.

    • Marcado como Resposta EAgostinho quarta-feira, 19 de setembro de 2012 18:25
    quarta-feira, 19 de setembro de 2012 16:31
  • Eduardo, 

    Utilize essa sugestão que já te deram, acredito ser a melhor forma, pois, é assim que o próprio entity faz

    Como você tem uma Classe Model Pessoal e outra Veiculo_Pessoa

    Faça na classe Pessoal uma propriedade para a coleção de Veiculos

    public class Pessoa
    {
        List<Veiculo_Pessoa> Veiculos;
    }

    E pensando em OOP, sem duvida nenhuma é a melhor solução


    Bruno Viegas D. Ribeiro

    Nunca abandone sua thread!
    - Se alguma resposta resolveu seu problema marque-a como resposta para que possa ajudar outras pessoas.
    - Se a resposta não resolveu, mas ajudou a você chegar a sua resposta Marque-a como útil.

    É isso ai deu certo...
    obrigado mais uma vez!!!


    Eduardo Agostinho Analista Programador - C# Developer

    quarta-feira, 19 de setembro de 2012 18:25