java - orientação a objetos
DESCRIPTION
JAVA - Orientação a ObjetosTRANSCRIPT
Orientação a ObjetosLinguagem de Programação IICiência da ComputaçãoProf.ª Ms. Elaine Cecília Gatto
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 e são semelhantes a funções na linguagem C
• Campos: implementam atributos
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()
NomeDaClasseAtributosMé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ódigo-fonte 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
• Representação gráfica do terceiro exemplo
LivroDeNotas3- NomeDoCurso : String+ setNomeDoCurso( NomeDoCurso : String)+ getNomeDoCurso( ) : String+ MostrarMensagem()
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étodosMÉTODO DESCRIÇÃO
abs(x) Valor absoluto de xceil(x) Arredonda x para o maior inteiro não menor que xcos(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 xlog(x) Logaritmo natural de x (base e)
max(x, y) Maior valor de x e ymin(x, y) Menor valor de x e ypow(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 xtan(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étodosPacote Descriçãojava.applet Criação de applets (web)java.awt Java abstract window toolkit package. Manipulam GUIsjava.awt.event Tratamento de eventos de GUIjava.io Input/output java.lang LANG = LANGUAGE. Classes e interfaces java diversasjava.net NET = NETWORKING. Classes para redesjava.text TEXT . Manipula números, datas, caracteres e stringsjava.util UTIL = UTILITIES. Data, hora, números aleatórios,
armazenamento e processamento de dados, divisão de strings.
java.swing Componentes GUI swingjava.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 métodos sobrecarregados pelas suas assinaturas
• 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!
Exercícios