 VB .NET - Criando uma 
aplicação em camadas (de novo)
  
VB .NET - Criando uma 
aplicação em camadas (de novo)
O título do artigo já sugere que o assunto não é novo visto que já escrevi diversos artigos sobre o desenvolvimento de aplicações em camadas. (Veja as referências)
Mas este artigo apresenta uma novidade: nele eu vou mostrar como criar uma aplicação Windows Forms usando a linguagem VB .NET em camadas usando a separação física de componentes em assemblies distintos. Dessa forma iremos ter uma solução e 3 projetos distintos.
Nota: Para saber mais leia o meu artigo : .NET - Definindo um infra-estrutura baseada em camadas
Neste artigo eu vou mostrar a arquitetura da solução explanando cada um dos seus componentes e a sua função.
Podemos dizer que este projeto será um projeto focado nos dados o que se conhece por Data Drive Development mas também podemos dizer que aplicaremos ao nosso projeto os conceitos do Domain Drive Design (DDD) que propõe a separação clara das camadas da aplicação.
| Domain-Driven Design não é uma tecnologia ou metodologia, mas sim uma abordagem de design de software disciplinada que reúne um conjunto de conceitos, técnicas e princípios com foco no domínio e na lógica do domínio para criar um domain model. Grátis PDF do livro Domain Driven Design Quickly que é uma versão reduzida do livro Domain Driven Design do Eric Evans: Login to download this book FREE (PDF) - pegue o livro | 
Vamos começar explicando o nosso modelo de dados. Nosso modelo de dados é bem simples nele teremos duas entidades:
- 
Cursos - que representam as 
informações dos cursos oferecidos por uma escola
- Estudantes - que 
representam as informações dos alunos que estão matriculados nos cursos.
Existe portanto uma relação entre as entidades, pois um curso pode ter um ou mais alunos matriculados e um aluno pode estar matriculado em um curso.
No modelo relacional de banco de dados podemos representar o relacionamento entre as entidades criando as tabelas Cursos e Estudantes. (Aqui o banco de dados a ser escolhido pode ser qualquer um. Para ficar mais simples eu vou usar o Microsoft Access)
A seguir temos um diagrama que representa as tabelas e seus campos (os atributos da entidade):
|  | A tabela 
    Cursos  possui o campo cursoID como chave primária A tabela Estudantes possui o campo estudanteID como chave primária e o campo cursoID como chave estrangeira. Existe um relacionamento do tipo um-para-muitos entre as tabelas onde um curso pode conter muitos alunos. 
 | 
Estas duas tabelas estão contidas no banco de dados Matricula.mdb, um banco de dados Microsoft Access.
A aplicação terá como objetivo registrar a matricula dos alunos em um determinado curso. Para isso usarei uma aplicação Windows Forms (poderia ser uma aplicação web) onde teremos o seguinte formulário que vai efetuar o registro:

Nossa aplicação vai possuir 3 camadas assim representadas:
Nota: Na literatura encontram-se com frequência os termos tiers e layers, em inglês, que geralmente são traduzidos como camadas. Olhando com atenção, embora a diferença seja bem sutil, compreende-se que tiers refere-se a uma separação física dos componentes (diferentes Assemblies, DLLs, arquivos), enquanto layers aponta para uma separação lógica dos componentes com classes distintas e diferentes espaços de nomes.
Abra o Visual Studio 2008 (você pode baixar a versão trial por 180 dias) e crie um novo projeto chamado AplicacaoTresCamadas usando a linguagem Visual Basic.
Agora vamos criar as 3 camadas separadas fisicamente. Para isso vamos adicionar 3 projetos distintos a partir do menu File -> Add -> New Project;
Na janela Add New Project vamos selecionar o template Class Library e informar o nome BusinessLogicLayer(BLL) que será a nossa camada de negócios que vai conter as classes com as regras de negócio da aplicação;
|  |  | 
Em seguida vamos criar a segunda camada; A partir do menu File -> Add -> New Project;
Na janela Add New Project vamos selecionar o template Class Library e informar o nome DataAccesLayer(DAL) que será a nossa camada de acesso a dados e que conterá as classes para acesso aos dados da aplicação;
Finalmente vamos criar a nossa camada de apresentação (User Interface-UI); A partir do menu File -> Add -> New Project;
Na janela Add New Project vamos selecionar o template Windows Application e informar o nome EstudanteMatricula(UI) que será a nossa camada de apresentação e que conterá os formulários para compor a interface com o usuário.
Ao final a nossa aplicação dever exibir os seguintes projetos na janela Solution Explorer:
|  | Nossa aplicação 
    é composta dos seguintes componentes: - A solução AplicacaoTresCamadas - O projeto BusinessLogicLayer (BLL) - O projeto DataAccessLayer (DAL) - O projeto EstudanteMatricula (UI) | 
Definindo a camada de negócios - BusinessLogicLayer - BLL
Vamos começar definindo as classes da camada de negócio - BusinessLogicLayer. Vamos criar classes para representar as entidades que representam o domínio da nossa aplicação , no caso , as entidades Cursos e Estudantes. Como desejamos definir claramente as responsabilidades de cada entidade vamos criar duas classes, uma para representa a entidade Cursos e outra para representar a entidade Estudantes.
Selecione o projeto BusinessLogicLayer e no menu Project selecione Add New Item ;
Na janela Add New Item selecione o template Class e informe o nome BLLCurso.vb

Repita o procedimento e crie agora a classe BLLEstudante.vb
Ao final deveremos ver na janela Solution Explorer as duas classes criadas conforme a figura abaixo:
|  | 
Agora vamos definir o conteúdo da classe BLLCurso. Aqui você pode definir métodos e rotinas conforme a definição dos requisitos do projeto. Para este nosso exemplo eu vou definir apenas dois métodos:
No início do arquivo BLLCurso.vb devemos declarar os imports usados:
Imports
SystemA seguir vamos declarar um namespace :
Namespace
BLL.CursosA seguir defina o nome da classe :
Public
Class BLLCursoAgora vamos definir variáveis globais que devem ser visíveis na classe:
Private _obj As DALCurso = NothingEm seguida temos os dois métodos definidos conforme o código a seguir:
| Public Function 
    TodosCursos() As DataSet 
 Try _obj = New DALCurso() _dset = _obj.TodosCursos() Catch ex As Exception Throw ex Finally _obj = Nothing     
    End 
    Try    
    Return 
    _dset End Function 
 
 | Public Shared
    Function GetPrecoCurso(ByVal 
    CursoID As Integer)
    As 
    Double 
 Dim _objc As DALCurso = Nothing 
 Try _objc = New DALCurso() _preco = _objc.getCursoPreco(CursoID) Catch ex As Exception Throw ex Finally _objc = Nothing End TryReturn _preco End Function | 
Observe que o método TodosCursos retorna um dataset e que instancia a classe DALCurso(), que ainda vamos criar, e chama o método TodosCursos.
O método GetPrecoCurso também cria uma instância da classe DALCurso() e usando o método getCursoPreco() que retorna o preço do curso, um valor do tipo Double.
Veja a continuação deste artigo em : VB .NET - Criando uma aplicação em camadas (de novo) II
| Veja os 
    Destaques e novidades do SUPER DVD Visual Basic 
(sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? | 
             Gostou ?
  Compartilhe no Facebook
Compartilhe no Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter 
Referências:
José Carlos Macoratti