java - orientação a objetos

64
Orientação a Objetos Linguagem de Programação II Ciência da Computação Prof.ª Ms. Elaine Cecília Gatto

Upload: elaine-cecilia-gatto

Post on 20-Jun-2015

1.091 views

Category:

Education


4 download

DESCRIPTION

JAVA - Orientação a Objetos

TRANSCRIPT

Page 1: JAVA - Orientação a Objetos

Orientação a ObjetosLinguagem de Programação IICiência da ComputaçãoProf.ª Ms. Elaine Cecília Gatto

Page 2: JAVA - Orientação a Objetos

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

Page 3: JAVA - Orientação a Objetos

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.

Page 4: JAVA - Orientação a Objetos

Introdução

• Dois tipos de objetos• Animados• Inanimados;

• Todos os objetos tem atributos: • Tamanho• Forma• Cor• Peso• etc

Page 5: JAVA - Orientação a Objetos

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

Page 6: JAVA - Orientação a Objetos

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

Page 7: JAVA - Orientação a Objetos

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

Page 8: JAVA - Orientação a Objetos

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

Page 9: JAVA - Orientação a Objetos

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.

Page 10: JAVA - Orientação a Objetos

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

Page 11: JAVA - Orientação a Objetos

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

Page 12: JAVA - Orientação a Objetos

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

Page 13: JAVA - Orientação a Objetos

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

Page 14: JAVA - Orientação a Objetos

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

Page 15: JAVA - Orientação a Objetos

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

Page 16: JAVA - Orientação a Objetos

Classes e Objetos

• Atributos são especificados pelas variáveis de instância da classe.

• EXEMPLO NO NETBEANS

Page 17: JAVA - Orientação a Objetos

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

Page 18: JAVA - Orientação a Objetos

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.

Page 19: JAVA - Orientação a Objetos

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.

Page 20: JAVA - Orientação a Objetos

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

Page 21: JAVA - Orientação a Objetos

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

Page 22: JAVA - Orientação a Objetos

Classes e Objetos

• Representação gráfica de uma classe

LivroDeNotas

+ MostrarMensagem()

NomeDaClasseAtributosMétodos

Page 23: JAVA - Orientação a Objetos

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.

Page 24: JAVA - Orientação a Objetos

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

Page 25: JAVA - Orientação a Objetos

Classes e Objetos

• Representação gráfica do segundo exemplo

LivroDeNotas2

+ MostrarMensagem(NomeDoCurso : String)

Page 26: JAVA - Orientação a Objetos

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

Page 27: JAVA - Orientação a Objetos

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

Page 28: JAVA - Orientação a Objetos

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

Page 29: JAVA - Orientação a Objetos

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

Page 30: JAVA - Orientação a Objetos

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

Page 31: JAVA - Orientação a Objetos

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

Page 32: JAVA - Orientação a Objetos

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

Page 33: JAVA - Orientação a Objetos

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

Page 34: JAVA - Orientação a Objetos

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;

Page 35: JAVA - Orientação a Objetos

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

Page 36: JAVA - Orientação a Objetos

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

Page 37: JAVA - Orientação a Objetos

Classes e Objetos

• Representação gráfica do terceiro exemplo

LivroDeNotas3- NomeDoCurso : String+ setNomeDoCurso( NomeDoCurso : String)+ getNomeDoCurso( ) : String+ MostrarMensagem()

Page 38: JAVA - Orientação a Objetos

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

Page 39: JAVA - Orientação a Objetos

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;

Page 40: JAVA - Orientação a Objetos

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

Page 41: JAVA - Orientação a Objetos

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

Page 42: JAVA - Orientação a Objetos

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.

Page 43: JAVA - Orientação a Objetos

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

Page 44: JAVA - Orientação a Objetos

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()

Page 45: JAVA - Orientação a Objetos

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

Page 46: JAVA - Orientação a Objetos

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

Page 47: JAVA - Orientação a Objetos

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

Page 48: JAVA - Orientação a Objetos

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.

Page 49: JAVA - Orientação a Objetos

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.

Page 50: JAVA - Orientação a Objetos

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

Page 51: JAVA - Orientação a Objetos

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

Page 52: JAVA - Orientação a Objetos

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

Page 53: JAVA - Orientação a Objetos

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);

Page 54: JAVA - Orientação a Objetos

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)

Page 55: JAVA - Orientação a Objetos

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

Page 56: JAVA - Orientação a Objetos

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!

Page 57: JAVA - Orientação a Objetos

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

Page 58: JAVA - Orientação a Objetos

Métodos

• APIs Java

• Classes pré-definidas agrupadas em categorias

• Declarações import especificam as classes exigidas para compilar um programa

Page 59: JAVA - Orientação a Objetos

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

Page 60: JAVA - Orientação a Objetos

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

Page 61: JAVA - Orientação a Objetos

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

Page 62: JAVA - Orientação a Objetos

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!!!!

Page 63: JAVA - Orientação a Objetos

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!

Page 64: JAVA - Orientação a Objetos

Exercícios