programação orientada a objetos

Propaganda
PROGRAMAÇÃO ORIENTADA A OBJETOS
COMPORTAMENTOS - Observações
•O próprio objeto realiza operações de consulta ou
alteração dos valores dos seus atributos
•Essas operações são definidas em seus métodos
•Os métodos também são utilizados para
interações entre os objetos de uma aplicação
(TROCA DE MENSAGENS)
•Por exemplo, quando um cliente requisita um
saque através de um caixa eletrônico do banco, o
objeto que representa o caixa eletrônico deve
interagir com o objeto que representa a conta do
cliente
•NÃO ESQUEÇA:
AS TAREFAS DE UM OBJETO SÃO DEFINIDAS EM
SEUS MÉTODOS
PROGRAMAÇÃO ORIENTADA A OBJETOS
COMPORTAMENTOS (MÉTODOS) – COMO FUNCIONAM
Considere uma aplicação simples que possui 03 classes: A classe principal (Principal.java),
Recibo.java e Cheque.java. A classe principal “chama” as outras duas classes, que são utilizadas
para imprimir, respectivamente, recibos e cheques que, além de outras informações, imprimirão o
valor informado por extenso. No entanto, o programador não necessita codificar duas vezes a
mesma rotina para escrever o valor por extenso para essas duas classes. Basta escrever uma vez (em
algum lugar) e referenciar o mesmo código para imprimir os respectivos valores por extenso.
Assim, pode-se utilizar um método que verifica o valor informado e retorna esse valor por extenso
em uma String. Observe a ilustração a seguir:
Recibo.java
Principal.java
d
c
a
b
a
b
extenso();
c
d
Cheque.java
PROGRAMAÇÃO ORIENTADA A OBJETOS
COMPORTAMENTOS (MÉTODOS) – COMO FUNCIONAM (cont.)
Assim, o método extenso() deverá ficar em alguma classe específica. Essa classe, então é referenciada
pelas classes Recibo.java e Cheque.java. Esse método pode estar definido na classe principal ou em outra
classe. Considerando que esse método esteja em outra classe, denominada de Util.java, então temos:
class Util {
String extenso(float valor)
Tipo do método extenso
{
//codigo do método extenso
......
String retornoExtenso=“.......”;
Retorno do método extenso
return retornoExtenso;
}
Note que o método extenso possui um tipo String na sua declaração
(a String retornoExtenso).
A String retornada é a variável retornoExtenso, definida dentro do método
Quando um método não retorna nenhum conteúdo, ele terá o tipo void e não terá
nenhum comando return em seu interior.
Exemplo:
Possui 2 parâmetros,
void soma (int a, int b) {............}
separados por vírgula
O método soma não tem retorno,
pois seu tipo é void
PROGRAMAÇÃO ORIENTADA A OBJETOS
COMPORTAMENTOS (MÉTODOS) – COMO FUNCIONAM (cont.)
Assim, as classes Recibo.java e Cheque.java acessam o método extenso() da classe
Util.java.
Observe a ilustração apenas com a classe Recibo.java.
Class Recibo{
float valorEmReal= ..... //Recebe digitação do valor
//usuário digita valor e este é armazenado na variável
// valorEmReal
Util u = new Util();
String valorExtenso = u. extenso(valorEmReal) ;
//trecho de codigo que imprime o recibo usando a
variável valorExtenso
}
class Util {
String extenso(float valor)
{
//codigo do método extenso
......
String retornoExtenso=“.......”;
return retornoExtenso;
}
PROGRAMAÇÃO ORIENTADA A OBJETOS
COMPORTAMENTOS (MÉTODOS) – COMO FUNCIONAM (cont.)
Um método pode ter ou não parâmetros. O método extenso() possui um parâmetro do tipo
float. Assim, ele recebe um valor (que também deve ser do mesmo tipo).
O método Extenso() retorna uma String porque ele foi definido como
String extenso(...); Por isso, quando um método é definido com o tipo void, como void
nome_metodo, ele não efetua nenhum retorno.
Class Recibo{
float valorEmReal= .....// Recebe digitação do valor
//usuário digita valor e este é armazenado na variável
// valorEmReal
Util u = new Util();
String valorExtenso = u. extenso(valorEmReal) ;
//trecho de codigo que imprime o recibo usando a
variável valorExtenso
}
class Util {
String extenso(float valor)
{
//codigo do método extenso
......
String retornoExtenso=“.......”;
return retornoExtenso;
}
PROGRAMAÇÃO ORIENTADA A OBJETOS
COMPORTAMENTOS (MÉTODOS) – COMO FUNCIONAM (cont.)
Para que a classe Recibo.java acesse o método da classe Util.java é necessário
instanciar Util.java na classe Recibo.java.
Assim, criou-se o objeto u que é uma instância da classe Util.java.
Util u = new Util();
Class Recibo{
float valorEmReal= .....// Recebe digitação do valor
//usuário digita valor e este é armazenado na variável
// valorEmReal
Util u = new Util();
String valorExtenso = u. extenso(valorEmReal) ;
//trecho de codigo que imprime o recibo usando a
variável valorExtenso
}
class Util {
String extenso(float valor)
{
//codigo do método extenso
......
String retornoExtenso=“.......”;
return retornoExtenso;
}
Objeto u acessa o método extenso
PROGRAMAÇÃO ORIENTADA A OBJETOS
Exercícios
1. Elabore uma aplicação que, através de orientação a objetos, solicite
pelo teclado o nome e as três notas de dois alunos, sendo que cada
objeto deve efetuar e escrever o cálculo da média aritmética das três
notas informadas.
2. Elabore uma aplicação que, através de objetos específicos, solicite
pelo teclado a altura e a largura de três retângulos, sendo que cada
objeto deve calcular e escrever a sua respectiva área e seu respectivo
perímetro.
Nota: Os métodos devem ser específicos em cada objeto: um método
para entrada de dados, outro cada cálculo e outro para escrita dos
resultados
PROGRAMAÇÃO ORIENTADA A OBJETOS
INSTANCIANDO OBJETOS
•Um método construtor possui o mesmo nome da classe
•O nome do método construtor se inicia com letra maiúscula
•Um método construtor é responsável por criar objetos
Instanciação de objetos – Formato
nomeDaClasse identificador = new métodoConstrutor()
• Quando uma classe não possui um método construtor, a
linguagem Java utiliza o método construtor da classe
“responsável” por todas as classes Java, denominada de Object.
Neste caso, todos os atributos da classe são inicializados com
valores padrão (tipos numéricos com zero (0), String com null,
booleanos com false).
PROGRAMAÇÃO ORIENTADA A OBJETOS
INSTANCIANDO OBJETOS – cont.
public INDICA QUE O ELEMENTO
PODE
SER
ACESSADO
POR
QUALQUER CLASSE DE UMA
APLICAÇÃO. É UM TERMO USADO
PARA DAR VISIBILIDADE AOS
MÉTODOS E ATRIBUTOS DE UMA
CLASSE.
visibilidades
Public
Private
protected
A LINGUAGEM JAVA PERMITE A CRIAÇÃO DE VÁRIOS MÉTODOS COM O MESMO
NOME, DESDE QUE TENHAM OU PARÂMETROS DE TIPOS DIFERENTES, OU
QUANTIDADE DIFERENTE DE PARÂMETROS
PROGRAMAÇÃO ORIENTADA A OBJETOS
INSTANCIANDO OBJETOS – cont.
public INDICA QUE O ELEMENTO
PODE
SER
ACESSADO
POR
QUALQUER CLASSE DE UMA
APLICAÇÃO. É UM TERMO USADO
PARA DAR VISIBILIDADE AOS
Denomina-seMÉTODOS
de
E ATRIBUTOS DE UMA
SOBRECARGACLASSE
DE .
MÉTODOS quando se
tem mais de um
método com o mesmo
nome em uma classe
visibilidades
Public
Private
protected
A LINGUAGEM JAVA PERMITE A CRIAÇÃO DE VÁRIOS MÉTODOS COM O MESMO
NOME, DESDE QUE TENHAM OU PARÂMETROS DE TIPOS DIFERENTES, OU
QUANTIDADE DIFERENTE DE PARÂMETROS
PROGRAMAÇÃO ORIENTADA A OBJETOS
Método Construtor
•O método construtor é responsável pela criação de objetos de uma classe
•Quando uma classe permite a criação de objetos ela poderá ter um,
nenhum ou vários métodos construtores
•O método construtor possui o mesmo nome da classe, iniciando-se com
letra maiúscula
•Caso um objeto seja criado de uma classe sem método construtor, a
criação do objeto se dará pelo método construtor da classe que é a super
classe de todas as classes, que é a classe Object
•Portanto, a classe Object é a super classe de todas as classes
•Assim, se uma classe não possuir um método construtor, os seus
objetos serão criados através da classe Object
•Neste caso, não esqueça que os valores dos atributos serão os valores
padrões: 0 para numéricos, null para String e false para boolean
PROGRAMAÇÃO ORIENTADA A OBJETOS
Método Construtor - Exemplo
Carro objCarroX = new Carro(1500);
Carro objCarroY = new Carro(1600,”GM”);
EXEMPLO DE
INSTÂNCIAS
EXEMPLO EM UM
PROGRAMA
INSTANCIANDO
UM OBJETO
PROGRAMAÇÃO ORIENTADA A OBJETOS
Exercício - Metódos
Crie um novo projeto e acrescente nele a classe Carro do exercício de
fixação. Em seguida, insira o atributo velocidade na classe Carro, do
tipo int. Crie dois métodos na classe Carro:
a)O primeiro método, com o nome alterarVelocidade, deve possuir um
parâmetro inteiro, sem retorno. Deve aumentar a velocidade do carro
com o valor passado como parâmetro. A velocidade não deve
ultrapassar 250 km/h. Caso isso ocorra, ela deve retornar a 60. Caso a
velocidade final seja negativa, esta também deve retornar a 60;
b)O segundo método, com o nome retornarVelocidade, sem
parâmetro, com retorno inteiro, deve retornar o valor da velocidade.
Copie o mesmo programa Principal do exercício de fixação para esse
novo projeto e altere-o de tal forma que ele possa, no seu final, antes
da apresentação dos resultados, chamar o método alterarVelocidade,
várias vezes (preferencialmente), passando valores para o objeto Carro.
Acrescente a apresentação do valor da velocidade no final do
programa.
PROGRAMAÇÃO ORIENTADA A OBJETOS
EXERCÍCIO DE FIXAÇÃO
Considere o domínio de uma universidade, onde se tem o aluno
como uma de suas diversas entidades. Assim, elabore um
programa Java que permita criar quatro objetos da classe Aluno
[atributos: nome, cpf(String), matrícula(int), curso(int), local de
nascimento(String)] sendo que cada um deve ser criado com um
construtor distinto, sendo que o código do curso dependerá do
local do nascimento informado. Tem-se, no mínimo, 5 locais de
nascimento para os alunos que frequentam a respectiva
universidade. Escrever cada um dos atributos de cada um desses
quatro objetos.
PROGRAMAÇÃO ORIENTADA A OBJETOS
HERANÇA SIMPLES
Mecanismo que permite a
uma classe, denominada de
SUBCLASSE ou CLASSE
FILHA, herdar todos os
atributos e métodos de
outra classe, denominada
de SUPERCLASSE ou
CLASSE MÃE
PROGRAMAÇÃO ORIENTADA A OBJETOS
HERANÇA SIMPLES – cont.
A subclasse pode ter
outros atributos e
outros métodos,
tornando-a uma
ESPECIALIZAÇÃO.
A superclasse é uma
GENERALIZAÇÃO
PROGRAMAÇÃO ORIENTADA A OBJETOS
HERANÇA SIMPLES – cont.
ESQUEMA
PROGRAMAÇÃO ORIENTADA A OBJETOS
HERANÇA SIMPLES – cont.
EXEMPLO
PROGRAMAÇÃO ORIENTADA A OBJETOS
HERANÇA SIMPLES – cont.
EXEMPLO
Essa estrutura de classes é denominada de
HIERARQUIA DE CLASSES
PROGRAMAÇÃO ORIENTADA A OBJETOS
HERANÇA SIMPLES – CODIFICAÇÃO JAVA
Representa a
herança no
código
PROGRAMAÇÃO ORIENTADA A OBJETOS
HERANÇA SIMPLES – CODIFICAÇÃO JAVA
Note que Gerente tem
gratificação
Logo, salário de Gerente é
diferente: É composto por
salário + gratificação
Note o import java.util.Date
PROGRAMAÇÃO ORIENTADA A OBJETOS
HERANÇA SIMPLES – CODIFICAÇÃO JAVA
getSalario chama a si
mesmo infinitas vezes
PORQUE?
Crie (SOBRESCREVA) um
outro método getSalario
em Gerente
Também
não é a
solução.
ERRO
Nota: salario é
private
PORQUE?
Solução
?
PROGRAMAÇÃO ORIENTADA A OBJETOS
HERANÇA SIMPLES – CODIFICAÇÃO JAVA
O QUE FAZER
ENTÃO?
O IDEAL
Usar super().
Se for usado,
super deve ser
a primeira
instrução do
construtor
SOLUÇÃO
Observe o
valueOf
PROGRAMAÇÃO ORIENTADA A OBJETOS
HERANÇA – NÃO ESQUEÇA!!
Toda subclasse tem um relacionamento É
UM com sua superclasse
Exemplos:
Um Caminhão É UM tipo de Transporte
Um Funcionario É UM tipo de Pessoa
Download