Escolar Documentos
Profissional Documentos
Cultura Documentos
1 Classes
As classes representam o fundamento da orientao por objetos. Uma classe em C# funciona como uma estrutura,
onde podemos acrescentar no s campos mas tambm funes a uma estrutura. Isto permite "empacotarmos" uma
estrutura de dados junto como os procedimentos que iro manipular com esta estrutura. Por exemplo, se quisermos
criar uma estrutura de dados para armazenar um tringulo, as funes para desenhar, redimensionar, calcular
permetro, rea, etc. ficariam indistintamente associadas a estrutura de dados do tipo tringulo.
Classe o termo tcnico utilizado em linguagens orientadas a objetos que descreve um conjunto de dados
estruturados que so caracterizados por propriedades comuns. Tambm pode ser interpretado como uma estrututura
modular completa que descreve as propriedades estticas e dinmicas dos elementos manipulados pelo programa.
Pode-se definir classes de objetos como a descrio de um grupo de objetos por meio de um conjunto uniforme de
atributos e servios. Uma classe um conjunto de objetos que compartilham as mesmas operaes.
Enquanto um objeto individual uma entidade concreta que executa algum papel no sistema como um todo, uma
classe captura a estrutura e o comportamento comum a todos os objetos que so relacionados. Um objeto possui
uma identidade e suas caractersticas sero definidas para a classe.
Uma classe definida por:
?
?
?
?
um nome da classe;
o nome da sua superclasse;
o nome de suas variveis privadas;
os nomes e as definies de todas as operaes associadas a esta classe;
Classe um conceito esttico: uma classe um elemento reconhecido num texto de programa. por outro lado, um
objeto um conceito puramente dinmico, o qual pertence no ao texto do programa, mas memria do
computador, local onde os objetos ocupam espao durante a execuo. (Conceitualmente, classes no so
necessrias durante a execuo, mas em linguagens interpretadas elas podem ser mantidas).
ATRIBUTOS
Um atributo um dado para o qual cada objeto tem seu prprio valor. Atributos so, basicamente, a estrutura de
dados que vai representar a classe.
MTODOS
Mtodos so declarados dentro de uma classe para representar as operaes que os objetos pertencentes a esta
classe podem executar. Um mtodo a implementao de uma rotina, ou seja, o cdigo propriamente dito. Pode ser
comparado a um procedimento ou funo das linguagens imperativas.
1.1 Definio
public class <Nome da classe>
{
<Visibilidade: public/ private/ protected>
<Visibilidade: public/ private/ protected>
< lista de atributos >
Construtor
<Visibilidade: public/ private/ protected>
< lista de declarao de mtodos >
}
Exemplo:
public class Aluno
{
//aqui vem os atributos
public Aluno(){}
//aqui vem os mtodos
}
1.1.1 Visibilidade
Cada "campo" da classe chamado de "membro" da classe. A rea de declarao de uma classe dividida em subreas determinadas pela sua visibilidade. A visibilidade determina se uma outra parte do programa que declare ou
utilize uma varivel do tipo da classe, ou Objeto da Classe vai ou no poder acessar seus membros, ou seja escrever
algo do tipo:
...
Aluno a;
a.media() - isto s possvel se "media()" for um membro pblico.
...
A Orientao por Objetos foi desenvolvida com a finalidade de melhor dividir e integrar o desenvolvimento de
sistemas. Num projeto grande, classes so desenvolvidas por uma equipe para serem utilizadas no cdigo
desenvolvido por outra equipe. Desta forma, a visibilidade permite a limitao de acesso da classe sendo
desenvolvida por uma equipe.
Pblica:
Todos os membros pblicos podem ser acessados a vontade pelo resto do programa. Geralmente as funes, ou
mtodos, so sempre pblicos.
Palavra chave: public:
Exemplo:
Protegida:
A visibilidade protegida similar a privada, contudo permite que os atributos possam ser acessados pelos filhos da
classe(veja herana mais adiante).
Palavra chave: protected: - Passa a ser visvel para os filhos da classe
...
Podemos notar que um objeto composto por estrutura e processos, onde esses processos giram em torno da
estrutura, ao contrrio das linguagens funcionais, nas quais a estrutura se adapta a funo. Um objeto s pode ser
manipulado por sua estrutura e seus mtodos, nada mais do que isso.
Somente um objeto de um determinado tipo pode acessar seus mtodos e estrutura, um outro tipo de objeto no tem
nenhum acesso a estes. Por exemplo, em uma classe cachorro temos o mtodo fala. Se por exemplo definirmos um
objeto da classe gato, este objeto no tem acesso nenhum ao mtodo fala de cachorro.
Dentro de um objeto, alguns mtodos e/ou estrutura podem ser privados ao objeto, o que nos diz que so
inacessveis diretamente para qualquer elemento fora dele, o que impede que outros objetos tenham acesso direto s
partes privadas do objeto referenciado. Para o objeto poder referenciar seus elementos privados ele deve passar
pelos seus mtodos, neste caso um mtodo especfico que faa a operao desejada, ou seja, ele pode acessar sua
estrutura privada somente atravs de seus mtodos, dando assim uma certa abstrao de como feita a manipulao
da estrutura. Isso consiste no encapsulamento de dados que ser explicado na seo referente a este tema. A
princpio toda a estrutura deve ser privada, mas algumas linguagens como C++ permitem que a estrutura de um objeto
possa ser acessada diretamente por outros objetos. J em SmallTalk toda a estrutura privada. Dessa maneira, um
objeto evita significativamente que algumas outras partes no relacionadas de programa modifiquem ou usem
incorretamente as partes privadas do objeto referenciado, dando assim maior confiabilidade na manipulao do
objeto. Isso tudo nos mostra uma caracterstica muito grande para construo de mdulos independentes e abstrao
ao usurio.
Mais exatamente, cada objeto uma instncia de sua classe. a classe que contm a descrio da representao
interna e dos mtodos comuns a todas as suas instncias (objetos). Cada instncia da classe, por sua vez, possui sua
prpria memria privativa (seu estado interno) onde ficam armazenados os valores de seus componentes, que
representam suas caractersticas individuais.
1.2.1 Criao de um objeto
<Nome da classe><Nome do objeto> = new <construtor>
Aluno a1 = new Aluno()
1.3 Atributos
o nome dado aos "campos" da classe, ou seja variveis declaradas membros da classe. Sua visibilidade deve ser,
em geral, privada ou protegida, ocultando assim a estrutura dos dados da classe das partes do programa que utilizam
objetos da classe.
public class Aluno
{
string nome;
double nota1, nota2;
}
1.4 Mtodos
o nome das funes declaradas dentro da classe que iro manipular ou gerar resultados a partir dos atributos da
classe. As funes podem manipular livremente com quaisquer atributos da classe. Os atributos da classe pai(veja
herana) somente podem ser acessados se forem atributos protegidos. Os mtodos so invocados a partir de uma
varivel do tipo da classe.
1.4.1 Declarao
<Objeto da classe>.<Mtodo>;
Exemplo:
public double Media()
{
return ((nota1+nota2)/2;
}
static void Main(void)
{
double x;
Aluno a1 = new Aluno();
a1.Iniciar(5.7,8.7);
x = a1.Media();
Aluno a2 = new Aluno();
a2.Iniciar(3.4,8.9);
x = a2.Media();
}
1.4.2 Construtores
Os construtores so um "conforto" fornecido pela linguagem e pelo paradigma para que possamos "inicializar" nosso
objeto da classe. Podemos notar que nos exemplos acima nos utilizamos mtodos "iniciar" antes de comear a usar o
objeto com a finalidade, neste caso, de inicializar seus parmetros. A orientao objeto permite que criemos um
mtodo especial, denominado "construtor" que chamado automaticamente pelo programa no momento da
criao(ou declarao se preferir) do objeto. Em C++ O mtodo deve simplesmente ter o mesmo nome da classe.
Um classe pode ter muitos construtores, dependendo das formas de inicializao que desejarmos. Um construtor
pode inclusive no ter parmtros, sendo chamado de construtor default. Ele pode ser utilizado, por exemplo, somente
para zerar o valor de atributos da classe. A nica restrio que quando criamos vetores de objetos, no podemos
passar parmetros para os construtores, somente sero chamados construtores sem parmetros, ou default.
Exemplos:
Aluno a1;
a1.Iniciar(5.7,8.7);
Passa a ser...
Aluno a1 = new Aluno(5.7,8.7)
de projeto. Existem casos onde uma equipe vai desenvolver as classes pai e a outra que vai desenvolver as filhas.
Desta forma, os atributos s podero ser acessados nas classes filhas atravs dos mtodos da classe pai.
3 Associaes
Uma associao quando uma classe est ligada ou contm objetos de outras classes. Suponha, por exemplo, que
uma classe Automvel contenha dentro dela uma classe Proprietrio. Dentro de um sistema grande a classe
proprietrio pode ser utilizada tanto para o automvel quanto para uma Casa, por exemplo. As associaes podem
ser de 1 para 1, de 1 para muitos ou de muitos para muitos. Uma ligao de 1 para 1 seria a citada acima, de
automvel-proprietrio. Uma associao de 1 para muitos quando uma classe possui uma lista de objetos de uma
outra classe. Uma classe Avio, por exemplo, poderia conter uma lista(ou vetor) de objetos da classe Passageiro.
Existem vrias formas de associao:
3.1 Agregao
quando a classe "possui" realmente os objetos que agrega. Na prtica, a classe agregadora passa a ficar
responsvel pela criao e destruio destes objetos. Suponha que voc crie dinmicamente vrios objetos da classe
Aluno e agregue numa classe Escola. O destrutor desta classe tem que se encarregar de "deletar" todos os objetos da
classe Aluno criados.
3.2 Agregao por Composio
Este tipo de agregao usado quando usamos criao esttica dos objetos que sero agregados. A diferena que
nesse caso, os objetos sero criados no mesmo momento que o objeto da classe agregadora, enquanto que a
agregao "comum" a criao dinmica feita aps a criaao da classe agregadora.
3.3 Associao
As Associaes, chamadas simplesmente assim, so na prtica referncias de uma classe para objetos de outra
classe. Neste caso sempre utilizamos ponteiros ou listas encadeadas de ponteiros, etc. As classes que referenciam
umas as outras no tem responsabilidade sobre si, ou seja, no so elas que criam os objetos e nem as responsveis
pela sua destruio.
4 Polimorfismo
O polimorfismo a caracterstica mais complexa e ao mesmo tempo a mais poderosa da Orientao por Objetos. Ela
permite que tratemos vrias classes diferentes de uma forma generalizada, como se ela fosse uma mesma classe. O
processo consiste em criar vrias heranas de uma mesma classe e tratar todos os objetos das classe-filhas como se
elas fossem da classe pai. Tomemos como exemplo uma classe Janela do windows. Ao desejarmos criar um novo
tipo de janela especfica, do tipo WORD, por exemplo, fazemos uma herana da classe Janela. Prosseguindo,
poderamos criar heranas de Janela para cada tipo de aplicao que estivssemos desenvolvendo. Bem, como o
Windows faria para gerenciar o desenho de tantos tipos de Janelas, algumas que ainda nem foram criadas? O segredo
est no poliforfismo. A classe Janela inicial contm alguns mtodos chamados de Mtodos Virtuais, que no fazem
nada mas servem como um padro para todas as filhas da classe Janela. Quando criamos uma herana da classe
Janela, devemos obrigatriamente redefinir os mtodos Virtuais adequando-os para o nosso tipo de janela. Se
criarmos, por exemplo, uma JanelaImagem, redefinimos o mtodo Desenha da Janela Pai para que ele, no caso da
classe JanelaImagem, desenhe uma imagem desejada. O que o Windows faz, aps isto, guardar uma lista de Janelas
e trat-las como se elas fossem apenas Janela, ignorando suas heranas. Quando o Windows tem que redesenhar as
janelas ele vai em todas elas e chama o mtodo virtual Desenha. O sistema automticamente verifica qual a herana
que realmente est ali e chama o mtodo da classe filha adequado.