Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
} //fim do metodo
} // fim da classe
Primeiros Exemplos cap. 2
public class BemVindo2
{
}
Primeiros Exemplos cap. 2
}
Primeiros Exemplos cap. 2
Seqüência Descrição
de escape
\n Nova linha. Posiciona o cursor de tela no início da nova linha.
\t Tabulação horizontal. Move o cursor de tela para a próxima
parada de tabulação.
\r Retorno de carro. Posiciona o cursor da tela no início da linha
atual – não avança para a próxima linha.
\\ Barras invertidas. Utilizadas para imprimir um caractere de
barra invertida
\” Aspas duplas. Utilizado para imprimir um caractere de aspas
duplas. Por exemplo:
System.out.println(“ \”em aspas\” ”)
“em aspas”
Primeiros Exemplos cap. 2
}
Primeiros Exemplos cap. 2
• Printf – exibe dados formatados (o “ f ”
significa formatado)
Ex. %s, %d, %.2f
if ( num1 == num2 )
System.out.printf( "%d == %d\n", num1, num2 );
if ( num1 != num2 )
System.out.printf( "%d != %d\n", num1, num2 );
if ( num1 < num2 )
System.out.printf( "%d < %d\n", num1, num2 );
if ( num1 > num2 )
System.out.printf( "%d > %d\n", num1, num2 );
if ( num1 <= num2 )
System.out.printf( "%d <= %d\n", num1, num2 );
if ( num1 >= num2 )
System.out.printf( "%d >= %d\n", num1, num2 );
} }//fim do main e depois fim da classe
Primeiros Exemplos cap. 2
Padrão Operador de Exemplo de Significado da
Algébrico Igualdade ou Condição em Condição em Java
operador de relacional Java
igualdade ou em Java
relacional
Operadores de Igualdade
= == X == Y X é igual a Y
≠ != X != Y X é diferente de Y
Operadores Relacionais
> > X>Y X é maior que Y
< < X<Y X é menor que Y
≥ >= X >= Y X é maior ou igual que Y
≤ <= X <= Y X é maior ou igual que Y
Instruções de controle – parte I cap. 4
//----------------------------------------------------------------------------------
if (nota >= 90)
System.out.println(“A”);
else if (nota >= 80)
System.out.println(“B”);
else if (nota >= 70)
System.out.println(“C”);
else if (nota >= 60)
System.out.println(“D”);
else System.out.println(“F”);
//----------------------------------------------------------------------------------
If (x>5)
if (y>5)
System.out.println(“x e y é maior que 5”);
else (“quando vai executar esta instrução?”)
//----------------------------------------------------------------------------------
if (nota >= 60)
System.out.println(“Aprovado”);
else {
System.out.println(“Reprovado”);
System.out.println(“Vai ter que repetir a disciplina”);
}
//----------------------------------------------------------------------------------
Instruções de controle – parte I cap. 4
//----------------------------------------------------------------------------------
int contador = 0;
While (contador < 10){
System.out.printf(“O valor é: %d”,contador);
contador = contador + 1; // ++contador; ou contador += 1;
}
//----------------------------------------------------------------------------------
booblean chave = true;
While (chave)
calcular_Soma(); //chama uma função;
//----------------------------------------------------------------------------------
int estudantes, aprovado, reprovavdo;
estudantes = 0;
while (estudantes < 10){
++estudantes;
}
//----------------------------------------------------------------------------------
Instruções de controle – parte I cap. 4
Operador de Expressão de Explicação Atribuições
atribuição exemplo
Suponha: int c = 3, d = 5, e = 4, f = 6, g = 12;
+= c += 7 c=c+7 10 à variável c
-= d -= 4 d=d–4 1 à variável d
*= e *= 5 e=e*5 20 à variável e
/= f /= 3 f=f/3 2 à variável f
%= g %= 9 g=g%9 3 à variável g
Instruções de controle – parte I cap. 4
public class Incremento{
int c;
c = 5;
System.out.println(c);
System.out.println(c++);
System.out.println(c);
System.out.println();
c = 5;
System.out.println(c);
System.out.println(++c);
System.out.println(c);
}
}
Instruções de controle – parte I cap. 4
Operador Chamado Expressão Explicação
de
exemplo
++ pré-incremento ++a Incrementa “a” em 1 e então utiliza
o novo valor de “a” na expressão
em que “a” reside
++ pós-incremento a++ Utiliza o valor atual de “a” na
expressão em que “a” reside,
então incrementa “a” por 1
-- pré-incremento --a Decrementa “a” em 1 e então
utiliza o novo valor de “a” na
expressão em que “a” reside
System.out.println();
}
}
Instruções de controle – parte II cap. 5
Instruções de controle – parte II cap. 5
Exemplos:
X = 2; y= 10;
for (int j = x; j <= 4 * x * y; j += y / x ) equivale a for (int j = 2; j <= 80; j += 5)
do
{
System.out.printf( "%d ", contador );
++contador;
} while ( contador <= 10 ); // fim do commando do...while
case 2:
++bCont;
break;
case 3:
case 4:
case 5:
++cCont;
break;
default:
System.out.println("Opção Inválida");
break;
} // fim do switch
Instruções de controle – parte II cap. 5
public class UsandoBreak
{
public static void main( String args[] )
{
int cont;
• OU (OR) ||
• E (AND) &&
• NÃO (NOT) !
• OU-EXCLUSIVO (XOR) ^
Exercitando...
Crie um algoritmo para simular um “login” de banco. O usuário deve entrar com
3 letras (na seqüência correta) e caso estas letras estejam corretas, ele
deve informar uma senha com 4 letras.
Exemplo: letras: A – C – E
numero: 5674
Exercício 01
1. Leia um número e exiba seu sucessor.
2. Calcular a média final, dadas as notas das 3 provas e produzir uma saída com a
média e a situação do aluno de acordo com o seguinte critério: média >= 7,
aprovado; 5 < média < 7, recuperação; média < 5, reprovado.
3. Ler dois números inteiros, x e y, e imprimir o quociente e o resto da divisão inteira
entre eles.
4. Ler dois valores reais do teclado, calcular e imprimir na tela:
a) A soma destes valores b) O produto deles c) O quociente entre eles
5. Para ler 3 números reais do teclado e verificar se o primeiro é maior que a soma
dos outros dois.
6. Ler um nome do teclado e ver se é igual ao seu nome. Imprimir conforme o caso:
“NOME CORRETO” ou “NOME INCORRETO”.
7. Leia a velocidade máxima permitida em uma avenida e a velocidade com que o
motorista estava dirigindo nela e calcule a multa que uma pessoa vai receber,
sabendo que são pagos: a) 50 reais se o motorista estiver ultrapassar em até
10km/h a velocidade permitida (ex.: velocidade máxima: 50km/h; motorista a
60km/h ou a 56km/h); b) 100 reais, se o motorista ultrapassar de 11 a 30 km/h a
velocidade permitida. c) 200 reais, se estiver acima de 31km/h da velocidade
permitida.
Exercício 02
1. Faça um algoritmo que escreva na tela os números de 0 a 50. usando um for; de
51 a 100 usando um while e, de 101 até 150 usando um repeat.
2. Faça um algoritmo que escreva na tela os números pares de 0 a 30.
3. Faça um programa que lê “X” números e conta quantos são negativos .
Criação de Métodos cap. 5
O que é?
Métodos são trechos de código que permitem modularizar um sistemas, isto é,
são pequenos blocos que, juntos, compõem um sistema maior. Os métodos
recebem um determinado nome e podem ser chamados várias vezes
durante a execução de uma classe, ou seja, é uma sub-rotina que pode ser
invocada sempre que necessário.
Motivos?
Redução do tamanho total de código de um sistema, melhoria da
modularização do sistema ( cada trecho de código realiza uma tarefa) e a
facilitação e agilização do processo de manutenção.
Obs.:
Um bom método deve ser auto-suficiente, ou seja possui internamente todas
as definições (variáveis) necessárias para seu funcionamento.
Exemplo:
1) O programador precisa de validar a data informada pelo usuário em
diversas partes do programa.
2) O programador precisa de validar o CPF informado pelo usuário em
diversas partes do programa.
Hipótese: o dono da empresa pediu para mudar a mensagem de validação de data ou, caso o governo mude a forma
de validar um CPF, qual o trabalho para o desenvolvedor alterar o sistema com e sem métodos?
Criação de Métodos (cont.) cap. 5
Estrutura de um método em Java:
qualificador tipo-do-retorno nome-do-metodo ([Lista de argumentos])
{
códigos do corpo
}
qualificador – define a visibilidade do método (maiores detalhes nas próximas
aulas.)
Exemplo de métodos:
System.out.Println(“valor do parámetro”); // método chamado Println que tem
como argumento um valor do tipo String.
Criação de Métodos (cont.) cap. 5
Exemplo de métodos sem retorno:
c) Os métodos não devem conter objetos Scanner e/ou System. Ou seja, a entrada e
a exibição de dados (mensagens) deverão ser feitas fora dos métodos.
Introdução a Classes e Objetos cap. 3
Desde criança representamos nosso
conhecimento através de classificações e
abstrações. Ex: Carro, Pessoas.
Sendo que cada objeto pertence a um
determinado grupo possuindo as mesmas
características e comportamentos. Quando
falamos de carro, todos conseguem abstrair
o que é um carro.
Existem vários tipos de carros com
características diferentes, mas quando
pegamos um carro especifico estamos
instanciando um objeto da mesma classe.
Introdução a Classes e Objetos cap. 3
Quando estamos instanciando um objeto de
uma classe, estamos criando um novo item
do conjunto representado por esta classe.
Apesar de um objeto possuir as mesmas
propriedades que os objetos da classe, este
objeto possui valores diferentes para um
objeto. Ex: cor de um carro, número de
portas do carro.
Introdução a Classes e Objetos cap. 3
Vantagens e objetivos da OO:
• Natural
• Confiável
• Reutilizável
• Manutenível
• Extensível
• Oportuna
Introdução a Classes e Objetos cap. 3
Natural
A POO produz software natural. Os programas naturais são mais inteligíveis.
Em vez de programar em termos de regiões de memória, você pode
programar usando a terminologia de seu problema em particular. Você não
precisa se aprofundar nos detalhes do computador enquanto projeta seu
programa. Em vez de ajustar seus programas para a linguagem do mundo
dos computadores, a OO o libera para que expresse seu programa nos
termos de seu problema.
A programação orientada a objetos permite que você modele um problema em
um nível funcional e não em nível de implementação. Você não precisa
saber como um software funciona, para usá-lo: você simplesmente se
concentra no que ele faz.
Introdução a Classes e Objetos cap. 3
Confiável
Para criar software útil, você precisa criar software que seja tão confiável
quanto outros produtos, como geladeiras e televisões. Quanto foi a última
vez que seu microondas quebrou?
Programas orientados a objetos, bem projetados e cuidadosamente escritos
são confiáveis. A natureza modular dos objetos permite que você faça
alterações em uma parte de seu programa, sem afetar outras partes. Os
objetos isolam o conhecimento e a responsabilidade de onde pertencem.
Uma maneira de aumentar a confiabilidade é através de testes completos. A
OO aprimora os testes, permitindo que você isole conhecimento e
responsabilidades em um único lugar. Tal isolamento permite que você
teste e valide cada componente independentemente. Uma vez que tenha
validado um componente, você pode reutilizá-lo com confiança.
Introdução a Classes e Objetos cap. 3
Reutilizável
Um construtor inventa um novo tipo de tijolo cada vez que constrói uma casa?
Então, por que os programadores continuam “reinventando a roda”? Uma
vez que o problema esteja resolvido, você deve reutilizar a solução.
Você pode reutilizar prontamente classes orientadas a objetos bem feitas.
Assim como os módulos, você pode reutilizar objetos em muitos programas
diferentes. Ao contrário dos módulos, a POO introduz a herança para
permitir que você estenda objetos existentes e o polimorfismo, para que
você possa escrever código genérico.
A OO não garante código genérico. Criar classes bem feitas é uma tarefa difícil
que exige concentração e atenção à abstração. Os programadores nem
sempre acham isso fácil.
Através da POO, você pode modelar idéias gerais e usar essas idéias gerais
para resolver problemas específicos. Embora você vá construir objetos
para resolver um problema específico, freqüentemente construirá esses
objetos específicos usando partes genéricas.
Introdução a Classes e Objetos cap. 3
Manutenível
O ciclo de vida de um programa não termina quando você o distribui. Em vez
disso, você deve manter sua base de código. Na verdade, entre 60% e
80% do tempo gasto trabalhando em um programa é para manutenção. O
desenvolvimento representa 20% da equação!
Um código orientando a objetos bem projetado é manutenível. Para corrigir um
erro, você simplesmente corrige o problema em um lugar. Como uma
mudança na implementação é transparente, todos os outros objetos se
beneficiarão automaticamente do aprimoramento. A linguagem natural do
código deve permitir que outros desenvolvedores também o entendam.
Introdução a Classes e Objetos cap. 3
Extensível
Assim como você deve manter um sistema. Seus usuários exigem o acréscimo
de nova funcionalidade em seu sistema. Quando você construir uma
biblioteca de objetos, também desejará estender a funcionalidade de seus
próprios objetos.
A POO trata dessas realidades. O Software não é estático. Ele deve crescer e
mudar com o passar do tempo, para permanecer útil. A POO apresenta ao
programador vários recursos para estender código. Esses recursos incluem
herança, polimorfismo, sobreposição, delegação e uma variedade de
padrões de projeto.
Introdução a Classes e Objetos cap. 3
Oportuna
O ciclo de vida do projeto de software moderno é freqüentemente medido em
semanas. A POO ajuda nesses rápidos ciclos de desenvolvimento. A POO
diminui o tempo do ciclo de desenvolvimento, fornecendo software
confiável, reutilizável e facilmente extensível
O software natural simplifica o projeto de sistemas complexos. Embora você
não possa ignorar o projeto cuidadoso, o software natural pode otimizar os
ciclos de projeto, pois você pode se concentrar no problema que está
tentando resolver.
Quando você divide um programa em vários objetos, o desenvolvimento de
cada parte pode ocorrer em paralelo. Vários desenvolvedores podem
trabalhar nas classes independentemente. Tal desenvolvimento em
paralelo leva a tempos de desenvolvimento menores.
Introdução a Classes e Objetos cap. 3
Geralmente uma determinada classe possui
não apenas suas propriedades
(características). Ela possui obrigações
(afazeres), que são conhecidos como
métodos ou mensagens. Carro Nome da classe
} // fim da classe
Exemplo 01 cont.
import java.util.Scanner;
//objetivo: passar valores para os metodos por parametro
public class CadernoNotasPrincipal01 {
Interface
Interface
?
Interface
Mensagem Mensagem
Interface
Encapsulamento – Exemplo de
interface e implementação cap. 3
A interface pública é:
public void debug( String mensagem)
public void info( String mensagem)
public void aviso( String mensagem)
public void erro( String mensagem)
public void erroGrave( String mensagem)
Atenção:
A interface diz o que deve ser feito, mas não
diz como. O responsável por isso é a
implementação (Ex.: O log poderia ser salvo
em um arquivo texto ou enviado por email).
}
Exercício
Crie a estrutura abaixo. Logo em seguida, em uma classe com o método “main”, crie 2
objetos do tipo Piloto e 2 objetos do tipo CoPiloto. Preencha todas as informações
para estes objetos e chame o método imprimir de cada objeto mostrando os dados no
console.
Atenção:
Na criação dos
dois objetos, crie
o primeiro com o
construtor sem
parâmetro e o
segundo com o
construtor com
parâmetros.
Uso de caixas de diálogo cap. 3
• A linguagem java tem uma grande capacidade
para desenvolvimento de aplicativos com
interface gráfica (GUIs – graphical user
interfaces).
• Nosso primeiro contato com os GUIs serão
feitos pelas caixas de diálogo para exiber a
saída e recuperar informações de entrada dos
usuários.
• A classe JOptionPane fornece caixas de
diálogos pré-empacotadas que permitem aos
programas exibir janelas para os usuários.
Uso de caixas de diálogo cap. 3
Exemplo
//Objetivo: CAIXAS DE DIÁLOGO
01
// importa a classe JOptionPane
import javax.swing.JOptionPane;
JOptionPane.showMessageDialog(null, str );
// mostra o resultado
JOptionPane.showMessageDialog(null, "A soma é " + soma);
System.exit( 0 );
} }
Exemplo 03
import javax.swing.JOptionPane;
public class Dialogo03 {
public static void main( String args[] )
{ String sNum1,sNum2;
int num1,num2,subtracao;
// mostra o resultado
JOptionPane.showMessageDialog(null, "A diferença é " + subtracao,
"Subtração",JOptionPane.WARNING_MESSAGE);
System.exit( 0 );
} }
Uso de caixas de diálogo cap. 3
Tipos de mensagens
Métodos um exame mais profundo
cap. 6
return numero*numero;
}
return numero*numero;
}
}
Exemplo 01 continuação
//a classe principal chama(executa) a classe QuadradoComOverload
public class QuadradoComOverloadPrincipal {
}
Arrays(vetor) cap. 7
Array é um grupo de variáveis que contém valores que são
todos do mesmo tipo
Para referenciarmos um elemento particular em um array,
especificamos o nome da referência para o array e o
número da posição do elemento no array.
Neste caso o array foi criado com tamanho 5 e seus valores podem ser
acessados pelos seus indices. Por exempo:
o valor 10 pode ser acessado com: n[0]
o valor 20 pode ser acessado com: n[1]
o valor 65 pode ser acessado com: n[2]
o valor 5 pode ser acessado com: n[3]
o valor 99 pode ser acessado com: n[4]
public class Array {
Exemplo 01
public static void main(String[] args) {
double soma=0;
for (int i=0; i<=2; i++){
vetorC[i] = i*0.25;
vetorD[i] = i*0.5;
soma += vetorC[i]+vetorD[i];
}
System.out.println("A soma dos elementos de vetorC + vetorD é: "+soma);
System.out.println();
//------------------------------------------------
//usa o vetor ja inicializado com os indices de zero a length
for (int i=0; i < vetorE.length; i++)
System.out.printf("vetorE %5d%8d\n",i,vetorE[i]);
} }
Exercitando......
Crie em uma classe chamada “ExercitandoArray”, esta classe terá o método main() e
deverá ter um array de tamanho 20 que suporte dados do tipo inteiro.
O usuário deverá entrar com os 20 números inteiros e o programa informará:
int i, j;
for (i=0; i<m.length; i++) {
System.out.printf("%da. linha: ", (i+1));
for (j=0; j<m[i].length; j++) {
System.out.printf("%d ", m[i][j]);
}
System.out.printf("\n");
}
Arrays(matriz) cap. 7
Exemplos de aplicações Java utilizando vetores bidimensionais ou matrizes:
....
Scanner ler = new Scanner(System.in);
int i, j, m[][] = new int[2][4];
System.out.printf("\n");
for (i=0; i<2; i++) {
System.out.printf("%da. linha: ", (i+1));
for (j=0; j<4; j++) {
System.out.printf("%d ", m[i][j]);
}
System.out.printf("\n"); }
....
Classe e Objetos um exame mais
profundo cap. 8
Depois de introduzirmos muitos conceitos básicos e terminologias
relacionadas a POO, vamos nos concentrar em mais alguns
conceitos como: Composição, Membros de classe static, variáveis
de instâncias final e criação de pacotes.
Referenciando membros do objeto atual com a
referência this (exitem três usos)
Cada objeto pode acessar uma referência a si próprio com a palavra-
chave this. Usos: 1) Você pode usar this para diferenciar parâmetro
e variáveis com o mesmo nome em um método; 2) Chamar
explicitamente uma variável ou método da classe, mas isto é feito
implicitamente; 3) e por ultimo, usar this para chamar um construtor
quando existe sobrercarga. Veja o exemplo....
Classe e Objetos um exame mais
profundo cap. 8
A classe Date
A manipulação de data e hora é interessante, pois como a linguagem Java é
voltada à Internet e dispositivos móveis, os recursos de data e hora devem ser
suficientemente flexíveis para permitir sua manipulação em qualquer tipo de
cultura nas mais diversas regiões do globo.
Por este fato a manipulação de datas exige muitos detalhes e para cobrir todos
eles, existem onze classes destinadas à manipulação de data e hora.
Pacote Classes
java.util Date, Calendar, GregorianCalendar, TimeZone, SimpleTimeZone
java.text DateFormat, SimpleDateFormat, FormatSymbols.
java.sql Date, Time, Timestamp
A classe Date (do pacote util) representa um instante no tempo, sem levar em
consideração sua representação ou localização geográfica, com precisão de
milissegundos.
A classe DateFormat representa uma data com formato String de acordo com um
determinado fuso horário e calendário.
A classe SimpleDateFormat permite a especificação de diferentes formatos para a
data
A classe Calendar representa um instante no tempo de acordo com um sistema
particular de calendário e fuso horário.
A classe Date Quando um Date é
criado, o número de
milissegundos
desde 1970 é
armazenado no
objeto e pode ser
retornado pelo
método getTime().
A execução do código acima vai gerar o resultado
Console:
A classe DateFormat
Outro exemplo:
A classe DateFormat
Método Função Retorno
Campo Descrição
No primeiro método deve ser retornado uma String com a informação das
parcelas de acordo com a data da compra de um item, seu valor e em quantas
prestações o produto vai ser pago. O segundo método retorna true ou false de
acordo com a conversão da String em data. O terceiro método imprime uma data
com dia, mês e ano em linhas diferentes. O quarto método recebe uma data de
nascimento e retorna quantos dias a pessoa viveu até a data presente. O quinto
método retorna a data atual em um formato especial (veja próximo slide). O
ultimo método mostra uma promoção em um supermercado de acordo com o dia
da semana.
Exercício
Crie uma classe principal que usa a classe “ExercicioData” como mostra a figura
abaixo:
Atenção:
1) Os dados em verde
devem ser informados
pelo usuário.
2) Cada exercício
Chama um método
da classe
“ExercicioData”
Classe e Objetos um exame mais
profundo cap. 8
Composição
Um classe pode ter referências a objetos de outras classes como membros
(propriedades). E é conhecido como um relacionamento tem um
Exemplo:
public class Carro{
private Porta portas;
private Volante volante;
\\continua........
}
Classe e Objetos um exame mais
profundo cap. 8
Composição
Classe e Objetos um exame mais
profundo cap. 8
Composição x Agregação
Classe e Objetos um exame mais
profundo cap. 8
Composição x Agregação
Porém, os comportamentos semânticos das associações devem estar
presentes quanto a existência. Para composição, por exemplo,
poderíamos forçar que toda vez que uma nota seja criada, uma nova
lista de ItemNotaFiscal deve ser criado. E toda vez que a nota fiscal
for apagada, os itens devem ser destruídos.
Classe e Objetos um exame mais
profundo cap. 8
Membros e variáveis Static
Cada objeto tem sua própria cópia de todas variáveis
de instância da classe. Em certos casos, apenas
uma cópia de uma variável particular deve ser
compartilhada por todos os objetos de uma classe.
Um campo static - chamado variável de classe é
utilizado nestes casos. Uma variável static
representa informações de escopo de classe – todos
os objetos da classe compartilham os mesmos
dados.
Generalização
Herança (encapsulamento) cap. 9 cont.
Protected
Os membros public de uma classe são acessíveis onde quer que o programa
tenha uma referência a um objeto dessa classe ou uma de suas
subclasses. Os membros private de uma classe só são acessíveis por
dentro da própria classe. O modificador de acesso protected oferece um
nível intermediário de acesso entre public e private. Os membros
protected de uma superclasse podem ser acessados por membros dessa
superclasse, por membros de suas subclasses e por membros de outras
classes no mesmo pacote.
É importante ressaltar que membros public da superclasse tornam-se
membros public da subclasse, e membros protected da superclasse
tornam-se membros protected da subclasse. Já os menbros private de
uma superclasse não pode ser acessado pelas subclasses
1. Reescrever todo o código duas vezes. Entretanto terá que manter duas bases de código
separadas.
3. Usar herança
Herança (implementando) cap. 9 cont.
Implementando as duas classes usando Herança temos:
Obs: Em java conseguimos implementar Herança através da palavra reservada
extends
Herança (quando usar) cap. 9 cont.
“É um” versus “tem um”: aprendendo quando usar herança
Então, como você sabe quando deve usar herança? Felizmente, existe uma regra
geral a ser seguida, para evitar uma herança incorreta.
Quando você está considerando a herança para reutilização ou por qualquer outro
motivo, precisa primeiro perguntar-se a classe que está herdando é do mesmo
tipo que a classe que está sendo herdada. O fato de pensar em termos de tipo
enquanto se herda é freqüentemente referido como teste “é um”.
Ex: Aluno “é um” MembroDaComunidade ?
Exemplo...
Herança (mecânica da herança) cap. 9 cont.
Novos métodos
Método sobrescrito
Uso recursivo
Herança (tipos de herença) cap. 9 cont.
Ao todo existem três tipos de herança:
2. Para a diferença.
Você viu a herança para diferença no exemplo de “PontosDimensionais” e
“PontosTridimencionais”. A programação pela diferença permite que você
programe especificando apenas como uma classe filha difere de sua classe
progenitora.
A programação por diferença é um conceito poderoso. Ela permite que você
adicione apenas o código necessário o suficiente para descrever a diferença
entre a classe progenitora e a classe filha. Isso permite que você programa por
incrementos.
Ponto
PontoBidimencional
PontoTridimencional
PontoQuatroDimensões
Herança (tipos de herença) cap. 9 cont.
Ao todo existem três tipos de herança:
Lembre-se de que, quando uma filha herda de sua progenitora, você diz que a filha
‘é uma’ progenitora. Assim, como um objeto “PontoTriDimencional” é um
“PontoBiDimencional”, você pode passar um objeto “PontoTriDimencional” para
o construtor.
Uma classe abstrata é muito parecida com qualquer outra definição de classe. A
definição da classe pode definir comportamentos e atributos, exatamente como
uma classe normal. Entretanto, você não pode instanciar diretamente uma
classe abstrata, pois uma classe abstrata pode deixar alguns métodos
indefinidos.
Pense no termo abrir. Você pode abrir uma porta, uma caixa, uma janela e uma conta no
banco. A palavra abrir pode ser aplicada a muitos objetos diferentes no mundo real.
Cada objeto interpreta ‘abrir’ de sua própria maneira. Entretanto, em cada caso, você
pode simplesmente dizer ‘abrir’. Para descrever a ação.
3) Responda as perguntas:
•Da mesma forma que uma classe abstrata, uma interface não pode ser
instanciada;
•Por outro lado, definir métodos distintos para abastecimento nas classes
Aviao e Carro introduziria uma redundância indesejável.
• Para que uma classe implemente uma interface deve-se fazer o seguinte:
-Declarar que a classe implementa (implements) a interface;
-Fornecer uma implementação para cada operação declarada na
interface.
Collections
Array
• Vantagens
•Tem seus tipos bem definidos e podem ser verificados pelo compilador;
•Conhece o seu tamanho;
•Aceita tipos primitivos facilmente;
Desvantagens
•não podemos redimensionar um array;
•é impossível buscar diretamente por um determinado elemento cujo
índice não se sabe;
•não conseguimos saber quantas posições do array já foram populadas
sem criar, para isso, métodos
•auxiliares.
Collections
• O comitê responsável pelo Java criou um conjunto de classes e interfaces
conhecido como Collections Framework
•São dinâmicas
•Aceitam tipos de dados heterogênicos
•Interfaces são utilizadas para dar mais flexibilidade
•Suporta iteradores
Collections
List
• Uma lista é uma coleção que permite elementos duplicados e mantém uma
ordenação específica entre os elementos.
Usa a interface java.util.List
A ordem em que os elementos são armazenados pode não ser a ordem na qual
eles foram inseridos no conjunto.
Collections
Set
Um conjunto é representado pela interface Set e tem como suas principais
implementações as classes HashSet, LinkedHashSet e TreeSet.
HashSet
-Implementado usando hash table
-Elementos não ordenados
-Adição e remoção são constantes O(1)
TreeSet
-Implementado usando árvores
-Garante a ordem dos elementos
-Adição e remoção tem complexidade
logarítmica
Collections
Set
O código a seguir cria um conjunto e adiciona diversos elementos, e alguns
repetidos:
A busca em um Set pode ser mais rápida do que em um objeto do tipo List, pois
diversas implementações utilizam-se de tabelas de espalhamento (hash tables),
realizando a busca para tempo linear (O(1)).
Collections
List e Set - Iterator
Collections
List e Set - Iterator
Collections
Map
Um mapa é composto por um conjunto de associações entre um objeto chave a
um objeto valor.
Execução esperada
do programa =>
Tratamento de Exceção cap. 13
Usuário informou o valor zero para o denominador
Exercício:
Melhore o
programa para
que o sistema
fique lendo os
Usuário informou uma string, ao invés, de um número
valores inteiros
até que
estejam certos
Tratamento de Exceção cap. 13
Características
Para resolver este tipo de problema o bloco Finally fica responsável por fazer
a liberação de recurso e será executado quando:
-Não ocorrer erros durante o bloco try
-Ocorrer erros durante o bloco try. Neste caso, ele será executado depois
do bloco catch
-Mesmo que exista um comando return, break ou continue.
E ele não será executado se:
-O comando System.exit, que é responsável por encerrar o programa for
executado
Tratamento de Exceção cap. 13
bloco finally
try
{
instruções
instruções de aquisição de recurso
}
Catch (UmTipoDeExcecao excecao1)
{
instruções de tratamento de erro
}
.
.
.
Catch (OutroTipoDeExcecao excecao2)
{
instruções de tratamento de erro
}
finally
{
instruções
instruções de liberação de recurso
}
Tratamento de Exceção cap. 13
throw
Obs.:
Throw – captura, lança* e relança*
uma exceção.
Saída do Console
Tratamento de Exceção cap. 13
Pilha de execução
Saída do Console
Tratamento de Exceção cap. 13
Declarando novos tipos de exceção
Os programadores podem achar útil criar suas próprias classes de
exceção que são específicas aos problemas que podem ocorrer quando outro
programador utilizar suas classes. Para isso a classe deve:
- Estender uma classe de exceção
- Geralmente contém somente dois construtores – um que não aceita
nenhum argumento e passa uma mensagem de exceção padrão para o
construtor da superclasse, e um que recebe uma mensagem de exceção
personalizada como uma string para passar para o construtor da
superclasse.
Tratamento de Exceção cap. 13
Declarando novos tipos de exceção
Java possui dois tipos de exceções:
– java.sql.DriverManager
– java.sql.Connection
– java.sql.Statement e java.sql.PreparedStatement
– java.sql.ResultSet
JDBC cap. 25
Acesso a Banco de Dados - java.sql.DriverManager
• commit() : void
– Realiza o commit da conexão.
– Ex.:
conn.commit();
JDBC cap. 25
Acesso a Banco de Dados - java.sql.Connection
• rollback() : void
– Realiza o rollback da conexão.
– Ex.:
conn.rollback();
java.sql.Statement e java.sql.PreparedStatement
• executeUpdate() : int
– Realiza a execução de um insert, update, delete ou
qualquer instrução sql que não retorne nada, por
exemplo, instruções DDL.
– Ex.:
st.executeUpdate(“delete from CONTATO where
SEXO='M'”)
JDBC cap. 25
Acesso a Banco de Dados
java.sql.Statement e java.sql.PreparedStatement
• executeQuery() : java.sql.ResultSet
– Realiza a execução de um select.
– Ex.:
ResultSet rs = st.executeQuery(“select * from
CONTATO”);
• close() : void
– Realiza o encerramento da instrução. Sempre ao abr ir
uma instrução, a mesma deverá ser encerrada.
– Ex.:
st.close();
JDBC cap. 25
Acesso a Banco de Dados - java.sql.ResultSet
• next() : boolean
– Move o cursor para a próxima posição do result set
retornando um booleano dizendo se a próxima posição é
válida ou não.
– Ex.:
rs.next();
JDBC cap. 25
Acesso a Banco de Dados - java.sql.ResultSet
• close() : void
– Realiza o encerramento do conjunto de resultados (result
set).
– Sempre ao manipular um result set, o mesmo deverá ser
encerrado.
– Ex.:
rs.close();
JDBC cap. 25
Acesso a Banco de Dados – Usando JDBC
Os Componentes estão
agrupadas em dois
grandes pacotes:
1. java.awt
(pacote do núcleo)
2. javax.swing
(pacote de extensão).
Componentes GUI cap. 11
AWT - Abstract Windowing Toolkit
•Exemplo: JOptionPane.
•As caixa de diálogo podem ser configuradas como modais
ou não-modais, valendo-se do método setModal(boolean).
•As modais não permitem que qualquer outra janela do
aplicativo seja acessada até que seja tratada a solicitação
ou intervenção da caixa de diálogo. O comportamento
oposto se observa nas não-modais.
Componentes GUI cap. 11
Conteiners – JApplet