• Nenhum resultado encontrado

Introdução a linguagem Java

N/A
N/A
Protected

Academic year: 2021

Share "Introdução a linguagem Java"

Copied!
247
0
0

Texto

(1)

Introdução a linguagem Java

Programação Orientanda a Objetos

Prof. Msc. Bruno Ferreira

(2)

Sumário

• O que é Java

• Softwares utilizados (instalação)

• O ambiente de desenvolvimento

• Processo de compilação

• Processo de compilação

• Características da linguagem

• Primeiros exemplos

• A sintaxe da linguagem

(3)

O que é java?

Java é uma linguagem de programação

introduzida em 1995 pela Sun Microsystems

Um grupo de pesquisa da Sun que tentava

produzir equipamentos portáteis viu a

necessidade de criar uma linguagem para estes

necessidade de criar uma linguagem para estes

equipamentos, logo, reuniu as principais

características das linguagens existentes

adicionando novas propriedades como a

portabilidade sem aumentar a dificuldade no

desenvolvimento (Primeiro nome Oak depois foi

renomeada para Java)

(4)

Softwares utilizados (instalação)

• O que você vai instalar?

• JVM

= apenas a virtual machine, esse download

não existe

• JRE

= Java Runtime Environment, ambiente de

• JRE

= Java Runtime Environment, ambiente de

execução Java, formado pela JVM e

• bibliotecas, tudo que você precisa para executar

uma aplicação Java.

• JDK

= Nós, desenvolvedores, faremos o

download do JDK do Java SE (Standard Edition)

ou EE(Enterprise Edition ) ou ME(Micro Edition).

(5)

O ambiente de desenvolvimento

• Bloco de notas

(6)
(7)
(8)
(9)

Processo de compilação

(cont.)

(10)

Características da linguagem

• Orientada a objetos – da suporte a todos os conceitos

do paradigma OO.

• Independente de plataforma – JVM.

• Sem ponteiros – A JVM tem um mecanismo automático

de gerência de memória não permitindo a manipulação

direta, e liberando espaço quando necessário.

direta, e liberando espaço quando necessário.

• Performance – a linguagem é compilada e interpretada

(neste processo utiliza a tecnologia JIT)

• Segurança – a JVM controla as ações da aplicação

bloqueando possíveis ações destrutivas ou proliferações

• Multi-threading

• Free

(11)

Primeiros Exemplos

• Erros comuns de programação

- Nome do arquivo deve começar com

maiúsculo

maiúsculo

- O Nome da classe deve ter o mesmo

nome do arquivo

(12)

Primeiros Exemplos

cap. 2

public class BemVindo1

{

// método main de onde a aplicação começará a ser

executada

public static void main( String args[] )

public static void main( String args[] )

{

System.out.println( "Bem vindo ao java!" );

} //fim do metodo

(13)

Primeiros Exemplos

cap. 2

public class BemVindo2

{

public static void main( String args[] )

{{

System.out.print( " Bem vindo ao " );

System.out.println( "Java!" );

}

(14)

Primeiros Exemplos

cap. 2

public class BemVindo3

{

public static void main( String args[] )

public static void main( String args[] )

{

System.out.println( "Bem Vindo\nao\nJava!" );

}

(15)

Primeiros Exemplos

cap. 2

Seqüência de escape

Descrição

\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 \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”

(16)

Primeiros Exemplos

cap. 2

public class BemVindo4

{

public static void main( String args[] )

{{

System.out.printf( "%s\n%s\n",

"Bem vindo ao", "Java!" );

}

(17)

Primeiros Exemplos

cap. 2

• Printf – exibe dados formatados (o “ f ”

significa formatado)

Ex. %s, %d, %.2f

• Já o Print e o Println não aceitam

parâmetros de formatação

(18)

Primeiros Exemplos

cap. 2

import java.util.Scanner; // importar a biblioteca para ler o teclado public class Adicao

{

// metodo main por onde a aplicação começa a ser executada public static void main( String args[] )

{

// cria uma variavel chamada entrada do tipo scanner que captura as teclas Scanner entrada = new Scanner( System.in );

int num1; // primeiro numero da adição int num1; // primeiro numero da adição int num2; // segundo numero da adição

int soma; // guarda a soma dos dois numeros

System.out.print( "Entre com o primeiro numero: " ); // mostra o prompt num1 = entrada.nextInt(); // le o primeiro numero informado pelo usuario System.out.print( "Entre com o segundo numero: " ); // prompt

num2 = entrada.nextInt(); // le o segundo numero informado pelo usuario soma = num1 + num2; // soma os dois numeros

System.out.printf( "A soma é %d\n", soma ); // mostra soma } // sim do metodo main

(19)

Primeiros Exemplos

cap. 2

Operação Java Operador Aritmético Expressão Java

Adição + F + 7

Subtração - P – C

Multiplicação * K * 3

Divisão / X / Y

(20)

Primeiros Exemplos

cap. 2

import java.util.Scanner; public class Comparacao {

public static void main( String args[] ) {

Scanner entrada = new Scanner( System.in ); int num1, num2;

System.out.print( "Entre com o primeiro numero: " ); num1 = entrada.nextInt();

System.out.print( "Entre com o segundo numero: " ); System.out.print( "Entre com o segundo numero: " ); num2 = entrada.nextInt();

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

(21)

Primeiros Exemplos

cap. 2

Padrão Algébrico operador de igualdade ou relacional Operador de Igualdade ou relacional em Java Exemplo de Condição em Java Significado da Condição em Java Operadores de Igualdade = == X == Y X é igual a Y = == 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

(22)

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

(23)

//---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){

Scanner entrada = new Scanner(System.in); nota = entrada.nextInt();

if (nota >= 60)

aprovado = aprovado + 1; //ou aprovado += 1; ou ++aprovado

else reprovado = reprovado + 1; // ou reprovado += 1; ou ++reprovado ++estudantes;

}

(24)

//---Instruções de controle – parte I

cap. 4

Operador de atribuição Expressão de exemplo Explicação Atribuições 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 *= 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

(25)

Instruções de controle – parte I

cap. 4

public class Incremento{

public static void (String[] args){ int c; c = 5; System.out.println(c); 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); } }

(26)

Instruções de controle – parte I

cap. 4

Operador Chamado Expressão de

exemplo

Explicação

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

-- pós-incremento a-- Utiliza o valor atual de “a” na expressão em que “a” reside, então decrementa “a” por 1

(27)

Instruções de controle – parte II

cap. 5

//repetição controlada por contador com a instrução de repetição while public class WhileContador

{

public static void main( String args[] ) {

int contador = 1; // declara e inicializa a variável

while ( contador <= 10 ) // condição de continuação do loop {

System.out.printf( "%d ", counter );

++contador; // incrementa a variável de contole por 1 } // fim do while

System.out.println(); // linha em branco } // fim do main

(28)

Instruções de controle – parte II

cap. 5

//repetição controlada por contador com a instrução de repetição for public class ForContador

{

public static void main( String args[] ) {

// cabeçalho da intrção for inclui inicialização // condição de continuação do loop e incremento // condição de continuação do loop e incremento for ( int contador = 1; contador <= 10; contador++ )

System.out.printf( "%d ", contador ); System.out.println();

} }

(29)
(30)

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) for (int i = 7; i <= 77; i +=7)

Varia a variável de 7 a 77 em incrementos de 7 for (int i = 100; i >= 1; i- -)

Varia a variável de controle de 100 a 1 em incrementos de 1 for (int i = 20; i>=2; i -= 2)

Varia a variável de controle de 20 a 2 em decrementos de 2 for (int i = 99; i >= 0; i -= 11)

(31)

Instruções de controle – parte II

cap. 5

//Instrução de repetição do...while public class DoWhile

{

public static void main( String args[] ) {

int contador = 1; // inicializa o contador do

do {

System.out.printf( "%d ", contador ); ++contador;

} while ( contador <= 10 ); // fim do commando do...while System.out.println(); // imprime uma linha em branco } // fim do metodo main

(32)

Instruções de controle – parte II

cap. 5

switch ( curso ) {

case 1: //o que acontece se não tiver o break??? ++aCont; break; case 2: ++bCont; ++bCont; break; case 3: case 4: case 5: ++cCont; break; default: System.out.println("Opção Inválida"); break; } // fim do switch

(33)

Instruções de controle – parte II

cap. 5

public class UsandoBreak {

public static void main( String args[] ) {

int cont;

for ( cont = 1; cont <= 10; cont++ ) // rodas 10 vezes {

{

if ( cont == 5 )

break; // termina o loop System.out.printf( "%d ", cont ); }

System.out.printf( "%d\n", cont ); }

(34)

Instruções de controle – parte II

cap. 5

public class UsandoContinue {

public static void main( String args[] ) {

for ( int cont = 1; cont <= 10; cont++ ) // roda 10 vezes { if ( cont == 5 ) continue; continue; System.out.printf( "%d ", cont ); }

System.out.println( "\nNão imprime o 5" ); }

(35)

Instruções de controle – parte II

cap. 5

Operações lógicas

• OU (OR) || • E (AND) && • NÃO (NOT) ! • 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

(36)

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.

(37)

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 .

(38)

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

(39)

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

aulas.)

tipo-de-retorno – refere-se ao tipo de dado retornado pelo método. Métodos que não retornam valores devem possuir nesse parâmetro a palavra void. Sempre que void for usada em uma declaração de método, nenhum valor será retornado após sua execução, isto é, o método atuará como uma ‘procedure’ de outras linguagens de programação. Um método pode ter como retorno qualquer tipo primitivo (int, float, etc.), um vetor ou ainda um objeto qualquer.

nome-do-metodo – pode ser qualquer palavra ou frase, desde que ininciada por uma letra. Se o nome for uma frase, não podem existir espaços em

branco entre as palavras. É importante dar aos métodos nomes sugestivos, ou seja, nomes que indicam a tarefa executada pelo método.

(40)

Criação de Métodos

(cont.)

cap. 5

lista-de-argumento – trata-se de uma lista de variáveis opcionais, que podem ser recebidas pelo método para tratamento interno. Quando um método é invocado, ele pode receber valores de quem o chamou. Esses valores podem ser manipulados internamente e devolvidos ao emissor da

solicitação. Um mesmo método pode receber diferentes tipos de variáveis, desde tipos primitivos até objetos complexos.

código do corpo – trata-se dos códigos em Java que realizam os processos internos e retornam os valores desejados, isto é, costituem o programa do método.

método.

O tipo de retorno, o nome do método e a lista de argumentos formam a

assinatura do método, algo que o identifica de maneira única. Toda vez

que um método for invocado a assinatura deverá ser obedecida.

Exemplo de métodos:

System.out.Println(“valor do parámetro”); // método chamado Println que tem como argumento um valor do tipo String.

(41)

Criação de Métodos

(cont.)

cap. 5

Exemplo de métodos sem retorno: public void imprimeUmaLinha () {

System.out.Println(“====================”); }

public void imprimeVariasLinha (int qtdeLinhas) {{ int i = 1; while (i <= qtdeLinhas) { System.out.Println(“====================”); i += 1; } }

(42)

Criação de Métodos

(cont.)

cap. 5

Exemplo de métodos com retorno: public String nomeDoAluno ()

{

return “Tião José Silva”

}

public int areaDoQuadrado(int base, int altura) {{

float area = 0;

area = base * altura;

return area

(43)

Exercício 03

1. Refaça os exercícios da listagem 01 (Exercício 01) seguindo as regras abaixo:

a) Os exercícios deverão ser refeitos em uma única classe (arquivo) utilizando métodos. Faça uso de um menu com uma estrutura CASE para que o usuário escolha qual exercício ele deseja executar.

b) Todo o processamento deverá ser feito dentro dos métodos.

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.

(44)

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

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

(45)

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

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.

(46)

Introdução a Classes e Objetos

cap. 3

Vantagens e objetivos da OO:

• Natural

• Confiável

• Reutilizável

• Reutilizável

• Manutenível

• Extensível

• Oportuna

(47)

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

(48)

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

(49)

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

(50)

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

(51)

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

(52)

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ê 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.

(53)

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

(afazeres), que são conhecidos como

métodos ou mensagens.

REPRESENTAMOS

UMA CLASSE

PELO SÍMBOLO:

Carro Nome da classe cor: String Propriedades nº Portas : int

andar(); Métodos freiar();

(54)

Introdução a Classes e Objetos

cap. 3

Classe – é um tipo de dados definido pelo

usuário, que tem um estado(propriedades)

e algumas operações(procedimentos e

função)

Objeto – é uma instância de uma classe, os

objetos são entidades reais, que ocupam

espaça de memória.

(55)

Exemplo 01

public class CadernoNotas01 {

// mostra uma mensagem de boas vindas com o nome do curso public void mostraMenssagem(String nomeCurso)

{

System.out.printf( "Bem vindo ao caderno de notas!\n%s!\n", System.out.printf( "Bem vindo ao caderno de notas!\n%s!\n",

nomeCurso ); } // fim do método

(56)

Exemplo 01

cont. import java.util.Scanner;

//objetivo: passar valores para os metodos por parametro public class CadernoNotasPrincipal01 {

public static void main(String[] args) {

// Cria um scanner para entrada dos dados Scanner entrada = new Scanner( System.in ); Scanner entrada = new Scanner( System.in );

// cria um novo objeto da classe Caderno de Notas

CadernoNotas01 meuCaderno = new CadernoNotas01(); System.out.println( "Entre com o nome do curso:" );

String cursoNome = entrada.next(); System.out.println(); // linha em branco

// chama o metodo passando o nome do curso meuCaderno.mostraMenssagem( cursoNome ); }

(57)

Os três pilares da POO

• Para edificar seu entendimento e domínio de OO, você

deve primeiro ter uma base sólida a partir da qual possa

expandir sua compreensão. Primeiro, você precisará

identificar, definir e explorar os conceitos básicos de

OO. Tal discussão o leva naturalmente aos três

conceitos que devem estar presentes para que uma

linguagem seja considerada realmente orientada a

linguagem seja considerada realmente orientada a

objetos.

• Os três pilares são:

1. Encapsulamento

2. Herança

(58)

Encapsulamento

cap. 3

• Encapsulamento é a característica da OO de ocultar

partes independentes da implementação. O

encapsulamento permite que você construa partes

ocultas da implementação do software, que atinjam uma

funcionalidade e ocultam os detalhes de implementação

do mundo exterior.

• Uma vez encapsulado, você pode ver uma entidade de

• Uma vez encapsulado, você pode ver uma entidade de

software como uma caixa preta. Você sabe o que a

caixa preta faz, pois conhece sua interface externa.

Você não se preocupa com o que está acontecendo

dentro da caixa; você só se preocupa com o fato de que

isso aconteça.

(59)

Encapsulamento

cap. 3

Uma interface lista os serviços fornecidos por um

componente (classe). A interface é um contrato com o

mundo exterior, que define exatamente o que uma

entidade externa pode fazer com o objeto. Uma interface

é o painel de controle do objeto.

Mensagem

?

Mensagem Interface Interface In te rf ace In te rf ace

(60)

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:

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

Você notou que a interface pública não inclui o método private void print(String tipo, String mensagem) ???

(61)

Encapsulamento

cap. 3

• O que aparece e o que não aparece na interface pública

é governado por diversas palavras-chave existentes nas

linguagens de programação OO, mas fundamentalmente

essas palavras acabam tendo efeitos semelhantes:

• Público (public) – garante o acesso a todos os objetos.

• Público (public) – garante o acesso a todos os objetos.

• Protegido (protected) – garante o acesso à instância, ou

seja, para aquele objeto, e para todas as subclasses

(mais detalhes nas próximas aulas).

• Privado (private) – garante o acesso apenas para a

instância, ou seja para aquele objeto.

(62)

Encapsulamento – Por que

usar?

cap. 3

Quando usado cuidadosamente, o encapsulamento

transforma seus objetos em componentes plugáveis.

Para que outro objeto use seu componente, ele só

precisa saber como usar a interface pública do

componente. Tal estratégia tem três vantagens:

1. Independência: significa que você pode reutilizar o

objeto em qualquer parte. Quando você encapsular

corretamente seus objetos, eles não estarão vinculados

a nenhum programa em particular. Em vez disso, você

pode usá-los sempre que seu uso fizer sentido. Para

usar o objeto em qualquer lugar, você simplesmente

exerce sua interface

(63)

Encapsulamento – Por que

usar?

cap. 3

2. O encapsulamento permite que você torne transparente

as alterações em seu objeto. Desde que você não

altere sua interface, todas as alterações permanecerão

transparentes para aqueles que estiverem usando o

objeto. O encapsulamento permite que você atualize

seu componente, forneça uma implementação mais

eficiente ou corrija erros. Os usuários de seu objeto se

eficiente ou corrija erros. Os usuários de seu objeto se

beneficiarão automaticamente de todas as alterações.

3. Usar um objeto encapsulado não causará efeitos

colaterais inesperados entre o objeto e o restante do

programa. Como o objeto tem implementação

independente, ele não terá nenhuma outra interação

com o restante do programa, além da interface.

(64)

Encapsulamento – Abstração

cap. 3

Abstração é o processo de simplificar um problema difícil.

Quando começa a resolver um problema, você não se

preocupa com cada detalhe. Em vez disso, você

simplifica , tratando apenas dos detalhes pertinentes a

uma solução (ex. simulador de tráfego).

A Abstração tem duas vantagens:

1. Ela permite que você resolva um problema facilmente.

2. Mais importante, a abstração o ajuda a obter

reutilização. Quando possível, você deve se esforçar

para criar objetos que possam resolver um domínio

inteiro de problema. Ex. Um software para um fila de

banco e um software de fabricação de sanduíches.

(65)

Encapsulamento – Ocultação da

Implementação

cap. 3

Duas vantagens:

1. Protege seu objeto de seus usuários.

O que aconteceria se o usuário atribuísse um valor negativo para o campo preço unitário?

(66)

Encapsulamento – Ocultação da

Implementação

cap. 3

Duas vantagens:

2. Protege os usuários de seu próprio projeto

A ocultação da implementação leva a um projeto mais

flexível, pois ela impede que os usuários de seus

objetos se tornem fortemente acoplados à

objetos se tornem fortemente acoplados à

implementação subjacente dos objetos. Então, não

apenas a ocultação da implementação projete seus

objetos, como também protege aqueles que usam seus

objetos, estimulando um código fracamente acoplado

• O código fracamente acoplado é independente da

implementação de outros componentes

• O código fortemente acoplado é fortemente vinculado à

implementação de outros componentes.

(67)

Encap. -Responsabilidade

cap. 3

Divisão da responsabilidade correta significa que cada objeto

deve executar uma função – sua responsabilidade – e

executá-la bem.

Ter de chamar várias variáveis para calcular o total ajustado,

retira a responsabilidade da classe “NaoEncapsulado” e a

coloca nas mãos do programador. O código pode ter

(68)

Exemplo 02

//Objetivo:entendimento de private e public, o uso de métodos set e get public class CadernoNotas02 {

private String cursoNome; // variável de instancia // metodo para setar o valor de nomeCurso

public void setCursoNome( String nome ) {// armazena o valor passando

cursoNome = nome; } // recupera o valor armazenado public String getCursoNome() {

return cursoNome; }

// mostra a mensagem para o usuario public void mostraMenssagem()

{

// mostra a mensagem e usa o metodo getNomeCurso para buscar o valor

System.out.printf( "Bem vindo ao caderno de notas\n%s!\n", getCursoNome() ); } }

(69)

Exemplo 02

cont. import java.util.Scanner;

public class CadernoNotasPrincipal02 { public static void main(String[] args) {

// Cria um scanner para entrada dos dados Scanner entrada = new Scanner( System.in );

// cria um novo objeto da classe Caderno de Notas // cria um novo objeto da classe Caderno de Notas

CadernoNotas02 meuCaderno = new CadernoNotas02(); System.out.println( "Valor inicial do curso:" );

System.out.println( meuCaderno.getCursoNome() ); System.out.println( "Entre com o nome do curso:" ); String cursoNome = entrada.next();

//chama o método para setar o valor da variavel cursoNome da classe meuCaderno.setCursoNome(cursoNome);

meuCaderno.mostraMenssagem(); // chama o metodo passando o nome do curso } }

(70)

Construtores

cap. 3

• Um construtor é um método que serve

para inicializar variáveis, instanciar objetos

ou dar uma ação inicial ao objeto.

• Toda classe tem seu construtor, pois o

• Toda classe tem seu construtor, pois o

compilador fornece este construtor sem

parâmetros.

• O construtor mais a palavra reservada

“new” aloca espaço de memória para o

novo objeto.

(71)

Exemplo 03

//Objetivo: uso de construtores public class CadernoNotas3 {

private String cursoNome; // variavel de instância

// construtor, para inicializar variável e alocar espaço de memoria public CadernoNotas3( String nome )

{

cursoNome = nome; }

public void setCursoNome( String nome ) {//metodo para setar a varavel de instancia

cursoNome = nome; } public String getCursoNome()

{// metodo para buscar o valor da variavel de instancia return cursoNome; }

public void mostraMenssagem() {

System.out.printf( "Bem vindo ao caderno de notas\n%s!\n", getCursoNome()); } }

(72)

Exemplo 03

cont. public class CadernoNotas3Principal {

public static void main(String[] args) { // cria dois objetos CadernoNotas3

CadernoNotas3 caderno1 = new CadernoNotas3( "Introduçaõ a java" );

CadernoNotas3 caderno2 = new CadernoNotas3( CadernoNotas3 caderno2 = new CadernoNotas3(

"Matematica" );

// mostra o nomes dos dois curso (2 obejtos)

System.out.printf( "O nome do primeiro curso: %s\n", caderno1.getCursoNome());

System.out.printf( "O nome do segundo curso: %s\n", caderno2.getCursoNome());

} }

(73)

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 construtor sem parâmetro e o segundo com o construtor com parâmetros.

(74)

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

• 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.

(75)
(76)

Exemplo 01

//Objetivo: CAIXAS DE DIÁLOGO // importa a classe JOptionPane

import javax.swing.JOptionPane; public class Dialogo01 {

public static void main( String args[] )

{

String str;

str = "Bem vindo\n ao\n programa"; str = "Bem vindo\n ao\n programa";

JOptionPane.showMessageDialog(null, str ); //termina o aplicativo de forma correta

//passando como parâmetro 0, se outro //valor for passado indica erro.

//OBS: todo software em java com GUI deve //ser terminado com esta linha.

System.exit( 0 ); }

(77)

Exemplo 02

import javax.swing.JOptionPane; public class Dialogo02 {

public static void main( String args[] )

{ String sNum1,sNum2;

int num1,num2,soma;

// pede ao usuario o primeiro numero

sNum1 = JOptionPane.showInputDialog( "Primeiro Número" ); // pede ao usuario o primeiro numero

sNum2 = JOptionPane.showInputDialog( "Segundo Número" ); sNum2 = JOptionPane.showInputDialog( "Segundo Número" ); // converte de string para inteiro

num1 = Integer.parseInt( sNum1 ); num2 = Integer.parseInt( sNum2 ); // soma as variáveis inteiras

soma = num1 + num2; // mostra o resultado

JOptionPane.showMessageDialog(null, "A soma é " + soma); System.exit( 0 );

(78)

Exemplo 03

import javax.swing.JOptionPane;

public class Dialogo03 {

public static void main( String args[] ) { String sNum1,sNum2;

int num1,num2,subtracao;

// pede ao usuario o primeiro e segundo múmero

sNum1 = JOptionPane.showInputDialog( "Primeiro Número" ); sNum2 = JOptionPane.showInputDialog( "Segundo Número" ); // converte de string para inteiro

// converte de string para inteiro num1 = Integer.parseInt( sNum1 ); num2 = Integer.parseInt( sNum2 ); // soma as variáveis inteiras

subtracao = num1 - num2; // mostra o resultado

JOptionPane.showMessageDialog(null, "A diferença é " + subtracao, "Subtração",JOptionPane.WARNING_MESSAGE);

System.exit( 0 ); } }

(79)

Uso de caixas de diálogo

cap. 3

Tipos de mensagens

(80)

Métodos um exame mais profundo

cap. 6

Sobrecarga de método – Overload

Os métodos com o mesmo nome podem ser declarados na

mesma classe, contanto que tenham diferentes

conjuntos de parâmetros (determinados pelo numero,

tipos e ordem dos parâmetros).

tipos e ordem dos parâmetros).

Quando um método sobrecarregado é chamado, o

compilador Java seleciona o método adequado

examinando o número, os tipos e a ordem dos

argumentos na chamada.

A sobrecarga de métodos é comumente utilizada para criar

vários métodos com o mesmo nome que realizam as

(81)

Exemplo 01

public class QuadradoComSobrecarga { public void testaSobrecarga(){

//chama o metodo sobrecarregado com inteiro e com double

System.out.println("O quadrado de 7 é " +numeroAoQuadrado(7)); System.out.println("O quadrado de 7.5 é " +numeroAoQuadrado(7.5)); }

public int numeroAoQuadrado(int numero){ return numero*numero;

}

public double numeroAoQuadrado(double numero){ return numero*numero;

} }

(82)

Exemplo 01

continuação

//a classe principal chama(executa) a classe QuadradoComOverload public class QuadradoComOverloadPrincipal {

public static void main(String[] args) {

QuadradoComSobrecarga q = new QuadradoComSobrecarga(); q.testaSobrecarga();

}} }

(83)

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.

O array começa da posição zero e vai até N-1 com N sendo o tamanho do array

(84)

Arrays(vetor)

cap. 7

Declarando e criando array

Os arrays são objetos que ocupam espaço de memória,

logo devem ser criados(new)

Array de inteiros

Array de string

int c[] = new int[12];

String c[] = new String[12];

int c[] = new int[12];

String c[] = new String[12];

ou

ou

int c[];

String c[];

c = new int[12];

c = new String [12];

Mais de um array pode ser declarado em uma linha da

seguinte forma:

Ex. double[] array1, array2; que é igual a:

double array1[];

double array2[];

(85)

Arrays(vetor)

cap. 7

Declarando e criando array

(cont.)

Um programa pode criar um array e inicializar seus elementos com um

inicializador de array

int n[] = {10, 20, 65, 5, 99}

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]

(86)

Exemplo 01

public class Array {

public static void main(String[] args) { int vetorA[]; //declara um vetor de inteiros

String vetorB[] = new String[5]; //declara e cria um vetor de string double[] vetorC, vetorD; //decaração de 2 vetores em uma linha

int vetorE[] = {11, 28, 9, 55, 6};//lista de iniciadores especificando os valores e tamanho;

//---//cria o vetor declarado com 3 posições de 0 a 2. vetorA = new int[3];

for (int i = 0; i<=2; i++){ vetorA[i] = i+5;

System.out.printf("vetorA[%d] é igual a %d\n",i,vetorA[i]); }

System.out.println();

//---//usa o vetor que ja estava criado vetorB[0] = "B";

vetorB[1] = "R"; vetorB[2] = "U"; vetorB[3] = "N";

(87)

Exemplo 01

continuação

System.out.print("vetorB: "); for (int i = 0; i<=4; i++)

System.out.print(vetorB[i]); System.out.println();

System.out.println();

//---//cria os dois vetores declarados em uma linha vetorC = new double[3];

vetorD = new double[3]; double soma=0;

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

(88)

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á: 1) A soma dos 20 elementos.

2) O maior elemento informado. 3) O menor elemento informado. 3) O menor elemento informado.

4) A média dos números informados. (Somar os números e dividir por 20) 5) Imprimir os 20 elementos.

(89)

Arrays(matriz)

cap. 7

A linguagem Java não fornece vetores multidimensionais, mas como um

vetor pode ser declarado e ter qualquer tipo de base, é possível criar vetores de vetores (de vetores etc.), alcançando assim o mesmo efeito.

A declaração de um vetor bidimensional para inteiros, de nome "m" em Java:

(90)

Arrays(matriz)

cap. 7

Declarando vetores bidimensionais:

1) Com expressões de criação de vetores:

int m[][] = new int[3][3]; // matriz quadrada: 3 linhas X 3 colunas

2) Com expressões de criação de vetores:

int m[][] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };

3) Com linhas de diferentes tamanhos:

int m[][] = new int[2][]; // cria 2 linhas

m[0] = new int[5]; // cria 5 colunas para a linha 0 m[1] = new int[3]; // cria 3 colunas para a linha 1

4) Declarando e inicializando linhas de diferentes tamanhos:

(91)

Arrays(matriz)

cap. 7

Percorrendo vetores bidimensionais com linhas de diferentes tamanhos: Leia mais em:

int m1[][] = { {1, 2, 3, 4}, {5, 6} }; int m2[][] = { {1, 2}, {3}, {4, 5, 6} };

m.length >>>> determina o número de linhas

m[i].length >>>> determina o número de colunas da i-ésima linha

Leia mais em: Leia mais em:

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

(92)

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

for (i=0; i<2; i++) {

System.out.printf("Informe os elementos %da. linha:\n", (i+1)); for (j=0; j<4; j++) { System.out.printf("m[%d][%d] = ", i, j); System.out.printf("m[%d][%d] = ", i, j); m[i][j] = ler.nextInt(); } System.out.printf("\n"); } 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"); }

(93)

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

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

(94)

Classe e Objetos um exame mais

(95)

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.

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.

java.text DateFormat, SimpleDateFormat, FormatSymbols. java.sql Date, Time, Timestamp

(96)

A classe Date

A execução do código acima vai gerar o resultado

Quando um Date é criado, o número de milissegundos

desde 1970 é armazenado no objeto e pode ser retornado pelo método getTime().

O objeto “data” é criado com a data do sistema operacional.

Date representa um instante de tempo. Para marcar o tempo, Java considera o número de milissegundos decorridos desde 1º de janeiro de 1970. Cada

segundo possui 1.000 milissegundos, cada minuto possui 60 segundos, cada hora possui 60 minutos e cada dia possui 24 horas, ou seja, cada dia

corresponde a 86.400.000 milissegundos.

(97)

A classe Date

System.out.println: •Milissegundos na criação de data1. •Milissegundos na criação de data2. •Número de dias, meses e anos decorridos de 1970, até a data da criação do objeto.

•Somou-se 10 dias depois da criação do objeto.

(98)

A classe Date

Método Função Retorno

after(Date d) Verifica se a data é posterior à data presente em d. boolean before(Date d) Verifica se a data é anterior à data presente em d. boolean equals(Date d) Verifica se a data é igual à data presente em d. boolean getTime() Fornece o número de milissegundos decorridos

desde 1º de janeiro de 1970, 00:00:00.

long

setTime() Define no objeto Date o número de milissegundos armazenados em t.

void

toString() Converte o objeto Date em tipo String String

A classe Date, não fornece um mecanismo de controle sobre a formatação de uma data e não permite converter uma string contendo informações sobre uma data em um objeto Date. Essas funções são executadas pela classe DateFormat

(99)

A classe DateFormat

Diferentes países e usuários preferem visualizar a data com formatos diferentes. Ao criar um objeto a partir da classe DateFormat, ele conterá informação a respeito de um formato particular no qual será apresentada

(100)

A classe DateFormat

(101)

A classe DateFormat

Método Função Retorno

format(Date d) Formata a data em uma string de acordo com o estilo utilizado.

String

getInstance() Retorna uma data e hora de acordo com o estilo SHORT.

DateFormat

getDateInstance() Retorna uma data de acordo com o estilo de DateFormat getDateInstance() Retorna uma data de acordo com o estilo de

formatação local.

DateFormat

getTimeInstance() Retorna um horário de acordo com o estilo de formatação local.

Date

parse(String s) Converte a string em tipo Date. Date

A classe SimpleDateFormat, permite criar formatos alternativos para a

formatação de datas e horas, dependendo das necessidades do desenvolvedor, ou seja, esta classe expande a capacidade da classe DateFormat.

(102)

A classe SimpleDateFormat

As principais letras

Caractere Descrição Formato Ex.

G designador de era Texto AD

y ano Ano 1996; 06

M mês do ano Mês Jul; 07

d dia do mês Número 10

h hora em am/pm (1-12) Número 12 H hora do dia (0-23) Número 0 m minutos da hora Número 30 s segundos do minuto Número 55 S milissegundos Número

usadas para a criação de patterns estão

listadas ao lado:

S milissegundos Número 978

E dias da semana Texto Terça-feira D dia do ano Número 189

F dia da semana no mês Número 2 (2ª Qua em Julho) w semana do ano Número 27

W Semana do mês Número 2 a marcadores am/pm Texto PM k hora do dia (1-24) Número 24 K hora em am/pm (0-11) Número 0

(103)
(104)

A classe SimpleDateFormat

Método Função Retorno

applyPattern(String p) Aplica um pattern à data conforme definido na String p.

void

getPattern() Fornece o pattern que está sendo usado no String A classe SimpleDateFormat, herda os métodos da classe DateFormat e adiciona os métodos abaixo:

getPattern() Fornece o pattern que está sendo usado no formato da data.

(105)

A classe Calendar

Campo Descrição

DAY_OF_MONTH Dia do mês (1 a 31)

A classe Calendar, oferece mecanismos adequados para realização de cálclos com datas ou para identificação das propriedades de um data, como, por

exemplo, para identificar o dia da semana, o dia do mês em relação ao ano. Para isso a classe Calendar converte um tipo Date em uma série de campos:

DAY_OF_MONTH Dia do mês (1 a 31)

DAY_OF_WEEK Dia da semana(0=domingo, 6=sábado)

DAY_OF_WEEK_IN_MONTH Semana do mês (1 a 5) corrente. Diferente em relação a WEEK_OF_MONTH porque considera apenas a semana cheia.

DAY_OF_YEAR Dias decorridos no ano corrente

(106)

A classe Calendar

Campo Descrição

HOUR_OF_DAY Hora do dia (0 a 23).

MILLISECOND Milissegundos em relação ao segundo corrente. MINUTE Minutos em relação à hora corrente.

MONTH Mês em relação ao ano corrente.

SECOND Segundos em relação ao minuto corrente. WEEK_OF_MONTH Semana em relação ao mês corrente (1 a 5). WEED_OF_YEAR Semana em relação ao ano corrente.

YEAR Ano corrente

JANARY,....,DECEMBER Mês correspondente ao ano. MONDAY,....,SUNDAY Dia correspondente à semana.

(107)
(108)

A classe Calendar

Método Função Retorno

Add(int field, int valor) Função aritmética para objetos Date que adiciona o valor inteiro ao campo(Field) determinado

void

after(Object x) Verifica se o tempo (data e hora) do objeto x (pode ser Calendar ou outro tipo) é superior ao

armazenado no objeto Calendar

boolean

before(Object x) Idem anterior, porém verifica se o tempo é anterior ao objeto

boolean

Os métodos mais utilizados de Calendar são:

clear() Zera o conteúdo de data e hora armazenando em 1º de janeiro de 1970.

void

getFirstDayOfWeek() Fornece o primeiro dia da semana, dependendo da localidade

int

getTime() Fornece o tempo corrente Date getTimeMillis() Fornece o tempo corrente em milissegundos. long rolls() Função aritmética para objetos Date aplicando o

efeito de rolagem de datas. Realiza cálculos sem considerar os campos de maior grandeza. Ex. O ano de uma data.

void

(109)
(110)

Cálculos com Calendar

A função roll adiciona um valor sem alterar as maiores grandezas

(111)

Exercício

Crie uma classe como mostra a figura abaixo.

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.

(112)

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 da classe “ExercicioData”

(113)

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{

public class Carro{

private Porta portas;

private Volante volante;

\\continua...

}

(114)

Classe e Objetos um exame mais

profundo

cap. 8

(115)

Classe e Objetos um exame mais

profundo

cap. 8

(116)

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

lista de ItemNotaFiscal deve ser criado. E toda vez que a nota fiscal

for apagada, os itens devem ser destruídos.

Referências

Documentos relacionados

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

Preliminarmente, alega inépcia da inicial, vez que o requerente deixou de apresentar os requisitos essenciais da ação popular (ilegalidade e dano ao patrimônio público). No

A prova do ENADE/2011, aplicada aos estudantes da Área de Tecnologia em Redes de Computadores, com duração total de 4 horas, apresentou questões discursivas e de múltipla

17 CORTE IDH. Caso Castañeda Gutman vs.. restrição ao lançamento de uma candidatura a cargo político pode demandar o enfrentamento de temas de ordem histórica, social e política

O enfermeiro, como integrante da equipe multidisciplinar em saúde, possui respaldo ético legal e técnico cientifico para atuar junto ao paciente portador de feridas, da avaliação

Os gêneros textuais argumentativos, de expor o seu ponto de vista, utiliza uma linguagem na construção de saberes ao apresentar uma opinião, uma ideia, na qual as práticas de

De seguida, vamos adaptar a nossa demonstrac¸ ˜ao da f ´ormula de M ¨untz, partindo de outras transformadas aritm ´eticas diferentes da transformada de M ¨obius, para dedu-

•   O  material  a  seguir  consiste  de  adaptações  e  extensões  dos  originais  gentilmente  cedidos  pelo