Você está na página 1de 41

PROGRAMAO III

CONCEITOS AVANADOS DE ORIENTAO


OBJETOS

LCC2M - 2015
Conceitos avanados sobre orientao a
objectos

PROGRAMAO III
Classes
Atributos de classe
Metodos de classe
Metodos construtores
Herana
Sobrecarga
polimorfismo

2
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Osprogramas criados segundo a programao
orientada a objetos funcionam

PROGRAMAO III
essencialmente a custa de entidades

As entidades so objectos

Os objectos possuem caractersticas prprias

Osobjectos so capazes de desempenhar


determinadas tarefas

3
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Desenhar um programa, consistem em definir
os objectos necessrios, suas funcionalidades

PROGRAMAO III
e o modo como comunicam entre si
Um objecto uma combinao de dados e
atributos (variveis) e aces (subprogramas)
relacionadas.
Os subprogramas em POO so comummente
designados por mtodos

4
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Umobjecto pode ser caracterizado por trs
componentes:

PROGRAMAO III
Identidade
Atributo
Comportamento

5
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Um objecto pode ser caracterizado

PROGRAMAO III
por trs componentes:
Identidade comum ter
Permite ao programador e ao sistema a
num programa
sua identificao objectos
semelhantes,
Atributo com o mesmo
Permitem caracteriza-lo comportamento,
mas com
Comportamento atributos e
Define o conjunto de funcionalidades que identidades
pode executar por opo prpria ou a diferentes
pedido
de outro objecto.

6
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Objecto especial que serve de molde ou
padro para a criao de objectos

PROGRAMAO III
Possuem a mesma estrutura interna
Mesmas variveis de instncia
Mesmo comportamento
Mesmos mtodos de instancia
Mesma interface ou API

7
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Capazes de responder s mesmas mensagens,
ou seja, um objecto pode efetuar uma tarefa

PROGRAMAO III
de outro desde que esteja definida em seus
comportamentos chamada de um mtodo
definido no outro objecto
Pode ser vista como um TIPO
Em linguagem POO, so vistos como
mecanismos de implementao de Tipos
Abstractos de Dados (TAD)
Representam mecanismos de partilha de
cdigo
8
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Objecto boby
Atributos
boby
Pastor alemo
cinzento

PROGRAMAO III
Classe Cao Comportamentos
Atributos Correr
Nome ladrar
Raa
Cor
Objecto laica
Comportamentos
Correr Atributos
ladrar laica
rafeiro
castanho

Comportamentos
Correr
ladrar
9
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Reutilizvel

PROGRAMAO III
Colocada dentro de um bloco que
antecedido pela palavra reservada class,
seguido pelo identificador da classe que deve
comear pela letra maiscula.
O nome dos objectos por letra minscula
Dentro do bloco, estaro as definies dos
membros da classe (class members)

10
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Definio de cada varivel de instncia,
separando as vrias declaraes com

PROGRAMAO III
comentrios que auxiliem a legibilidade dos
programas.
//Identificao da classe
class Cao{
//definies dos atributos e comportamentos que os
objectos criados a partir dela devem apresentar
}
class Cao{
//variveis de instncia
private int idade; // idade do co
private string nome; // nome do co
private string raca; // raa do co
private string cor; // cor do co
}
11
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Private
indica que as variveis apenas podem ser

PROGRAMAO III

acedidas directamente pelos mtodos
(comportamentos) definidos na prpria classe.
com ela, o objecto criado ser uma entidade
fechada portanto encapsulada.
Os detalhes internos no so visiveis a partir do
exterior
class Cao{
//variveis de instncia
private int idade; // idade do co
private string nome; // nome do co
private string raca; // raa do co
private string cor; // cor do co
}
12
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Cada classe tem pelo menos um construtor.
Tipo especial de mtodo utilizado para criao e

PROGRAMAO III
inicializao de objectos criados a partir de uma
classe.
Tm o mesmo nome da classe
Distinguem-se de outros mtodos por no terem
valor de retorno, nem mesmo void.
No so chamados como os outros mtodos,
apenas a instruo de criao de objectos de
uma classe os pode chamar.

13
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
class Cao{

PROGRAMAO III
//variveis de instncia
private int idade; // idade do co
private string nome; // nome do co
private string raca; // raa do co
private string cor; // cor do co
Public Cao(int i, string n, string r, string c)
{
idade = i;
nome = n;
raca = r;
cor = c;
}

14
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Criao de instncias de uma dada classe

PROGRAMAO III
class Ponto{
//variveis de instncia
int x;
int y;
Final double A = 3.4; Valores atribudos por
//construtor default omisso
Ponto(){ Instancias da classe
x = 0;
Ponto criadas, com
y= 0;
} atribuio s variveis
//construtor com de instncia, valores
parametros iniciais dados como
Ponto(int cx, int cy){ parametros
x = cx;
y = cy;
}
}

15
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
mudarIdade()

PROGRAMAO III
alterarNome()
retificarRaca()
tirarCor()

16
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
class Cao{

PROGRAMAO III
//variveis de instncia
private int idade; // idade do co
private string nome; // nome do co
private string raca; // raa do co
private string cor; // cor do co
Public Cao(int i, string n, string r, string c)
{
idade = i;
nome = n;
raca = r;
cor = c;
}

17
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
import java.awt.*;
public class Cao{
//variveis de instncia
private int idade; // idade do co
private string nome; // nome do co

PROGRAMAO III
private string raca; // raa do co
private string cor; // cor do co
//Construtor com parametros e recebe os valores
iniciais dos atributos
public Cao(int i, string n, string r, string c)
{
idade = i;
nome = n;
raca = r;
cor = c;
}

Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013 18


PROGRAMAO III
//muda a idade de acordo com os atributos
Public void mudarIdade(int id)
{

}
}

Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013 19


Mtodo que retorna o valor de um atributo

PROGRAMAO III
Public String getNome()
{
Return nome;
}

20
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Mtodo que modifica o valor de um atributo

PROGRAMAO III
Public void setNome(String valor)
{
nome = valor;
}

21
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Os acessores seguem as seguintes regras:
O atributo tem de ser declarado como private

PROGRAMAO III

O acessor ser public
Os getters no recebem nenhum parametro e
retornam um valor cujo tipo igual ao atributo
que acede
Os setters apenas recebem um parametro, do
tipo do atributo e no retornam valor

22
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
PROGRAMAO III
Private String nome;
Public String getNome()
{
Return nome;
}

Public void setNome(String valor)


{
nome = valor;
}

23
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
A chamada a metodos de um objecto
necessrio referencia o objecto

PROGRAMAO III
Referencia ao objecto;
O literal ponto;
O nome do mtodo;
Os parametros necessarios a serem passados.

referenciaObjecto .Ometodo();
referenciaObjecto .OutroMetodo(ComParametro);

24
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
A chamada a metodos de um objecto
necessrio referencia o objecto

PROGRAMAO III
Referencia ao objecto;
O literal ponto;
O nome do mtodo;
Os parametros necessarios a serem passados.

Caractersticas CB = new Caractersticas("Blattella Germanica);


CB.getNome();
Ou
Caractersticas CB = new Caractersticas("Blattella Germanica);

25
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Tambem chamado de metodos da classe,
visto que o seu comportamento no depende

PROGRAMAO III
de nenhum estado do objecto.
O comportamento de um metodo estatico
acontece ao nivel da classe

logger l = Looger.getLogger(NewLoggerr);

26
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Construtor de cpia

PROGRAMAO III
Recebe um parmetro do mesmo tipo de objeto
que se pretende criar, obtendo uma copia do
parmetro.

Ponto(Ponto p){
x = p.getX();
y = p.getY();
}

getX() e getY() mtodos que consultam a


coordenada respetiva do ponto p.

27
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Mtodos de instncia

PROGRAMAO III
So responsveis pelo comportamento das
instancias da classe.
getX() mtodo que faz acesso ao valor de uma
varivel de instancia de nome genrico X.

Exemplos: getNome(), getConta, getProvincia()

setX() mtodos que alteram o valor de uma


varivel de instancia X.

Exemplos: setNome(), setConta, setProvincia()

28
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Interrogadores ou seletores getX()

PROGRAMAO III
Mtodos que realizam a consulta do valor de
dada varivel e devolvem esse valor como
resultado.

<tipo de resultado> <identificador> (tipo nome_parmetro,)

Modificadores setX()
Alteram o valor da varivel de instancia.

<tipo de resultado> <identificador> (tipo nome_parmetro,)

29
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Interrogadores ou seletores getX()

PROGRAMAO III
// interrogador ou seletor
int getX(){
return x;
}

int cx = p1.getX();
System.out.println( X de P1 = + cx);
Ou
System.out.println( X de P1 = + p1.getX());

30
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Modificadores incremento das coordenadas

PROGRAMAO III
void incCoor (int deltaX, int deltaY){
x = x + deltaX;
y = y + deltaY;
}
Invocao do mtodo anterior num objecto
exterior a classe.
p1.incCoord(dx, dy)

O objecto exterior altera o seu estado interno p1


O objecto exterior (invocador) no necessita de
receber qualquer resultado (void)

31
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Modificadores decremento das coordenadas

PROGRAMAO III
void decCoor (int deltaX, int deltaY){
x = x - deltaX;
y = y - deltaY;
}
Invocao do mtodo anterior num objecto
exterior a classe.
p1.incCoord(dx, dy)

O objecto exterior altera o seu estado interno p1


O objecto exterior (invocador) no necessita de
receber qualquer resultado (void)

32
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013

PROGRAMAO III
String getConta()
Boolean maiorQue(int valor)
Void setValor(int valor)
Boolean valorEntre(real min, real max)
Double[] notasAcimaDe(double NotaRef)
Triangulo maiorTTri(Triangulo t)

33
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Acessoaos packages que contm o conjunto

PROGRAMAO III
de classes
Classes individuais
Cada um dos membros
Variveis
Mtodos
Interfaces, classes abstratas

34
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Modificadores de acesso

PROGRAMAO III
Tipos de acesso
Public
Qualquer classe
Protected
Propria classe; qualquer classe do mesmo package e
qualquer subclasse
Private
Propria classe
Por omisso (default)
Caso nenhum modificador seja declarado
Propria classe e classes dentro do mesmo package

35
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Modificadores de acesso

PROGRAMAO III
Tipos de acesso
Private e protected
Classes especiais (inner class)
Usadas na implementao de classes predefinidas
complexas de Java
Definidas no interior de outras classes
A no declarao de um modificador particular,
significa que a classe estar apenas acessvel
dentro do respectivo package.

36
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
//Metodos de instancia

PROGRAMAO III
Import static java.lang.Math.abs; // interrogador devolve x
Public class Ponto{ Public int getX(){
//variveis de instancia return x;
private int x; }
private int y; // interrogador devolve y
//Construtores Public int getY(){
Public Ponto(){x=0; y=0;} return y;
Public Ponto(int cx, int cy){ }
x= cx; y=cy; //modificador incremento das
} coordenadas
Public Ponto(Ponto p){ public void incCoord(int deltaX,
x = p.getX(); int DeltaY){
y = p.getY(); x = x + deltaX;
} y = y + deltaY;
}

37
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013

PROGRAMAO III
/*determina se um ponto tem
ambas as coordenadas positivas */
public boolean coordPos(){
return x > 0 && y > 0 ;
}
/* verifica se um ponto
simtrico, ou seja, se dista
igualmente dos eixos do X e dos Y */
public boolean simtrico(){
return abs(x) == abs(y);
}

38
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
PROGRAMAO III
39
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013
Prof. Nobre - Email: macaba.pedro@gmaill.com - LCC - 2013 40
PROGRAMAO III

TRATAMENTO DE EXCEPES

LCC2 - 2015