Buscar

Programação Fundamental em Java – Parte 2

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Curso de Sistemas de Informação
Prof. Robson Alves
prof.robson.campelo@gmail.com
AULAS 5 e 6
Programação III
1
1
1
2
Agenda
Conceitos de Orientação a Objetos – Parte 2 Continuação
Herança
Polimorfismo
Classes abstratas e Concretas
Interfaces
2
2
Agenda
Programação Fundamental em Java – Parte 1
Variáveis
Operadores
Estruturas de Decisão
Estruturas de Controle
3
Agenda
Programação Fundamental em Java – Parte 2
Arrays
Métodos
Herança múltipla
Exceções
4
Conceitos de Orientação a Objetos
Herança: 
Mecanismo que permite definir uma nova classe (subclasse) a partir de uma classe já existente (superclasse)
Evita repetição de código, já que as “classes-filhas” herdam atributos e comportamento da “classe-pai”
5
Conceitos de Orientação a Objetos
Exemplo de Herança:
Utiliza-se a palavra reservada extends para definir a Herança.
6
Conceitos de Orientação a Objetos
Princípio da Substituição em Herança:
Toda Poupança é um conta, mas nem toda conta é uma poupança
7
Conceitos de Orientação a Objetos
8
Conta {
Creditar(valor);
Debitar(valor);
getSaldo();
}
Poupança extends Conta{
renderJuros(valor);
}
Conceitos de Orientação a Objetos
9
...
Conta contaAlfa;
contaAlfa = new Poupanca( );
contaAlfa.creditar(1000.00);
contaAlfa.debitar(500.00);
System.out.println(contaAlfa.getSaldo( ));
...
Conceitos de Orientação a Objetos
10
Typecast (Conversão de tipo)
...
Conta c1;
c1 = new Conta( );
( (Poupanca) c1 ).renderJuros(0.05);
System.out.println( c1.getSaldo( ) );
...
Conceitos de Orientação a Objetos
11
Operador instanceof
Retorna valor booleano após verificar se uma classe é daquele tipo
Deve ser usado antes de se fazer um cast, evitando erros.
...
if (c1 instanceof Poupanca)
 ( (Poupanca) c ).renderJuros (0.05);
else
 System.out.println( “Objeto não é do tipo Poupanca”);
... 
Conceitos de Orientação a Objetos
Polimorfismo:
	Etimologicamente, quer dizer “várias formas”.
	É a capacidade de um objeto responder a uma mensagem de uma maneira peculiar a ele mesmo.
12
Conceitos de Orientação a Objetos
Exemplo de Polimorfismo
13
Conceitos de Orientação a Objetos
14
O polimorfismo é importante para definirmos um comportamento específico para um determinado objeto
Figura Geométrica:
calcularArea()
A = L2
A =  x R2
A = B x H
Conceitos de Orientação a Objetos
15
Atividade de Classe:
Escrevam uma classe Pessoa com um método imprimirDados();
Escrevam as classes PessoaFisica e PessoaJuridica, ambas estendendo a classe Pessoa;
Sobrescrevam o método imprimirDados em cada uma onde: em PessoaFisica imprime o CPF e em PessoaJuridica imprime o CNPJ (5 min – Entregar no final da aula)
Conceitos de Orientação a Objetos
16
Resolução:
Conceitos de Orientação a Objetos
Classes Abstratas:
Usamos classes abstratas para representar grupos que tem características comuns, mas que, em alguns detalhes específicos, agem de maneira diferente (Ex. Funcionário: Gerente, Presidente, Diretor)
Construção de uma hierarquia consistente de classes
Clareza no polimorfismo
Simplicidade no reuso de código
17
Conceitos de Orientação a Objetos
É declarada com o modificador abstract: 
 public abstract class Cliente
Não pode ser instanciada
Pode fornecer construtores para maximizar o reuso nas subclasses
18
Conceitos de Orientação a Objetos
19
Se houver um único método abstrato na Classe, esta obrigatoriamente deverá ser abstrata
Conceitos de Orientação a Objetos
Algumas observações:
Uma classe final não pode ser abstrata
Uma classe final não pode possuir métodos abstratos
Os métodos private, static e final não podem ser abstratos
Uma classe sem métodos pode ser definida como abstrata, para não ser possível instanciá-la
20
Conceitos de Orientação a Objetos
Classes Abstratas versus Classes Concretas
As Classes Abstratas não possuem instâncias diretas, mas suas classes descendentes possuem
As Classes Concretas são instanciáveis
21
Conceitos de Orientação a Objetos
Exemplo de Classe Abstrata:
Só tem sentido ter uma classe abstrata quando pelo menos tem um método abstrato!
22
Conceitos de Orientação a Objetos
A classe concreta que estender a abstrata, será obrigada a implementar todos os métodos abstratos
23
Conceitos de Orientação a Objetos
24
A pergunta que não quer calar:
Por que criar uma classe abstrata se você não pode criar objetos dela?
Conceitos de Orientação a Objetos
25
Para entendermos melhor, vamos imaginar o seguinte exemplo
Temos uma classe Carro que tenha atributos e métodos comuns a todos os tipos de carros:
preço;
modelo;
ano;
acelerarRapidamente();
Conceitos de Orientação a Objetos
26
Mas você não quer que alguém de fato crie um objeto Carro, pois algumas perguntas iriam surgir:
Qual a cor do carro?
Quantos assentos?
Qual a potência do motor?
Direção hidráulica ou não?
Conceitos de Orientação a Objetos
27
O precisamos na verdade é que sejam criados objetos específicos do tipo Carro como: Fusca, Gol, Corsa, Celta etc.
Todos esses objetos são concretos, portanto, instanciáveis
Cria-se então a classe Carro como abstract, ficando os demais tipos como extensões desta
Conceitos de Orientação a Objetos
28
Classe genérica Carro (abstrata): não pode ser instanciada
Conceitos de Orientação a Objetos
29
Classe concreta Celta: pode ser instanciada
Conceitos de Orientação a Objetos
30
Classe concreta Corsa: pode ser instanciada
Programação Fundamental com Java
31
Interfaces
Uma interface é como uma classe 100% abstrata
O objetivo do uso de uma interface é deixar seu código mais flexível e possibilitar a mudança de implementação sem maiores traumas
Quando se cria uma interface, define-se um contrato, sem mencionar nada sobre como a classe que a implementar o fará
Programação Fundamental com Java
32
Por exemplo, se uma interface Bounceable (Saltitante) for definida, qualquer classe que quiser ser tratada como “algo saltitante” poderá implementá-la
Programação Fundamental com Java
33
Programação Fundamental com Java
34
Interfaces são úteis para permitir que classes radicalmente diferentes possuam características em comum
Por exemplo, imaginemos as classes Ball (Bola) e Tire (Pneu). 
Queremos que estas classes tenham um mesmo comportamento, mas elas não têm nada em comum
Programação Fundamental com Java
35
Ball estende Toy (brinquedo), enquanto Tire só estende java.lang.Object
Podemos relacionar essas classes através da interface Bounceable
Desta forma estaremos dizendo que as duas classes podem ser tratadas como “coisas saltitantes”
Programação Fundamental com Java
36
Ao implementar uma interface, a classe concreta é obrigada a implementar todos os seus métodos
Programação Fundamental com Java
37
Programação Fundamental com Java
38
Programação Fundamental com Java
39
Pergunta:
O que ocorreu entre as duas classes após a implementação da interface?
R.: Ambas as classes Ball e Tire agora têm comportamento (ações) em comum por implementarem a interface Bounceable
Programação Fundamental com Java
40
Algumas regras:
Uma interface não pode implementar outra interface
Uma interface não pode estender nada que não seja outra interface
Por exemplo, imaginemos outra interface Rollable (Rolável)
A interface Bounceable pode perfeitamente extender Rollable
Programação Fundamental com Java
41
Porque a interface Bounceable não precisou implementar o método da interface Rollable?
Programação Fundamental com Java
42
Porque somente uma classe concreta tem obrigação de implementar métodos de interfaces
Programação Fundamental com Java
43
Programação Fundamental com Java
44
Programação Fundamental com Java
45
Atividade de Classe:
Escrevam uma interface chamada Autenticavel com um método autentica que possui um parâmetro int senha retorna um valor boolean;
Escrevam uma classe Gerente com um atributo privado int senha e implementa a interface Autenticavel; sobrescrevendo o método autentica testa se o parâmetro da senha é diferente do atributo da classe, neste caso o método retorna false. Caso contrário, ou seja, se forem iguais retorna true. (5 min – Entregar ao final da aula)
Programação Fundamental
com Java
46
Resolução da Atividade:
Programação Fundamental com Java
47
Resolução da Atividade:
 
Programação Fundamental com Java
PARTE 1
Variáveis:
Em Java existem dois tipos de variáveis:
Primitivos
Variáveis de Referência
Toda variável tem um tipo que não pode ser mudado uma vez declarado:
tipoDaVariavel nomeDaVariavel;
Programação Fundamental com Java
49
Tipos Primitivos:
Representam dados mais simples ou escalares
Em Java, tais dados independem da plataforma em que o programa executa
Programação Fundamental com Java
50
Tipos Primitivos:
Programação Fundamental com Java
51
Programação Fundamental com Java
Um tipo com tamanho menor é convertido automaticamente para um tipo maior na atribuição
int a = 5; (32 bits)
long b = 10; (64 bits)
b = a; // Conversão automática!
52
Programação Fundamental com Java
Ao se tentar atribuir um tipo de tamanho maior para outro de tamanho menor, é necessário fazer uma conversão explícita (Cast)
int a = 5; (32 bits)
long b = 10; (64 bits)
a = (int) b; //Cast Obrigatório!
53
Programação Fundamental com Java
Variáveis de Referência:
	São usadas para se referir (ou acessar) um objeto.
	É declarada como sendo de um tipo específico, e esse tipo não pode nunca ser modificado.
54
Programação Fundamental com Java
Exemplos:
	Declarando e Inicializando um tipo primitivo:
	int idade;
	int idade = 20;
	
	Declarando e instanciando uma variável de Referência:
	Pessoa refPessoa = new Pessoa( );
55
Programação Fundamental com Java
Operadores
Aritméticos
Concatenação
Comparação
Lógicos
Unários
Ternários
Atribuição simples e composta
56
Programação Fundamental com Java
Operadores aritméticos
+ - / % *
O operador / também utilizado para calcular divisões inteiras
O operador % calcula o resto de uma divisão inteira
57
Programação Fundamental com Java
Operador de concatenação
+ (aplicado a Strings)
 
 String nomeCompleto = nome + sobrenome;
 mensagem = “Este é o cliente número ” + x;
 System.out.oprintln (“Total: ” + total);
58
Programação Fundamental com Java
Operadores de comparação, Lógicos
Operadores de comparação
==, < , >, >=, <=, !=
Operadores booleanos
Short-circuit
&& (e lógico)
|| (ou lógico)
59
Programação Fundamental com Java
Operadores unários
++, --
y = ++x ; y = --x;
Y = x++ ; y = x--;
60
Programação Fundamental com Java
Operadores ternários
Ternários  ()?  : 
boolean comTaxa = false;
final double TAXA = 0.10;
double valor = 400;
double resultado = 0.0;
resultado = ( comTaxa ) ? valor * TAXA : x;
System.out.println
 (“O valor final eh: ” + resultado);
61
Programação Fundamental com Java
Atribuição simples e composta
= 
+=, -=, *=, /= 
x = 0;
a = b = c = -1
x += 1 (igual  x = x + 1)
Y -=k (igual  y = y –k)
62
Programação Fundamental com Java
63
Atividade de Classe:
Escrevam uma classe Aluno com os atributos double: nota1, nota2, nota3, nota4, media; 
Escrevam um método calcularMedia que calcula a média e retorna a String “APROVADO” se a média ser igual ou superior a 7 ou “REPROVADO” se a média foi inferior a 7;
Utilizem um operador ternário para realizar o teste da média. (5 min – Entregar no final da aula)
Programação Fundamental com Java
64
Resolução da Atividade:
Programação Fundamental com Java
Estruturas de Decisão:
Estrutura responsável por tomar um decisão de acordo com parâmetros especificados
	
	Java utiliza dois tipos de estrutura de decisão:
	if/else
	switch
65
Programação Fundamental com Java
	Estrutura if/else
	Formato básico:	
	 if( expressao_booleana ) {
<bloco de comandos>
}[ else {
<bloco de comandos>
}]
66
Programação III
	Exemplo if/else:	
67
Programação III
	Só pode ser testada uma expressão booleana!!	
68
Programação III
	Estrutura switch:
	Formato básico: 
	 switch (key)
{
case value :
 <bloco de comandos>
break;
default :
 <bloco de comandos>
break;
}
69
Programação III
	Exemplo switch:
	
70
Programação III
Estruturas de Controle: 
Estruturas que permitem a repetição de um bloco de código de acordo com determinada condição
	Java utiliza três estruturas de controle:
	while
	do/while
 for
	
71
Programação III
	Estrutura while: Usada quando não se sabe quantas vezes a instrução se repetirá
	Sintaxe:
 	 while (expressao_booleana)
{
<bloco de comandos>
}
	
	
72
Programação III
	Exemplo while:
	
 	
	
	
73
Programação III
	Estrutura do/while: Semelhante ao while, exceto pelo fato de que a expressão dentro do loop será executada pelo menos uma vez
	Sintaxe:
 	do
{
<bloco de comandos>
} while (expressao_booleana);
	
	
74
Programação III
	Exemplo do/while:
	
 
	
	
75
Programação III
	Estrutura for: Usando quando se sabe antecipadamente o número de iterações
 	Sintaxe:
	
	
	
 
	
	
76
Programação III
	Exemplo for: 	
	
	
 
	
	
77
Programação III
Uso das instruções break e continue no loop for:
Break: instrução que determina o encerramento da execução do loop atual e inicie o processamento posterior ao for
Continue: instrução que fará com que somente a iteração atual seja encerrada e que a próxima continue sendo executada
78
Programação III
Exemplo break:
79
Programação III
Exemplo continue:
80
Programação III
For aprimorado:
A partir da versão 5 de Java, incluiu-se um for especializado que simplifica a tarefa de se fazer um loop através de arrays ou um conjunto.
Ao invés de três componentes, o for aprimorado tem apenas dois.
81
Programação III
Exemplo for aprimorado:
82
 
Programação Fundamental com Java
PARTE 2
Programação Fundamental com Java
Arrays:
Coleção ordenada de qualquer tipo permitido em Java:
tipos primitivos
referências de objetos
outros arrays
Como também são objetos, também extendem a classe Object
São sempre homogêneos, ou seja, com exceção de classes Polimórficas, todos os elementos do array são obrigatoriamente do mesmo tipo
84
Programação Fundamental com Java
Utilização de Arrays:
Para se utilizar arrays deve-se seguir 3 passos:
Declaração
Construção
Inicialização
85
Programação Fundamental com Java
Declaração de Arrays:
A declaração de um array diz ao compilador o nome do array e o tipo de elemento que será armazenado
int [] intArray;
Object [] objArray;
String [][] stringMatrix;
Nenhuma memória é alocada no momento da declaração do array
Não se pode estabelecer o tamanho do array no momento de sua declaração
86
Programação Fundamental com Java
Construção de Arrays:
Sintaxe:
87
Programação Fundamental com Java
Construção de Arrays:
Quando o array é construído, seus elementos são automaticamente inicializados para os valores padrão
Uma vez definido o tamanho do array, este não pode mais ser alterado
Quanto temos um array de referências para objetos, somente a memória ocupada pela referência em si é alocada. Nenhum objeto é criado neste momento.
88
Programação Fundamental com Java
Inicialização de Arrays:
Sintaxe:
int size = 100;
int [][] matriz = new int[size][size];
for( int i = 0; i < size; i++ ) {
for( int j = 0. j < size; j++ ) {
matriz[i][j] = (10 * i) + j;
}
}
O menor índice do array é sempre 0
O maior índice do array é obtido através de array.length - 1
89
Programação Fundamental com Java
Inicialização de Arrays:
90
Programação Fundamental com Java
91
Atividade de Classe:
Escrevam uma classe Pessoa com um atributo nome e um construtor para esta classe com o atributo nome como parâmetro;
Criem as classes Aluno e Professor, ambas estendendo a classe Pessoa;
Escrevam uma classe TestePessoa com um método main que declara um array de Pessoa o qual deve ser inicializado na mesma linha de declaração com um aluno de nome “Carlos” e um professor de nome “Fernando”. (5 Min para a atividade – entregar ao final da aula)
Programação Fundamental com Java
92
Resolução:
Programação Fundamental com Java
93
Resolução:
Programação Fundamental com Java
94
Resolução:
Programação Fundamental com Java
Sobrecarga e Sobrescrição de Métodos:
Sobrescrição (Override):
	Ocorre quando uma subclasse tem um método com mesma assinatura
da superclasse
	Resolvido dinamicamente em tempo de execução
OBS.: Sobrescrever significa “Escrever por cima”
95
Programação Fundamental com Java
Exemplo de Override:
96
Programação Fundamental com Java
Sobrescarga (Overloading):
	Ocorre quando se usa o mesmo nome para métodos diferentes
	Compilador escolhe o método comparando os tipos de argumentos
97
Programação Fundamental com Java
Exemplo de Overloading:
98
Programação Fundamental com Java
Herança Múltipla:
	Java não permite a herança múltipla, ou seja, uma subclasse estender de mais de uma superclasse
99
Programação Fundamental com Java
Entretanto, existe um artifício...
	Uma classe pode implementar várias interfaces
100
Programação Fundamental com Java
Exceções:
Mecanismo usado pelo Java para tratamento de erros, situações indesejadas ou de restrição.
Para termos um sistema robusto precisamos...
...ter como se recuperar de falhas
...ter mensagens adequadas de erro
...ter validação de dados
...garantir que situações indesejadas ocorram
...garantir a consistência das operações
101
Programação Fundamental com Java
Exceções:
Exceções são objetos que encapsulam informações relevantes sobre o erro ocorrido.
Fases do trabalho com as exceções:
declaração (class...) 
lançamento (throw... )
tratamento (try... catch... finally)
102
Programação Fundamental com Java
Exceções:
São subclasses de... 
 java.lang.Exception
Razão para definir uma classe de exceção:
Tratar e apresentar informações extras sobre ocorrido
Viabilizar a captura e tratamento de vários tipos de erros
103
Programação Fundamental com Java
Definindo uma Classe de Exceção:
104
Programação Fundamental com Java
Declaro que posso lançar:
Exceções são declaradas na assinatura dos métodos usando o comando throws
Exceções são lançadas no corpo dos métodos usando o comando throw
public void metodoX (...)
 throws problemaUmException, 
 problemaDoisException {
 [...]
 throw new problemaDoisException (...);
}
105
Programação Fundamental com Java
Exemplo de lançamento:
106
Programação Fundamental com Java
Captura e tratamento:
Exceções são tratadas pelo bloco 
 try-catch
try{
 [código que pode ocorrer erro...]
}catch (Exc1 e1){
 [manipular informações e
 apresentar mensagem adequada...]
}finally{
 [sempre será executado]
}
107
Programação Fundamental com Java
Captura e tratamento:
108
109
Atividade Extraclasse:
Escrevam uma classe abstrata Funcionário com um atributo protected salario; um construtor que recebe o salario e um método getBonificacao() que retorna um valor double referente ao atributo salario * 1.2;
Escrevam uma classe Gerente que estende Funcionario, sobrescreve o método getBonificacao() alterando seu retorno para: salario * 1.4 + 1000;
Escrevam uma classe TesteFuncionario com o método main que instancia um Gerente atribuindo a uma variável do tipo Funcionario; em seguida faz uma chamada ao método getBonificacao() imprimindo seu resultado.
Enviem para meu e-mail ATÉ A PRÓXIMA AULA: prof.robson.campelo@gmail.com
Dúvidas?
110

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais