Introdução
• Em POO qualquer entidade tem características e
comportamentos
• Vantagens:
• Reutilização de código
• Confiabilidade
• Facilidade de manutenção e extensão
Introdução
• OBJETOS:
• pessoas,
• animais,
• plantas,
• carros,
• aviões,
• edifício,
• computadores,
• sinais de trânsito,
• fornos
de
microondas,
• telefones,
• casas,
• sistemas
de
refrigerção
à
água,
• etc.
Introdução
• Dois tipos de objetos
• Animados
• Inanimados;
• Todos os objetos tem atributos:
• Tamanho
• Forma
• Cor
• Peso
• etc
Introdução
• Todos os objetos tem comportamentos:
• uma bola rola,
• uma bola infla,
• uma bola murcha
• O bebê chora
• O bebê dorme
• O bebê engatinha
• O bebê anda
• etc
Introdução
• Diferentes objetos podem
• exibir comportamentos semelhantes
• ter atributos semelhantes
• Exemplo:
• Comparação entre bebês e adultos
• Comparação entre humanos e chimpanzés
• Portanto OO é semelhante àquilo que as pessoas
utilizam para descrever os objetos do mundo real
Introdução
• Classes: objetos que tem as mesmas características
• Exemplo: uma classe de veículos é composta por
carros, caminhões e patins.
• Herança: novas classes de objetos são derivadas de
uma principal, absorvendo características desta e
adicionando características únicas
Introdução
• Mensagens:
• Comunicação entre objetos.
• Humanos trocam mensagens entre si
• Os objetos fazem o mesmo.
• Exemplo: um objeto conta bancária pode receber
uma mensagem para reduzir seu saldo
Introdução
• Encapsulamento:
• A orientação a objetos empacotam atributos e
operações em objetos.
• As operações são os comportamentos dos
objetos.
• Exemplo: podemos dirigir um carro sem conhecer
os detalhes de como motores, transmissões, freios
e sistemas funcionam internamente, mas sabemos
para que serve o acelerador, o freio entre outros.
Introdução
• Em JAVA a unidade de programação é a CLASSE, a
partir da qual os objetos são instanciados (ou
criados)
• Métodos: implementam operações
semelhantes a funções na linguagem C
• Campos: implementam atributos
e
são
Introdução
• Classes: contém campos e conjunto de métodos
que manipulam os campos e fornecem serviços a
outras classes
• Podemos criar muitos objetos a partir de uma
mesma classe
• Associações: relacionamento entre classes
Introdução
• Reutilização de classes: o empacotamento permite
isto, diminuindo custos, tempo e esforço, ajudando
a construir sistemas mais confiáveis e eficientes.
• Classes existentes são confiáveis pois:
• Testes,
• Depuração,
• Ajustes de desempenho
Classes e Objetos
• Método:
• Realiza uma tarefa em um programa (classe)
• Descreve os mecanismos que realmente realizam
suas tarefas
• Oculta do usuário as tarefas complexas que ele
realiza
• Uma classe abriga um ou mais métodos
Classes e Objetos
• Exemplo: uma classe que representa uma conta
bancária poderia contar com um método para
depósitos, outro para saques e outro para obter o
saldo
• Antes de qualquer coisa, o programador deve
construir um objeto de uma classe antes de fazer
um programa realizar as tarefas descritas na
própria classe
Classes e Objetos
• Chamada de método:
• Quando mensagens são enviadas para um objeto
• Instrui o método do objeto a fazer a sua tarefa
• Um objeto tem atributos que são portados com o
objeto quando ele é utilizado em um programa
• Exemplo: cada objeto conta bancária sabe o saldo
da conta que ele representa, mas não sabe os
saldos de outras contas do banco
Classes e Objetos
• Atributos são especificados pelas variáveis de
instância da classe.
• EXEMPLO NO NETBEANS
Classes e Objetos
• public
• É uma palavra chave que é um modificador de
acesso
• Significa que o método, classe ou objeto está
diponível para o público, está acessível a todos
• Por fim, pode ser chamado de fora do corpo da
declaração de classe, por métodos ou outras
classes
Classes e Objetos
• Void:
• Palavra chave
• O método realiza uma tarefa mas não retorna
nenuma informação
• Uma classe que contém o método MAIN é um
aplicativo Java
• O MAIN é um método especial que é chamado
automaticamente pela JVM quando você executar
o aplicativo.
Classes e Objetos
• A maioria dos métodos não são chamados
automaticamente
• A classe do exemplo não é um aplicativo Java pois
não contém um método main.
• Ela é simplesmente uma classe.
Classes e Objetos
• Static: um método static é especial porque pode
ser chamado sem primeiro criar um objeto da
classe em que o método é declarado
• Não podemos chamar um método que pertence a
outra classe até criar um objeto dessa classe
Classes e Objetos
• Cada nova classe que criamos, torna-se um novo
tipo em Java que pode ser utilizado para declarar
variáveis e criar objetos
• New: cria um objeto da classe especificada à
direita da palavra chave
Classes e Objetos
• Representação gráfica de uma classe
LivroDeNotas
+ MostrarMensagem()
NomeDaClasse
Atributos
Métodos
Classes e Objetos
• Métodos podem exigir um ou mais parametros que
representam informações adicionais necessárias
para realizar a tarefa
• EXEMPLO NO NETBEANS
• Ao declarar um método você deve especificar se o
método requer dados para realizar a sua tarefa, ou
não.
Classes e Objetos
• Portanto, o método pode ter uma lista de
parâmetros. Pode ter nenhum, apenas um ou
vários.
• Todo parametro deve especificar um tipo e um
identificador
• Cuidado com o número de parametros e os seus
respectivos tipos
Classes e Objetos
• Representação gráfica do segundo exemplo
LivroDeNotas2
+ MostrarMensagem(NomeDoCurso : String)
Classes e Objetos
• Porque preciso importar a classe SCANNER e não
importar a classe String ou System?
• Porque o pacote java.lang é importado
implicitamente em todo o programa java
Classes e Objetos
• Classes no mesmo pacote (mesma pasta) são
importadas implicitamente nos arquivos de códigofonte de outras classes no mesmo pacote
• Uma declaração import não será exigida quando
uma classe em um pacote utilizar outra domesmo
pacote
Classes e Objetos
• Variáveis locais:
• São as variáveis declaradas no corpo de um
método particular
• Só podem ser utilizadas nesse método.
• Quando um método termina, os valores de suas
variáveis locais são perdidos
Classes e Objetos
• Um objeto tem atributos que são portados com o
objeto quando ele é utilizado em um programa
• Os atributos existem antes de um método ser
chamado em um objeto e depois do método
completar a execução
Classes e Objetos
• Os atributos são representados como variáveis em
uma declaração de classe
• Variáveis são chamadas de CAMPOS
• São declaradas dentro de uma declaração de
classe, mas fora dos corpos das declarações de
método da classe
Classes e Objetos
• Variavel de instancia:
• É o campo que representa o atributo
• Ocorre quando cada objeto de uma classe
mantém sua própria cópia de um atributo
• Cada objeto (ou instancia) da classe tem uma
instância separada da variável na memória
• EXEMPLO NO NETBEANS
Classes e Objetos
• Private:
• Palavra chave
• Modificador de acesso
• Só são acessíveis a métodos da classe em que
são declarados
• Regra geral:
• Variáveis de instância devem ser declaradas
como private
• Métodos devem ser declarados como public
Classes e Objetos
• Procure declarar todas as variáveis no inicio do seu
código, isto deixa o programa legível
• Ocultamento de dados: ocorre quando um
programa cria um objeto de uma classe,
encapsulando seus atributos, que só poderão ser
acessados por métodos da classe do objeto
• Retorno de método: quando um método tem um
tipo, ao completar sua tarefa, o método retorna,
ao método chamador, um resultado
Classes e Objetos
• Todo campo tem um valor inicial padrão;
• Esse valor é fornecido pelo JAVA quando o
programador não especificar o valor inicial;
• O valor padrão de um tipo de dado STRING é o
NULL;
Classes e Objetos
• Recomenda-se inicializar STRINGS com “”, isto
é, uma String vazia
• Cliente de um objeto: é qualquer classe que
chama os métodos do objeto
Classes e Objetos
• As classes costumam fornecer métodos PUBLIC
para permitir a clientes da classe CONFIGURAR ou
OBTER valores de variáveis de instância PRIVATE
• Métodos SET e GET: métodos para configurar e
obter valores
• Nomenclatura padrão do JAVA
Classes e Objetos
• Tipos primitivos em
Java:
•
•
•
•
•
•
•
•
Boolean
Byte
Char
Short
Int
Long
Float
Double
• Todas
são
inicializadas com o
valor ZERO, menos
BOOLEAN que é
inicializada
com
FALSE ou TRUE
• Tipos NÃO primitivos
em Java:
• São os tipo por
referência
• Classes é um tipo não
primitivo
Classes e Objetos
• Variáveis de tipos por referência: são usadas para
armazenas as localizações de objetos na memória
do computador;
• Essas variáveis referenciam objetos no programa;
• Os objetos referenciados podem todos conter
muitas variáveis de instância e métodos;
Classes e Objetos
• São inicializadas por padrão com o valor NULL;
• NULL = referencia a nada
• Uma referencia a um objeto é requerida para
invocar os métodos do objeto
Classes e Objetos
• CONSTRUTOR
• É utilizado para inicializar um objeto de uma classe
quando o objeto for criado
• Java requer uma chamada de construtor para todo
objeto que é criado
Classes e Objetos
• NEW: chama o construtor da classe para realizar a
incialização
• O compilador JAVA fornece um construtor-padrão
sem parametros em qualquer classe que não inclua
explictamente um construtor.
Classes e Objetos
• EXEMPLO NO NETBEANS
• Um construtor deve ter o mesmo nome da sua
classe
• Uma classe pode ter vários métodos construtores
• Construtores NÃO podem retornar valores
• Se o programador especificar um construtor para a
classe, o JAVA não criará um construtor-padrão
Classes e Objetos
• Representação gráfica do exemplo 4
LivroDeNotas4
- NomeDoCurso : String
<< construtor >> LivroDeNotas4()
<< construtor >> LivroDeNotas4( Nome : String)
+ setNomeDoCurso( Nome : String)
+ getNomeDoCurso( ) : String
+ MostrarMensagem()
Classes e Objetos
• Números de ponto flutuante
• Variáveis double podem armazem números com
maior magnitude, mais detalhes e mais precisos
que as variáveis float
• Por padrão, Java trata todos os número de ponto
flutuante como DOUBLE e não como FLOAT
Classes e Objetos
• Números de ponto flutuante
• A maioria dos programadores JAVA usam DOUBLE
e não FLOAT
• O valor armazenado sempre será apenas uma
aproximação do valor exato
Classes e Objetos
• EXEMPLO NO NETBEANS
• Representação gráfica do exemplo 5:
Conta
- saldo : Double
<< construtor >> Conta( saldoInicial : Double)
+ Credito(conta : Double)
+ getSaldo() : Double
Métodos
• Técnica “Dividir pra conquistar”: melhor forma de
desenvolver um programa grande é construí-lo a
partir de pequenas e simples partes, ou módulos.
• Métodos, classes e pacotes: são os três tipos de
módulos em JAVA.
• Não reivente a roda! Utilize as APIs do Java e
códigos-fontes já existentes na comunidade, para
diminuir o tempo de desenvolvimento do seu
projeto.
Métodos
• API: Java Application Programming Interface. Fazem
parte do JDK 7. Coleções de classes pré-definidas:
• Cálculos matemáticos
• Manipulações de Strings
• Manipulações de Caracteres
• Operações de entrada/saída
• Operações de banco de dados
• Operações de rede
• Processamento de arquivos
• Verificação de erros
• Etc.
Métodos
• Métodos são como funções ou procedimentos
• Permitem que o programador modularize um
programa, separando suas tarefas em unidades
• Tornam os programas mais gerenciáveis
• Permite reutilização de código
Métodos
• Um pequeno método que realiza uma única tarefa
é mais fácil de testar e depurar do que um método
maior que realiza muitas tarefas
• Limite o seu método à realização de uma única
tarefa
Métodos
• Dê um nome apropriado ao seu método, que
expresse o que ele realmente faz
• Um método é invocado por uma chamada de
método
• Quando o método chamado completa sua
tarefa, ele retorna um resultado ou retorna o
controle ao chamador
Métodos
• Métodos static ou métodos de classe: realiza uma
tarefa que não depende de nenhum objeto, se
aplica à classe em que é declarado como um todo
• Não é necessário criar um objeto da classe antes
de usar os métodos contidos nela
• Exemplo da classe MATH, que contem as funções
matemáticas pré-definidas:
• Math.sqrt(numero);
Métodos
MÉTODO
DESCRIÇÃO
abs(x)
Valor absoluto de x
ceil(x)
Arredonda x para o maior inteiro não menor que x
cos(x)
Cosseno trigonométrico de x (x em radianos)
exp(x)
Método exponencial
floor(x)
Arredonda x para o maior inteiro não maior que x
log(x)
Logaritmo natural de x (base e)
max(x, y)
Maior valor de x e y
min(x, y)
Menor valor de x e y
pow(x, y)
x elevado à potência de y (isto é, xy)
sin(x)
Seno trigonométrico de x (x em radianos)
sqrt(x)
Raiz quadrada de x
tan(x)
Tangente trigonométrica de x (x em radianos)
Métodos
• Variáveis de classe:
• Campos em que cada objeto de uma classe não tem
uma instância separada do campo
• Campos static: permite que eles sejam acessados via
nome da classe e um ponto
• Quando objetos de uma classe que contém campos
static são criados, todos os objetos dessa classe
compartilham uma cópia dos campos static
Métodos
• Exemplo no netbeans
• Um método com muitos parametros pode estar
realizando tarefas demais
• Considere dividir o método em métodos menores
que realizam tarefas separadas
• Um tipo de dado é requerido para cada parametro
na lista de parametros de um metodo!
Métodos
• Três formas de chamar um método. Exemplos:
• MaiorValor(n1, n2, n3); o próprio nome do
método
• MaiorValor.determineMaximo(); uma variável
que contém uma referência a um objeto
• Math.sqrt(); o nome da classe
Métodos
• APIs Java
• Classes pré-definidas agrupadas em categorias
• Declarações import especificam as classes exigidas
para compilar um programa
Métodos
• Permite que os programadores utilizem o nome
simples da classe em vez do nome completamente
qualificado da classe
• Não preciso usar java.util.Scanner no código, basta
usar Scanner, desde que seja usado import
java.util.Scanner; no inicio da classe
Métodos
Pacote
Descrição
java.applet
Criação de applets (web)
java.awt
Java abstract window toolkit package. Manipulam GUIs
java.awt.event
Tratamento de eventos de GUI
java.io
Input/output
java.lang
LANG = LANGUAGE. Classes e interfaces java diversas
java.net
NET = NETWORKING. Classes para redes
java.text
TEXT . Manipula números, datas, caracteres e strings
java.util
UTIL = UTILITIES. Data, hora, números aleatórios,
armazenamento e processamento de dados, divisão de
strings.
java.swing
Componentes GUI swing
java.swing.event
Tratamento de evento swing
Métodos
• Sobrecarga de métodos:
• Métodos com o mesmo nome podem ser
declarados na mesma classe, contanto que tenham
diferentes conjuntos de parâmetros
• É usada para criar vários métodos com o mesmo
nome que realizam as mesmas tarefas ou tarefas
semelhantes mas sobre tipos diferentes de
números ou números diferentes de argumentos
Métodos
• Exemplo no netbeans
•O
compilador
distingue
os
sobrecarregados pelas suas assinaturas
métodos
• Distingue pelo nome do método, número do
método, tipos dos parametros e ordem dos
parametros
• Void metodo1(int a, float b) e void metodo1(float
a, int b) são diferentes!!!!
Métodos
• Declarações de métodos sobrecarregados com
assinaturas idênticas causam erros mesmo que os
tipos de retorno sejam diferentes
• O tipo de retorno então não diferenciam os
métodos!