Programação Orientada a Objetos - Classes
Autor: Guilherme Viterbo Galvão | Publicado: 2012-03-04T12:13:00-08:00



Para podermos começar a entender o que são classes vamos criar um projeto no Visual Studio com o nome de "projeto" :




Feito isso vamos entender o que é uma classe: 

- Uma Classe é composta de métodos (funções) e propriedades (digamos que 
"variáveis"). Um bom&nbsp; exemplo para entendermos isso é o da receita de 
bolo, onde as propriedades são os ingredientes e o método o modo de 
preparo.
Através disso podemos representar coisas do mundo real ou não, como 
assim? Simples, vamos a um exemplo do mundo real. Vamos criar a Classe 
Pessoa que possui nome, rg, cpf, endereço, idade, data de nascimento.
Para criarmos uma nova classe no nosso projeto iremos clicar com o botão direito do mouse em cima do projeto e ir na opção ADD - CLASS:





O código da classe "Pessoa" fica representado da seguinte forma:



//Código em C# 
using System;

public class Pessoa
{
&nbsp;&nbsp;&nbsp; private String nome;

&nbsp;&nbsp;&nbsp; public String Nome
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return nome; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nome = value; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp; private String rg;

&nbsp;&nbsp;&nbsp; public String Rg
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return rg; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rg = value; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp; private String cpf;

&nbsp;&nbsp;&nbsp; public String Cpf
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return cpf; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set { cpf = value; }
&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp; private String endereco;

&nbsp;&nbsp;&nbsp; public String Endereco
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return endereco; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endereco = value; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp; private int idade;

&nbsp;&nbsp;&nbsp; public int Idade
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return idade; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; idade = value; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp; private String dataNascimento;

&nbsp;&nbsp;&nbsp; public String DataNascimento
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return dataNascimento; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataNascimento = value; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }
} 



Repare que fizemos os atributos idênticos às propriedade e apartir disso
 fizemos os seus respectivos Gets (sempre retorna algum valor de alguma 
propriedade) e Sets (insere algum valor a uma propriedade). São eles que
 serão usados, quando a Classe Pessoa for instânciada, para acessar as 
propriedades. Isso que acabamos de fazer é mais conhecido como 
Encapsulamento, que é utilizado quando queremos limitar o acesso do 
usuário às propriedades do nosso objeto.

Agora vamos a um exemplo sem ser do mundo real. Vamos supor que você 
queira fazer uma classe que randomize valores que o usuário digita. Ela 
também terá métodos e propriedades, so que bem diferentes do que vimos.
Exemplo:



//Código em C# 
using System;

public class Sorteio
{
&nbsp;&nbsp;&nbsp; //ingredientes, lembra?&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; private int i;

&nbsp;&nbsp;&nbsp; public int I
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return i; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i = value; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp; //a forma de preparo...
&nbsp;&nbsp;&nbsp; public int sortear()
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Random r = new Random();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return r.Next(i);
&nbsp;&nbsp;&nbsp; }
}



Note que neste caso criamos o método "setI" que dá acesso ao usuário do 
objeto a inserir um valor na propriedade "i". Mas nesse caso não fizemos
 o método "getI",&nbsp; apenas um método que retorna o valor já sorteado. 
Claro que essa Classe poderia ser feita de outra forma, mas não estamos 
discutindo aqui Engenharia de Classes e sim mostrando as diferenças 
entre Classes que representam coisas do mundo real e Classes que 
expressão uma necessidade do programador.



Bom pessoal é isso ai até o próximo post.

 prettyPrint();