Você está na página 1de 5

AGRUPAMENTO DE ESCOLAS DE SANTA COMBA DO

CURSO PROFISSIONAL DE TCNICO DE GESTO E PROGRAMAO DE SISTEMAS


INFORMTICOS
2013-2016
PROGRAMAO E SISTEMAS DE INFORMAO

MDULO 9 Introduo Programao Orientada a Objetos (48 aulas/45min)

Objetivos do mdulo:

No final deste mdulo os alunos devem ter adquirido conhecimentos, procedimentos e atitudes que lhe
permitam:

Identificar as diferenas entre uma Linguagem Estruturada e uma Linguagem Orientada por Objetos;

Adquirir a noo de objetos e sua classificao;

Adquirir as noes de classe, tipo, mtodos, comportamentos e instncias;

Representar esquematicamente uma classe;

Compreender o conceito de encapsulamento de dados.

1. Caratersticas da programao Orientada por Objetos


A programao orientada por objetos (POO) um estilo de programao (ou um paradigma de
programao). Existem vrios paradigmas de programao como seja a programao estruturada.
Linguagens de programao como o C, Pascal e Fortran so linguagens estruturadas, pois a sua estrutura
depende de funes e do seu cdigo. Estas do mais importncia ao cdigo.
As linguagens de programao orientadas por objetos do prioridade aos dados. A soluo encontra-
se definindo primeiro os dados e depois as funes que manipulam esses dados.
Nas linguagens POO os programas decompem os problemas com mdulos que representam objetos
do mundo real, estes objetos so conhecidos como classes. As classes so comos os tipos de dados pois estas
permitem definir variveis do seu tipo, as variveis definidas a partir de uma classe so os objetos ou
instncias/cpias.

Linguagem de Programao Estruturada Linguagem POO


Tipo de Dados Variveis Classes Objetos
int int x; class Carro{ Carro novo = new Carro();
x=10;
}

O conceito semelhante ao das estruturas nas linguagens estruturadas mas para alm dos campos
que contm os dados tambm inclui as funes que manipulam esses dados e que definem o
comportamento do objeto.

2. Conceito de Classe, Atributos, Mtodos e eventos


Uma classe define um objeto com base nas suas propriedades (os campos ou variveis) e as suas
aes ou mtodos que definem o seu comportamento (funes).

alunosnet@gmail.com alunosnet.pt.vu Pgina 1 de 5


Assim um objeto tem dois tipos de membros, os dados e os mtodos. Estes membros podem ter
diferentes tipos de dados, incluindo outros objetos.
A classe pode ainda herdar membros de outras classes, permitindo reutilizar classes criadas para
servirem de base para outras classes.
class Carro Propriedades
{
string marca;
string modelo;

public void defineMarca(string marca)


{ Mtodos ou funes
this.marca = marca;
}
public void defineModelo(string modelo)
{
this.modelo = modelo;
}
}
3. Conceito de Objeto
Um objeto uma varivel criada a partir de uma classe. o objeto que vai poder armazenar dados e
executar funes sobre esses dados.
Ao criar um objeto a partir de uma classe estamos a criar uma cpia em memria das propriedades
dessa classe, assim podem existir diferentes cpias da mesma classe bastando para isso definir diferentes
objetos a partir da mesma classe. Estas cpias partilham o cdigo, ou seja, as diferentes instncias da classe
s so diferentes pelos valores das suas propriedades, pois os mtodos so os mesmos para a mesma classe.
Carro carro = new Carro();
Carro carro2 = new Carro();

carro.defineMarca(Ford);
carro2.defineMarca(BMW);

4. Conceito de Encapsulamento
A ideia do encapsulamento que os dados de um objeto s devem ser manipulados por funes
desse mesmo objeto. O objetivo proteger os dados evitando erros validando os dados antes de os
armazenar.
Classe Carro

marca

modelo defineMarca

defineModelo

5. Conceito de visibilidade de classes, mtodos e atributos


O conceito de encapsulamento est associado visibilidade dos membros, assim os membros que
definimos como privados (por defeito) s podem ser utilizados pelas funes dentro da classe. Os dados de
uma classe devem ser privados, pois s devem ser alterados pelos mtodos da classe.
As funes podem ser privadas ou publicas pois o objetivo poderem ser chamadas por outras
funes de outras classes.

alunosnet@gmail.com alunosnet.pt.vu Pgina 2 de 5


As prprias classes podem ser definidas como visveis por outros namespaces (public) ou s para uso
interno do namespace do programa (internal).
No exemplo apresentado acima as propriedades so privadas (private), pois apesar de no ser
indicado nenhum tipo de visibilidade por defeito estas so privadas, ao passo que as funes so publicas (foi
indicado o nvel de visibilidade public).
Em c# existem os seguintes nveis de visibilidade:
Nvel de Descrio
visibilidade/proteo
private Elemento s visvel dentro da classe onde foi declarado
public Elemento visvel em qualquer classe
protected Elemento visvel dentro da classe onde foi declarado e nas classes derivadas
internal Elemento visvel em qualquer classe exceto fora do namespace
protected internal Elemento visvel dentro da classe onde foi declarado e nas classes derivadas,
exceto fora do namespace
(ver exemplo M9_Exemplo_1_OOP)
6. Herana
Herana um mecanismo que permite criar classes a partir de outras classes.
Considere os seguintes objetos com as respetivas propriedades.

Veculo Combustvel Matrcula

Carro Nr Lugares Nr Portas

Camio
Peso Mximo Reboque

Se Carro fosse uma classe derivada de Veculo ento Carro herdava as propriedades e os mtodos de
veculos.

Veculo Combustvel Matrcula

Carro Nr Lugares Nr Portas Combustvel Matrcula

Deste modo o cdigo e os dados de veculo so reutilizados.


Em algumas linguagens de programao podemos criar classes derivadas a partir de outras classes
derivadas. Assim se a classe Camio fosse derivada a partir de Carro ficava assim:

Camio
Peso Mximo Reboque

Nr Lugares Nr Portas Combustvel Matrcula


Em C# no possvel fazer heranas mltiplas.

alunosnet@gmail.com alunosnet.pt.vu Pgina 3 de 5


As classes derivadas so tambm chamadas classes filhas, enquanto a classe base pode ser
denominada por me (alguns autores preferem a verso masculina filhos e pai). Em algumas linguagens de
programao a classe base uma super classe, e as classes derivadas so subclasses.
Dentro de uma classe a palavra reservada this permite fazer referncia a elementos dessa prpria
classe, distinguindo de parmetros ou outros elementos com nomes iguais.
Em C# podemos fazer referncia aos elementos das classes superiores a partir da classe derivada
utilizando a palavra base.
As classes derivadas podem redefinir os mtodos, isto que dizer que uma classe derivada pode criar
um mtodo novo para substituir um mtodo da classe base, para isso deve utilizar o mesmo nome no
mtodo.
S pelo facto de se ter definido uma classe derivada a partir de outra no quer dizer que no se possam criar
objetos a partir da classe base.
(ver exemplo M9_Herana_2_OOP)
Antes de utilizar a herana devemos pensar bem se as classes tm uma relao de herana ou por
outro lado a relao de composio, uma classe pode ser composta por outras classes como seus
membros. Normalmente devemos pensar se se trata de uma relao de ou se a relao de tem. Quando
a relao pode ser definida como uma relao de , por exemplo um carro um veculo, ento estamos
perante uma herana. Se a relao pode ser definida como tem, um carro tem volante, nestes casos no
existe uma relao mas uma classe que tem outra como um membro.
Se existir uma classe que s pode ser derivada ento temos uma classe abstrata, neste caso a classe
no pode ser instanciada para criar objetos diretamente.
Por vezes temos necessidade de saber qual o tipo de objeto que estamos a manipular, uma vez que
graas herana podemos ter diferentes tipos de objeto na mesma varivel. Para isso existe o operador is
que permite testar se um objeto de um determinado tipo. Esta funo devolve verdadeiro se o objeto for
testado com a sua classe ou com a classe de onde esta derivada, ou seja, a classe base.

7. Polimorfismo e redefinio
Uma classe pode implementar mtodos existentes noutras classes, mesmo nas classes derivadas. O
compilador ao chamar a funo avalia o objeto e executa a funo adequada de acordo com a classe do
objeto.
Os mtodos podem ser redefinidos dentro da mesma classe desde que tenham parmetros ou um
valor de retorno diferentes.

8. Construtores e destrutores
Um construtor uma funo com o mesmo nome da classe que executada quando o objeto
criado. Esta funo permite definir os valores iniciais do objeto.
O destrutor uma funo com o mesmo nome da classe mas com um ~ (til) no incio do nome. Esta
funo chamada automaticamente quando o objeto destrudo. O objetivo desta funo libertar
recursos que o objeto alocou.

9. Libertar objeto
Quando um objeto j no necessrio pode ser libertado utilizando a palavra reservada null. Basta
igualar o objeto a null para o destruir. Esta instruo, no entanto, no garante que o destrutor seja chamado
pois o C# implementa um coletor de lixo (garbage collector) que faz a gesto da memria garantindo que os
objetos que no so libertados pelo cdigo do programador so libertados pela framework do .Net, evitando
fugas de memria.
(ver exemplo M9_ConstDestrutor_3_OOP)

alunosnet@gmail.com alunosnet.pt.vu Pgina 4 de 5


10. Classes e membros estticos
Uma classe esttica um conjunto de funes agrupadas dentro de uma classe. Neste caso no
possvel criar objetos a partir desta classe, ou seja, no se pode instanciar a classe.
Todos os programas em C# tm uma classe esttica com o nome Program que implementa a funo
Main, tambm esttica, e a partir desta classe e funo que o cdigo comea a ser executado.
Todos os outros elementos so tratados como classes, incluindo os formulrios e os controlos dentro
destes, porque na prtica so classes.
Os membros estticos de uma classe, mesmo numa classe que no esttica, so chamados pelo
nome da classe e no pelo nome do objeto, isto porque na prtica so membros da classe e independentes
do objeto. No caso de propriedades estticas estas so partilhadas pelos diferentes objetos.
Os membros estticos podem ser utilizados para criar variveis globais, desde que sejam pblicas.

11. Interfaces
Uma interface permite que duas classes partilhem os mesmos membros desde que estes tenham o
mesmo tipo de retorno e os mesmos parmetros. A interface a definio de quais os mtodos e os
parmetros que devem ser definidos para que a classe possa ser considerada de um determinado tipo ou
classe. Uma interface s tem mtodos, no tem propriedades.

12. Diagramas de classe


Para representar as classes podemos utilizar um diagrama. Nesse diagrama representamos a classe, os seus
membros, a visibilidade destes bem como as relaes entre as diferentes classes.
O diagrama da classe est dividido em trs partes, a primeira apresenta o seu nome, a segunda, as
propriedades e os seus tipos de dados e por fim os mtodos.
Carro
marca : String
modelo : String
defineMarca(marca: String)
defineModelo(modelo: String)
defineTudo(marca: String,modelo: String)

Tambm podemos incluir a visibilidade dos membros da classe:


Smbolo Descrio
+ Publico
- Privado
# Protegido
/ Derivado (pode-se combinar com um dos anteriores)
_ Esttico
Quando temos vrias classes podemos representar a herana entre as classes assim:
Classe base
Propriedades
Mtodos

Classe derivada
Propriedades
Mtodos

Bibliografia

http://en.wikipedia.org/wiki/Class_diagram
http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.90).aspx
C# 5.0 com Visual Studio 2012 Curso Completo

alunosnet@gmail.com alunosnet.pt.vu Pgina 5 de 5

Você também pode gostar