Revista MSDN Magazine Edição 34 - Programação Orientada a Objetos no C#(csharp) .NET
Artigo Originalmente Publicado na MSDN Magazine Edição 34
Clique aqui para ler todos os artigos desta edição
Programação Orientada a Objetos no C# .NET
Marcelo Santos Daibert e Marco Antônio Pereira Araújo
O C# é uma linguagem de programação que une o poder e a flexibilidade da linguagem C/C++ com a produtividade de linguagens e ambientes de desenvolvimento rápido (RAD - Rapid Application Development). Outro fator importante é a interoperabilidade de uma aplicação desenvolvida em C#.
As classes, quando bem desenvolvidas, podem tanto servir para uma aplicação desktop, quanto para uma aplicação Web e vice-versa, além de servir a Web Services e tecnologias de componentes. Totalmente Orientado a Objetos, o C# é fortemente tipado, onde cada variável deve ser associada com algum tipo de dado ou objeto, contribuindo assim para a manutenibilidade e confiabilidade do sistema.
Este artigo tem o objetivo de abordar de forma prática o desenvolvimento de uma aplicação, usando a linguagem C# do Visual Studio 2005, utilizando os recursos da Programação Orientada a Objetos (POO), do .NET 2.0 e do framework de persistência Objeto-Relacional chamado nHibernate.
Estudo de Caso
No escopo deste artigo é apresentado um estudo de caso para exemplificar as técnicas de programação Orientada a Objetos, utilização das classes do .NET 2.0, do nHibernate e do Visual Studio 2005, aplicados na linguagem C#.
O estudo de caso apresenta um fragmento de um sistema maior, representado aqui pela relação entre funcionários e departamentos de uma empresa, através das classes Departamento, Funcionario e FuncionarioHorista. A classe Funcionario é abstrata, servindo para a definição dos elementos comuns às suas subclasses através da herança.
Todos os funcionários devem estar lotados em um Departamento, que pode ter vários funcionários. A Figura 1 representa o diagrama de classes do nosso sistema.
Figura 1. Diagrama de Classes do estudo de caso
Através desse estudo de caso, são abordados temas como classes, objetos, métodos, atributos, persistência de objetos, herança, polimorfismo, herança, diálogos, associações e programação em camadas MVC (Model-View-Controller), além de temas pertinentes ao ambiente de desenvolvimento, como utilização de componentes, classes e controles disponibilizados pelo Visual Studio 2005 e do .NET 2.0.
Classes, Propriedades e Métodos
O primeiro passo para iniciar o desenvolvimento é a criação de um projeto Windows Forms no Visual Studio 2005, chamado “Empresa”. Com isso, é criado um namespace de mesmo nome. Com o projeto criado, é possível adicionar arquivos, classes, formulários, formulários Web, referências, diretórios, entre outros. Selecione o projeto no Solution Explorer e acesse o menu Project>New Folder, dando o nome de “Classes”, que será o repositório das classes do sistema.
Para adicionar uma nova classe ao diretório, (não esqueça de deixar selecionado a pasta criada anteriormente), acesse o menu Project>Add Class e dê o nome de “Funcionario.cs” (Figura 2).
Figura 2. Criação de uma nova classe
Clique em Add para adicionar a classe ao diretório. As Listagens 1, 2 e 3 apresentam o código-fonte de definição das classes Funcionario, FuncionarioHorista e Departamento do exemplo proposto, respectivamente, todas dispostas no namespace Empresa.Classes.
É importante que cada classe esteja em um arquivo próprio, devendo-se criar uma nova classe para FuncionarioHorista e Departamento.
Listagem 1. Definição da Classe Funcionario
using System.Collections;
1. namespace Empresa.Classes {
2.public abstract class Funcionario {
3.public Funcionario(String pNome, String pCPF){
4.this.Nome = pNome;
5.this.CPF = pCPF;
6.this.Departamento = new Departamento();
7.}
8.public Funcionario(){
9.}
10.private String codigo;
11.private String nome;
12.private String cpf;
13.private Departamento departamento;
14.public String Codigo{
15.get { return this.codigo; }
16.set { this.codigo = value; }
17.}
18.public String Nome{
19.get { return this.nome; }
20.set { this.nome = value; }
21.
22.}
23.public String CPF{
24.get { return this.cpf; }
25.set { this.cpf = value; }
26.}
27.public Departamento Departamento{
28.get { return this.departamento; }
29.set { this.departamento = value; }
30.}
31.
32.public abstract float calcularSalario();
33.
34.public abstract Boolean Persistir();
35.public abstract Boolean Atualizar();
36.public static Funcionario RecuperaObjeto(
String pID) { }
37.public static IList RecuperaObjetos() {}
38.public static Boolean Excluir(String pID) {}
39.}
40.}
Na Listagem 1, a linha 2 exibe a assinatura da classe abstrata Funcionario. Ela é abstrata por não instanciar objetos, tendo por objetivo definir os elementos comuns às suas subclasses. Entre as linhas 10 e 13 são apresentados os atributos codigo, nome, cpf e departamento da classe. Todos com visibilidade privada, sendo acessados pelas propriedades definidas entre as linhas 14 e 30. As propriedades, nesse caso, agem como métodos " [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo