Beruflich Dokumente
Kultur Dokumente
Orientada a Objetos
Apresentaes
Do Professor
Tpicos
Conceito de reuso em OO
Padres de Software
Prof. Paulo Lacerda
paulo@quallyleste.com.br
Paradigmas de programao
Paradigma
procedural
Paradigmas de programao
Paradigma
Orientao a Objetos
Comparao Procedural X OO
Programa
Classe
Processos
Propriedades
Dados
Mtodos
Principais elementos da OO
Classes
Objetos
Atributos
Construtores
Mtodos
Encapsulamento
Herana
Reescrita
Sobrecarga
Polimorfismo
Classes
Exemplos
Classe de Automveis
Objetos
Exemplos
Atributos
Exemplos
Mtodos
Exemplos
Conta Bancria
nmero
nome do Cliente
saldo
limite
sacar um valor x
depositar um valor x
Em Java:
class Conta {
int nmero;
String nome;
double saldo;
double limite;
}
class Programa {
public static void main (String [ ] args) {
Conta minhaConta = new Conta( );
}
}
Prof. Paulo Lacerda
paulo@quallyleste.com.br
Os sinais na frente dos nomes das variveis ou dos nomes dos mtodos significam
Acrescentar Mtodo
transferePara na classe Conta
class Conta {
int nmero;
...
boolean saca ......
......
void deposita ...
...
boolean transferePara (Conta destino, double valor) {
boolean retirou = saca(valor);
if (retirou == false) {
return false;
} else {
destino.deposita(valor);
return true;
}
}
}
No programa principal:
class Programa {
public static void main (String [ ] args) {
Conta conta1 = new Conta( );
conta1.nome = "Joo";
conta1.nmero = 123456;
conta1.saldo = 1000;
conta1.limite = 5000;
Conta conta2 = new Conta( );
conta2.nome = "Maria";
conta2.nmero = 987654;
conta2.saldo = 2000;
conta2.limite = 4000;
Prof. Paulo Lacerda
paulo@quallyleste.com.br
Segue...
Cliente
+nome:
String
+sobrenome: String
+endereo:
+cpf:
String
String
Encapsulamento
Os modificadores so:
No programa principal:
class Programa {
public static void main (String [ ] args) {
Conta conta1 = new Conta( );
conta1.titular.nome = "Joo";
conta1.nmero = 123456;
conta1.setSaldo(1000);
conta1.setLimite(5000);
System.out.println("Saldo = " + conta1.getSaldo( ));
System.out.println("Limite = " + conta1.getLimite( ));
}
}
Prof. Paulo Lacerda
paulo@quallyleste.com.br
Cliente
+nome:
String
+sobrenome: String
+endereo:
+cpf:
String
String
Atividade 1
Esta atividade tem por objetivo modelar uma classe para Funcionrio.
Este deve ter nome, departamento onde trabalha, salrio, data de
admisso, RG, e um valor booleano que indique se ele ainda
funcionrio ou se no trabalha mais na empresa.
Voc deve criar alguns mtodos de acordo com as necessidades que
julgar conveniente para o sistema. Alm desses, crie um mtodo bonifica
que aumenta o salrio de acordo com um parmetro passado como
argumento. Crie tambm um mtodo demite, que no recebe parmetro
algum, s modifica o valor booleano correspondente.
A.
B.
C.
Mtodo Construtor
O mtodo construtor desenvolvido da mesma forma que
uma funo, a nica diferena que ele tem o mesmo nome
da classe.
Isso se deve ao fato de que um objeto deve ser construdo
cada vez que chamamos a classe. E a responsabilidade de
fazer isso do construtor. Isso parte do princpio que
podemos ter dois objetos com a mesma caracterstica, mas
que no so os mesmos objetos.
public class MinhaClasse {
public MinhaClasse() { //esse o metodo
construtor
System.out.println("Oi!");
}
}
Prof. Paulo Lacerda
paulo@quallyleste.com.br
Herana
Enquanto programamos em Java, h a necessidade de
trabalharmos com vrias classes. Muitas vezes, classes diferentes
tem caractersticas comuns, ento, ao invs de criarmos uma nova
classe com todas essas caractersticas usamos as caractersticas
de um objeto ou classe j existente.
Ou seja, herana , na verdade, uma classe derivada de outra
classe.
Sobrecarga
Java nos permite criar vrios mtodos com o mesmo nome
desde que tenham parmetros diferentes. Isso o que
chamamos de sobrecarga de mtodos.
A sobrecarga de mtodos consiste em criarmos o mesmo mtodo
com possibilidades de entradas diferentes. Essas entradas,
caracterizadas como parmetros, devem sempre ser de tipos
diferentes, quantidades de parmetros diferentes ou posies dos
tipos diferentes.
package tiexpert;
public class Eletrodomestico {
private boolean ligado;
private int voltagem;
private int consumo;
public Eletrodomestico(boolean ligado, int voltagem, int
consumo) {
this.ligado = ligado;
this.voltagem = voltagem;
this.consumo = consumo;
}
// (...)
}
Sobreescrita
Diferente da sobrecarga, a sobrescrita acontece quando um
mtodo existe em uma classe pai e reescrito na classe filha para
alterar o comportamento. A assinatura do mtodo deve ser igual
na classe pai e na classe filha.
Mtodo Sobrescrito so mtodos declarados com mesmo nome em
sua classe ou em suas subclasses, mas com algumas caractersticas:
lista de argumentos iguais.
mesmo tipo de retorno (isso inclui retorno covariantes).
nvel de acesso mais restritivo
no pode sobrescrever mtodo static e marcado com final
no pode sobrescrever mtodos private, ou seja, se ele no poder ser
herdado, no pode ser subscrito.
no pode pode lanar excees checadas novas mais abrangentes.
pode lanar qualquer exceo no-checadas, independente do
mtodo novo ou antigo declarar ou no a exceo.
Interfaces
Interface um recurso da orientao a objeto utilizado em Java que
define aes que devem ser obrigatoriamente executadas, mas que
cada classe pode executar de forma diferente.
Interfaces contm valores constantes ou assinaturas de mtodos
que devem ser implementados dentro de uma classe.
E por que isso?
Isso se deve ao fato que muitos objetos (classes) podem possuir a
mesma ao (mtodo), porm, podem execut-la de maneira
diferente.
Usando um exemplo bem drstico, podemos ter uma interface
chamada areo que possui a assinatura do mtodo voar(). Ou
seja, toda classe que implementar areo deve dizer como
voar(). Portanto, se eu tenho uma classe chamada pssaro e
outra chamada avio, ambas implementando a interface
areo, ento, nestas duas classes devemos codificar a forma
como cada um ir voar().
Modificadores de Acesso
Em programao orientada a objetos, modificador de acesso,
tambm chamado de viso de mtodo ou ainda viso de atributo,
a palavra-chave que define um atributo, mtodo ou classe como
pblico (ou public, qualquer classe pode ter acesso), privado (ou
private, apenas os mtodos da prpria classe pode manipular o
atributo) ou protegido (ou protected, pode ser acessado apenas
pela prpria classe ou pelas suas subclasses).
Modificadores de Acesso
Um atributo quando declarado com o modificador static tem a
caracterstica de "propagar o seu valor" por todas as instncias da
classe a que pertence, ou seja o seu valor ser o mesmo para
todas as instncias.
palavra chave final sim, esta ajuda a implementar objetos imutveis
j que s se pode atribuir valor ao membro "final" uma nica vez, e
j que o compilador exige que este valor seja atribudo j no
construtor da classe (caso no tenha sido atribudo j na prpria
declarao do membro esttico)
Referncias
<www.