Atenção: esse artigo tem uma palestra complementar. Clique e assista!

Do que trata o artigo

Continuando com o conteúdo sobre C#, será abordado o principal fundamento da programação orientada a objetos: a criação de classes. Além de entendermos a elaboração de uma classe desde o seu princípio, veremos também como usar herança para que seja possível o reaproveitamento de código. Aprofundando um pouco neste assunto criaremos uma interface para que seja usada de base para criação de outras classes. Veremos ainda como criar campos, propriedades e métodos para adicionar funcionalidades a sua classe. Também veremos como fazer com que os métodos de mesmo nome em uma classe executem tarefas aceitando listas diferentes de parâmetros de entrada.

Para que serve

A programação orientada a objeto (POO ou OOP do inglês Object Oriented Programming) representou um marco na evolução do desenvolvimento dos softwares. Quando bem empregada evita que o programador tenha que ficar reescrevendo códigos para problemas que já foram resolvidos anteriormente, ou seja, promove a reutilização de código. Mesmo que o problema a ser resolvido seja ligeiramente diferente de um problema para o qual já existe uma classe desenvolvida, pode-se estender a funcionalidade da classe com o uso da herança. Classes são úteis, pois procuram representar os elementos da programação fazendo uma analogia ao mundo real com termos como “Objetos”, “Interfaces”, “Propriedades”, “Campos”, “Métodos”. Você poderá agregar ainda proteção para os dados da sua classe expondo somente os elementos que desejar com o uso da definição do nível de acesso dos elementos da classe. Um conceito importante é procurar entender as classes como modelos de objetos que serão utilizados para resolver problemas computacionais. Pode-se usar classes apenas para armazenar dados na memória que serão manipulados pelo programa ou ainda, executarem tarefas específicas como acessar bancos de dados, ler ou escrever em arquivos, e muitas outras.

Em que situação o tema é útil

A essência de um programa consiste em manipular dados na memória do computador para poder executar alguma tarefa. Você poderá usar classes para receber os dados digitados de um usuário em seu Web Site ou aplicação Windows e serializar na forma de arquivos XML ou mesmo enviar para o banco de dados. Você pode ter uma biblioteca com diversas classes que realizam tarefas das mais variadas categorias e criar o seu próprio framework para elaborar programas mais complexos. O próprio Microsoft .Net Framework consiste de inúmeras classes as quais você utiliza o tempo todo. Com o uso de orientação a objetos você poderá resolver problemas como gerenciamento de contas a receber de clientes usando um nível mais alto de raciocínio porque, em vez de pensar em variáveis de memória e tabelas em bancos de dados ou ponteiros, você passa a lidar com objetos como faturas, duplicatas, ordem de pagamento etc.

Resumo do DevMan

Com o surgimento da programação orientada a objetos, muitas tarefas repetitivas começaram a se tornar mais fáceis de serem implementadas. Além de uma forte analogia com o mundo real através do conceito de “Objeto”, graças a elementos como herança e interface, o programador pôde reaproveitar muito mais os códigos escritos anteriormente. Através do uso de classes para modelar a maneira como o programa manipula os dados e executa a lógica para resolução de diversos problemas, se tem uma organização maior para desenvolver as aplicações. Uma classe pode começar simples e ir evoluindo ao longo do ciclo de vida da aplicação. Também é possível se criar um modelo para as classes, representado pela “Interface”. As classes devem ser usadas para manipular dados procurando representar o mundo real da forma mais acurada que for possível através de conceitos como campos, propriedades, encapsulamento, métodos, polimorfismo, herança etc. Os dados propriamente ditos devem ser representados por campos e propriedades sendo que estas últimas podem incluir algumas validações e tratamento de dados assim que estes são preenchidos. As operações a serem realizadas com os dados são representadas pelos métodos. Estes métodos precisam sempre que possível ocultar toda a complexidade envolvida na resolução de determinado problema por parte da classe devendo realizar tarefas bem específicas sem tornar-se muito extenso. Pode ser ainda que você queira criar uma classe que não armazene nenhum dado mas, seja um elemento que execute tarefas variadas sem reter nenhum tipo de dado. Dessa forma, o foco principal deste artigo é explorar exatamente este tema: classes.

Classes são úteis. Na verdade torna-se muito difícil programar atualmente sem fazer uso de uma classe. Vamos iniciar um exemplo, crie uma aplicação do tipo Console no Visual Studio e veja o código gerado automaticamente pela ferramenta, conforme Listagem 1.

Listagem 1. Exemplo de programa console

1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 
      6 namespace ConsoleApplication1
      7 {
      8    class Program
      9    {
     10       static void Main(string[] args)
     11       {
     12       }
     13    }
     14 }
     15 

Note que logo nas primeiras linhas está sendo declarada uma classe chamada “Program” através do uso da palavra chave “class” e é a partir desta que todos os códigos serão executados. A mesma coisa acontece com qualquer outro tipo de programa. Vejamos mais um exemplo com uma aplicação Windows. A Listagem 2 mostra o arquivo “Program.cs” que é gerado automaticamente quando criamos uma aplicação Windows Forms.

Listagem 2. O arquivo Program.cs de uma aplicação Windows Forms

1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Windows.Forms;
      5 
      6 namespace WindowsFormsApplication1
      7 {
      8    static class Program
      9    {
     10       /// <summary>
     11       /// The main entry point for the application.
     12       /// </summary>
     13       [STAThread]
     14       static void Main()
     15       {
     16          Application.EnableVisualStyles();
     17          Application.SetCompatibleTextRenderingDefault(false);
     18          Application.Run(new Form1());
     19       }
     20    }
     21 }
     22 

E ali está novamente a classe “Program”. Isto acontece principalmente pelo fato de o Microsoft .NET ser um ambiente orientado a objetos, assim como o é também o sistema operacional Windows. Logo, nada mais natural que cada programa seja tratado como um objeto, com suas propriedades, dados e métodos. Todo o Microsoft Framework .NET consiste em várias bibliotecas de classes que executam cada uma tarefas específicas. Quando tiver oportunidade examine a pasta “C:\windows\Microsoft.NET\Framework” para verificar as bibliotecas de classes (DLLs) e também a documentação do framework para conhecer algumas destas classes.

Nota do DevMan

Uma prática muito recomendada é que quem deseja usar o Microsoft Framework .NET para desenvolver suas aplicações conheça como as classes funcionam sem necessariamente passar por uma ou outra linguagem como o C# ou o Visual Basic .NET. A própria biblioteca MSDN que é instalada juntamente com o Visual Studio traz exemplos para várias linguagens onde se pode perceber que pouca coisa muda de uma linguagem para outra. Com esta prática, mesmo que em algum momento seja optado por uma linguagem diferente da que se está acostumado, será mais fácil para o desenvolvedor se adaptar, pois já conhece a estrutura do ambiente para o qual está desenvolvendo. Linguagens e práticas à parte, é muito bom poder conhecer realmente a estrutura do .NET, por outro lado, se você optar por uma ou outra linguagem, irá perceber que cada uma delas tem pequenas diferenças sendo que em alguns casos certas tarefas são executadas diferentemente dependendo da linguagem escolhida. A escolha da linguagem é algo de certa forma pessoal sendo que uma recomendação é que se opte por aquela que existe mais documentação disponível e pessoas trabalhando com a mesma. A menos que você esteja fazendo pesquisas por novas linguagens de programação. Esta é uma discussão árida e longa. Procure conhecer tudo o que for possível de orientação a objetos, as ferramentas do framework e se você optou pelo C#, seja bem-vindo.

Para desenvolver os exemplos deste artigo eu usei os seguintes recursos:

• Microsoft Windows Vista, sendo que não haverá problema se você optar por outra versão;

• Microsoft Visual Studio .NET 2010 Professional com o Microsoft Framework 3.5. Você conseguirá também fazer os exemplos com o Visual Studio 2008 sem problemas;

Neste artigo vou novamente trabalhar com uma aplicação Console para não termos de ficar configurando elementos da interface de usuário caso optasse por uma aplicação Windows Forms. Entretanto os conceitos aprendidos aqui podem ser facilmente aplicados a qualquer tipo de programa.

...

Quer ler esse conteúdo completo? Tenha acesso completo