CONCEITOS AVANÇADOS DE ORIENTAÇÃO À OBJETOS
PROGRAMAÇÃ
Conceitos avançados sobre orientação a objectos
Classes
Atributos de classe
Metodos de classe
Metodos construtores
Herança
Sobrecarga
polimorfismo
PROGRAM
AÇÃO
Os programas criados segundo a programação orientada a objetos funcionam
essencialmente a custa de entidades
As entidades são objectos
Os objectos possuem características próprias
Os objectos são capazes de desempenhar
determinadas tarefas
PROGRAM
AÇÃO
Desenhar um programa, consistem em definir os objectos necessários, suas funcionalidades e o modo como comunicam entre si
Um objecto é uma combinação de dados e
atributos (variáveis) e acções (subprogramas) relacionadas.
Os subprogramas em POO são comummente
designados por métodos
PROGRAM
AÇÃO
Um objecto pode ser caracterizado por três componentes:
Identidade
Atributo
Comportamento
PROGRAM
AÇÃO
Um objecto pode ser caracterizado
por três componentes:
Identidade
Permite ao programador e ao sistema a
sua identificação
Atributo
Permitem caracteriza-lo
Comportamento
Define o conjunto de funcionalidades que
pode executar por opção própria ou a pedido
de outro objecto.
PROGRAM
AÇÃO
III
É comum ter num programa
objectos semelhantes, com o mesmo comportamento,
mas com atributos e identidades
Objecto especial que serve de molde ou padrão para a criação de objectos
Possuem a mesma estrutura interna
Mesmas variáveis de instância
Mesmo comportamento
Mesmos métodos de instancia
Mesma interface ou API
PROGRAM
AÇÃO
Capazes de responder às mesmas mensagens, ou seja, um objecto pode efetuar uma tarefa de outro desde que esteja definida em seus
comportamentos – chamada de um método
definido no outro objecto
Pode ser vista como um TIPO
Em linguagem POO, são vistos como
mecanismos de implementação de Tipos Abstractos de Dados (TAD)
Representam mecanismos de partilha de
código
PROGRAM
AÇÃO
Reutilizável
Colocada dentro de um bloco que é
antecedido pela palavra reservada class,
seguido pelo identificador da classe que deve começar pela letra maiúscula.
O nome dos objectos por letra minúscula
Dentro do bloco, estarão as definições dos membros da classe (class members)
PROGRAM
AÇÃO
Definição de cada variável de instância,
separando as várias declarações com
comentários que auxiliem a legibilidade dos programas.
PROGRAM
AÇÃO
III
class Cao{
//variáveis de instância
private int idade; // idade do cão private string nome; // nome do cão private string raca; // raça do cão private string cor; // cor do cão //Identificação da classe
class Cao{
//definições dos atributos e comportamentos que os objectos criados a partir dela devem apresentar
Private
indica que as variáveis apenas podem ser
acedidas directamente pelos métodos
(comportamentos) definidos na própria classe.
com ela, o objecto criado será uma entidade
fechada portanto encapsulada.
Os detalhes internos não são visiveis a partir do
exterior
PROGRAM
AÇÃO
III
class Cao{
//variáveis de instância
Cada classe tem pelo menos um construtor.
Tipo especial de método utilizado para criação e
inicialização de objectos criados a partir de uma classe.
Têm o mesmo nome da classe
Distinguem-se de outros métodos por não terem
valor de retorno, nem mesmo void.
Não são chamados como os outros métodos,
apenas a instrução de criação de objectos de uma classe os pode chamar.
PROGRAM
AÇÃO
PROGRAM
AÇÃO
III
class Cao{
//variáveis de instância
private int idade; // idade do cão private string nome; // nome do cão private string raca; // raça do cão private string cor; // cor do cão
Public Cao(int i, string n, string r, string c) {
idade = i; nome = n; raca = r; cor = c; }
Criação de instâncias de uma dada classe
PROGRAM
AÇÃO
III
class Ponto{
//variáveis de instância int x;
int y;
Final double A = 3.4; //construtor default Ponto(){
x = 0; y= 0; }
//construtor com parametros
Ponto(int cx, int cy){ x = cx;
y = cy; }
}
Valores atribuídos por omissão
Instancias da classe Ponto criadas, com atribuição às variáveis
de instância, valores iniciais dados como
mudarIdade()
alterarNome()
retificarRaca()
tirarCor()
PROGRAM
AÇÃO
PROGRAM
AÇÃO
III
class Cao{
//variáveis de instância
private int idade; // idade do cão private string nome; // nome do cão private string raca; // raça do cão private string cor; // cor do cão
Public Cao(int i, string n, string r, string c) {
idade = i; nome = n; raca = r; cor = c; }
import java.awt.*; public class Cao{
//variáveis de instância
private int idade; // idade do cão
private string nome; // nome do cão
private string raca; // raça do cão
private string cor; // cor do cão
//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; }
PROGRAM
AÇÃO
//muda a idade de acordo com os atributos
Public void mudarIdade(int id) {
}
}
PROGRAM
AÇÃO
Método que retorna o valor de um atributo
PROGRAM
AÇÃO
III
Public String getNome() {
Método que modifica o valor de um atributo
PROGRAM
AÇÃO
III
Public void setNome(String valor) {
Os acessores seguem as seguintes regras:
O atributo tem de ser declarado como private O acessor será public
Os getters não 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 não retornam valor
PROGRAM
AÇÃO
PROGRAM
AÇÃO
III
Private String nome; Public String getNome() {
Return nome; }
Public void setNome(String valor) {
A chamada a metodos de um objecto é necessário referencia o objecto
Referencia ao objecto;
O literal ponto;
O nome do método;
Os parametros necessarios a serem passados.
PROGRAM
AÇÃO
III
referenciaObjecto .Ometodo();
A chamada a metodos de um objecto é necessário referencia o objecto
Referencia ao objecto;
O literal ponto;
O nome do método;
Os parametros necessarios a serem passados.
PROGRAM
AÇÃO
III
Características CB = new Características("Blattella Germanica“); CB.getNome();
Ou
Tambem chamado de metodos da classe,
visto que o seu comportamento não depende de nenhum estado do objecto.
O comportamento de um metodo estatico
acontece ao nivel da classe
PROGRAM
AÇÃO
III
Construtor de cópia
Recebe um parâmetro do mesmo tipo de objeto
que se pretende criar, obtendo uma copia do parâmetro.
getX() e getY() métodos que consultam a
coordenada respetiva do ponto p.
PROGRAM
AÇÃO
III
Ponto(Ponto p){ x = p.getX(); y = p.getY();
Métodos de instância
São responsáveis pelo comportamento das
instancias da classe.
getX() método que faz acesso ao valor de uma
variável de instancia de nome genérico X.
setX() métodos que alteram o valor de uma
variável de instancia X.
PROGRAM
AÇÃO
III
Exemplos: getNome(), getConta, getProvincia()
Interrogadores ou seletores getX()
Métodos que realizam a consulta do valor de
dada variável e devolvem esse valor como resultado.
Modificadores setX()
Alteram o valor da variável de instancia.
PROGRAM
AÇÃO
III
Interrogadores ou seletores getX()
PROGRAM
AÇÃO
III
// interrogador ou seletor int getX(){
return x; }
int cx = p1.getX();
System.out.println(“ X de P1 = “ + cx); Ou
Modificadores – incremento das coordenadas
Invocação do método anterior num objecto
exterior a classe.
O objecto exterior altera o seu estado interno p1
O objecto exterior (invocador) não necessita de
receber qualquer resultado (void)
PROGRAM
AÇÃO
III
void incCoor (int deltaX, int deltaY){ x = x + deltaX;
y = y + deltaY; }
Modificadores – decremento das coordenadas
Invocação do método anterior num objecto
exterior a classe.
O objecto exterior altera o seu estado interno p1
O objecto exterior (invocador) não necessita de
receber qualquer resultado (void)
PROGRAM
AÇÃO
III
void decCoor (int deltaX, int deltaY){ x = x - deltaX;
y = y - deltaY; }
PROGRAM
AÇÃO
III
String getConta()
Boolean maiorQue(int valor) Void setValor(int valor)
Boolean valorEntre(real min, real max) Double[] notasAcimaDe(double NotaRef)
Acesso aos packages que contêm o conjunto de classes
Classes individuais
Cada um dos membros
Variáveis
Métodos
Interfaces, classes abstratas
PROGRAM
AÇÃO
Modificadores de acesso
Tipos de acesso
Public
Qualquer classe
Protected
Propria classe; qualquer classe do mesmo package e
qualquer subclasse
Private
Propria classe
Por omissão (default)
Caso nenhum modificador seja declarado
Propria classe e classes dentro do mesmo package
PROGRAM
AÇÃO
Modificadores de acesso
Tipos de acesso
Private e protected
Classes especiais (inner class)
Usadas na implementação de classes predefinidas
complexas de Java
Definidas no interior de outras classes
A não declaração de um modificador particular,
significa que a classe estará apenas acessível dentro do respectivo package.
PROGRAM
AÇÃO
PROGRAM
AÇÃO
III
Import static java.lang.Math.abs; Public class Ponto{
//variáveis de instancia private int x;
private int y; //Construtores
Public Ponto(){x=0; y=0;} Public Ponto(int cx, int cy){ x= cx; y=cy;
}
Public Ponto(Ponto p){ x = p.getX();
y = p.getY(); }
//Metodos de instancia // interrogador – devolve x Public int getX(){
return x; }
// interrogador – devolve y Public int getY(){
return y; }
//modificador – incremento das coordenadas
public void incCoord(int deltaX, int DeltaY){
PROGRAM
AÇÃO
III
/*determina se um ponto tem ambas as coordenadas positivas */ public boolean coordPos(){ return x > 0 && y > 0 ; }
/* verifica se um ponto é simétrico, ou seja, se dista
igualmente dos eixos do X e dos Y */ public boolean simétrico(){
return abs(x) == abs(y); }
PROGRAM
AÇÃO
TRATAMENTO DE EXCEPÇÕES