Beruflich Dokumente
Kultur Dokumente
Objetos e Java
Modelos
• Abstrações do mundo real
• Como um objeto ou mecanismo
do mundo real funciona?
– Quais são as informações
(atributos) que ele representa?
– Que ações podemos executar com
estas informações?
• Limites de modelos
Orientação a Objetos
• Paradigma de programação onde:
– Modelamos coisas do mundo real para que possam
ser processadas por programas de computador.
– Descrevemos modelos através de seus atributos
(dados) e operações.
• Criamos classes a partir destes modelos
usando uma linguagem de programação
orientada a objetos.
• Criamos instâncias destas classes para
processamento dos seus dados.
• Alguém cria as classes, alguém usa as
classes em suas aplicações.
Encapsulamento
• Oculta dados para que estes
sejam processados somente da
forma planejada.
• Uma interface existe para uso
da classe que encapsula os
dados.
• Algumas operações também
podem ser ocultadas do usuário
da classe.
UML
• Unified Modeling Language
– Esquemas para representação de classes e sua
interação Nome da
• Diagrama de classes: Classe
CartaoDePonto
Campos da
-código:int
Classe (atributos
-horasTrab:int
ou dados)
-valorHora:float
}
Codificação em Java
• Nomes de classes:
– Seguem padrão UsaMaiusculasEmCadaPalavra
– Não devem ter acentos
– Nome da classe + .java = nome do arquivo
– Padrão: public class MinhaClasse
• Deve ser declarada no arquivo MinhaClasse.java
Codificação em Java
• Modificadores de acesso:
– public: permite que o campo ou método seja
acessado de outra classe.
– private: o campo ou método somente pode ser
acessado da classe que o contém
– Normalmente campos são todos private
(encapsulamento) e métodos são todos public.
Classes devem ser public.
Codificação em Java
• Tipos de dados para representação de
atributos:
– boolean, char, short, int, long, float, double:
tipos nativos
– String: classe que pode ser usada como tipo
nativo
– void: não é um tipo, usado para indicar que um
método não retorna nada
Codificação em Java
• Nomes de campos
– Seguem padrão começaEmMinúsculas
– Podem conter acentos
– Somente um tipo por campo
– Vários campos do mesmo tipo podem ser
declarados ao mesmo tempo
– Exemplos:
• private int númeroDePessoas;
• public boolean éBolsista;
• public String nomeDoAluno;
• public byte dia,mês;
• public float nota1,nota2,nota3;
Codificação em Java
• Nomes de métodos
– Seguem padrão começaEmMinúsculas
– Podem conter acentos
– Podem ter ou não argumentos (entre parênteses)
• Se não houver argumentos, usar parênteses sem nada
– Devem ter um único tipo de retorno ou void
• Se houver tipo de retorno diferente de void, deve
retornar um valor do tipo declarado
– Exemplos:
• private int calculaFatorial()
• public void setÉBolsista(boolean éBolsista)
• public boolean getÉBolsista()
• public float média(float número1,float número2)
Codificação em Java
• Assinatura de um método
– Nome do método mais argumentos
– Somente métodos com assinaturas compatíveis
podem ser executados
• int pode ser visto como long, float, double
• float pode ser visto como double
• double não pode ser visto como int, etc.
– Assinaturas incompatíveis causam erros de
compilação
• public static void main(String[] args)
– Método “mágico”, permite que uma classe seja
executada como um programa.
Escrevendo Métodos
• Todo o processamento é feito dentro de
métodos
– Declaração de variáveis locais (da mesma forma
que campos mas sem modificadores de acesso)
– Criação de instâncias se necessárias
– Laços, decisões, entrada e saída
Sobrecarga
• Podemos ter métodos com o mesmo nome
mas assinaturas diferentes
public float calculaSalárioDoDia()
{
// assume que foram trabalhadas oito horas
}
• Exemplo: System.out.println
Arrays
• Arrays de dados
– Podem ser usados como campos, argumentos,
variáveis, etc.
– Contém vários dados do mesmo tipo com um
único nome
– Índices permitem acesso a dados individuais
– Devem ser alocados
Referência: http://ootips.org/uml-hasa.html
Exemplo: Relação 1 para 1
Automovel beetle2002 =
new Automovel("New Beetle",(short)2002,
new Motor(150f,"gasolina"));
beetle2002.imprimeDados();
}
}
Exemplo: Relação 1 para N (1..*)
import java.util.Vector;
}
Exemplo: Relação 1 para N (1..*)
public class TestePedido
{
public static void main(String[] args)
{
Data hoje = new Data((byte)19,(byte)10,(short)2003);
p.adicionaItem(i2);
p.adicionaItem(i3);
p.adicionaItem(i4);
Pedido #1 do vendedor 3
p.imprime(); Data: 19/10/2003
} Itens:
} * Item: código 1215, 10 unidades a 9.45 cada.
* Item: código 1217, 1 unidades a 21.0 cada.
* Item: código 1223, 1 unidades a 22.05 cada.
* Item: código 1249, 3 unidades a 50.95 cada.
Total do pedido:290.40002
Herança
• Agregação, associação e composição:
relações usa ou contém
• Herança: relações é-um-tipo-de
– Reutilizamos classes já existentes e descrevemos
as diferenças
– Também conhecida como relação de
especialização/generalização
– Classe herdeira herda todos os campos e métodos
mas só pode acessar os públicos
ClasseAncestral ClasseHerdeira
Herança: Exemplo
ContaBancaria ContaEspecial
- n omeCo rrentista: String - l imite: double
- s aldo: double + C ontaEspecial(String,doubl e,double)
+ C ontaB ancaria(String,double) + g etSaldo():double
+ d eposi ta(double):void
+ r etira (double):void
+ g etSal do():double
+ g etNom e():String
}
Herança: Exemplo
public class ContaEspecial extends ContaBancaria
{
private double limite;
public ContaEspecial(String n,double s,double l)
{
super(n,s);
limite = l;
deposita(limite); // simula dinheiro a mais !
}
public double getSaldo()
{
return super.getSaldo()-limite; // saldo verdadeiro
}
}