• Nenhum resultado encontrado

Aula Java

N/A
N/A
Protected

Academic year: 2021

Share "Aula Java"

Copied!
54
0
0

Texto

(1)

Programação Orientada a Objetos

Flávio R. C. Sousa flavio@lesc.ufc.br @flaviosousa www.lia.ufc.br/~flavio POO - 2017.1

Universidade Federal do Ceará

Departamento de Engenharia de Teleinformática

(2)
(3)

Histórico

Iniciou como uma linguagem de programação para equipamentos eletrônicos (microondas, PDAs, ...) • Concebida no projeto Green (Green Team) – James Gosling (líder) – Inicialmente denominada OAK • Pequena, confiável e portável

(4)

Histórico (cont...)

Ideal para a Internet !

Sua afirmação se deu com o surgimento do HotJava (Web Browse)

Projetada para aparelhos eletrônicos, lançada para desenvolver aplicativos para navegadores web e consolidada para o desenvolvimento web do lado servidor

(5)

Uma Linguagem Moderna

O que é Java?

“Java é uma linguagem simples, orientada a objetos, distribuída, interpretada, robusta, segura, independente de arquitetura,

portável, de alto desempenho, suportando multithreads e

dinâmica.”

(6)

Java é Simples

Sintaxe familiar a vários programadores (baseada em C e C++) • Elimina várias redundâncias de C++Simples para algumas aplicações, desde que se conheça alguns pacotes • Simples dado tudo que a linguagem oferece

(7)

Java Eliminou...

Variáveis e funções globaisPonteiros

goto, struct e union

Tipos fracos

Remoção programática de objetos (liberação de memória)

(8)

Java é Orientada a Objetos

Objetos e ClassesEncapsulamento (dados e operações)Subtipos e HerançaPolimorfismoLigações dinâmicas (dynamic binding)Criação e remoção dinâmica de objetos

(9)

Implementações de Java

InterpretadaBytecodes da JVM – Independente de plataforma • Compilada – Código nativo em C ou C++ • Alta performance?

(10)

Alta Performance?

• Java oferece alternativas e compromissos

• Código do cliente pode ser interpretado

– Compiladores JIT aumentam o desempenho – Cliente universal

– Código móvel, carregado pela rede, evitando instalações, conflito entre versões, etc.

• Código do servidor pode ser compilado para código de máquina

(11)

Java é Portável

Em tese, redução de custos com migração, instalação, treinamento, etc.

Na prática, ainda é necessário depurar programas antes de migrar para outra plataforma

(12)

Java é Distribuída

Oferece suporte de alto nível para acesso a Internet / WWW • Objetos distribuídos com RMI, CORBA, EJBSuporte para acesso a arquivos remotos, banco de dados, etc...

(13)

Java é Robusta

Ausência de ponteirosFortemente tipada

Coleta de lixo automática

Exceções tipadas

Acesso a arrays é verificado

(14)

Processo de Compilação em Java

Código Fonte

(15)

Bytecode (arquivos .class) Máquina Virtual Java Código Nativo Interpretador (comando java) Sistema Operacional

Processo de Compilação em Java

(16)

Máquina Virtual Java

JVM é dependente de plataforma

Processa os bytecodes que são independentes de plataforma

Existem diversas VMs de diversos fornecedoresCada VM deve ser capaz de executar qualquer

classe compilada java (bytecode)

(17)

Máquina Virtual Java (cont...)

JVM PC - Windows JVM IBM - Aix JVM Sun - Solaris Bytecodes

(18)

Máquina Virtual Java (cont...)

Coleta de Lixo – Memória alocada que não é mais utilizada deve ser liberada – Em outras linguagens, desalocar memória é responsabilidade do programador – Java provê um mecanismo que monitora e libera memória

(19)

Máquina Virtual Java (cont...)

Coleta de Lixo (cont...) – Garbage Collector • Checa e libera memória que não é mais utilizadaAcontece automaticamente. O programador esta livre de gerenciar a liberação de memória • Pode variar entre JVMs de diferentes fabricantes

(20)

Máquina Virtual Java (cont...)

Onde encontrar uma JVM?

– Gratuitamente e direto do fabricante

Oracle (java.oracle.com)

– Na página, podem ser baixados o JRE e o SDK

• O JRE é o ambiente para máquinas que irão apenas “rodar” programas Java

• SDK ou JSDK é o ambiente para desenvolvedores (JVM, compilador, debugger, etc)

(21)

Máquina Virtual Java (cont...)

(22)

Primeiro Programa em Java

• Formado por 3 elementos básicos – Declaração de pacotesUtilização de “imports”Definições de classe O programa OlaMundo em Java

public class OlaMundo { public void digaOla(){

System.out.println(“Ola Mundo!”); }

(23)

Java em Linha de Comando

Compilação

• javac OlaMundo.java

• Geração do OlaMundo.class

Execução • java OlaMundo <Argumentos>

(24)

Comentários

Existem três tipos de comentários em Java

– De uma linha – De várias linhas

– De documentação

//Comentário uma linha

/* Comentário de várias linhas */ /** Comentário de

(25)

Sentenças e Blocos

Uma sentença (statement) é uma linha de código terminada por um “;” • Um bloco de código é delimitado por chaves (“{” e “}”) total = a + b; { total = a + b; }

(26)

Palavras-Chaves (Reservadas)

abstract, boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, extends, false, final, finally, float, for, goto, if, implements, import, intanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, super, switch, syncronized, this, throw, throws, transient, true, try, void, volatile e while

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

(27)

Identificadores

São usados para nomear variáveis, métodos, classes e labels. Não podem ser palavras reservadas e devem iniciar com letra, $ ou _ Exemplo de Identificador Validade do Identificador louco Válido intGrande Válido $valor100 Válido 3_variavel Inválido !verdade Inválido

(28)

Tipos de Dados Primitivos

[1/4] Tipos de Dados Primitivos Tipo Booleano boolean Tipos Numéricos Tipos Integrais Tipo Caractere char Tipos Inteiros

byte short int long

Tipos de Ponto Flutuante

(29)

Tipos de Dados Primitivos

[2/4]

Tipo Booleano

Nome Exemplo Largura e Valores Permitidos

(30)

Tipos de Dados Primitivos

[2/4]

Tipos Numéricos

Nome Exemplo Largura e Valores Mínimos e Máximos

char char ch = ‘a’ 16bit (single) Unicode/ 0..65,535 byte byte bt = 100; 8 bits / -27 .. +27-1

short short st = -4; 16bits / -215 .. +215-1

int int it = 10; 32bits / -231 .. +231-1

long long lg = 300L; 64bits / -263 .. +263-1

float float ft = 2.5; 32bit (single)/ IEEE 754 ponto flutuante double double db = 5e10; 64bit (double) / IEEE 754 ponto flutuante

(31)

Tipos de Dados Primitivos

[3/4]

Caracteres e Cadeias (strings)

Exemplo Descrição

char ch = ‘a’; Caractere ‘a’ char ch = 97; Caractere ‘a’

int val = ‘a’; Valor inteiro do caractere ‘a’ (97) String st = “Tipo”; Cadeia de caracteres T-i-p-o String st = “Ola Java!\n” Ola Java!

(32)

Tipos de Dados Primitivos

[4/4] • Matrizes (Arrays) – Declaração • <tipo> <variavel>[]; ou <tipo>[] <variavel>; – int inteiros[]; – double[] doubles; – Construção (instaciação) • <variavel> = new <tipo>[<tamanho>]; – inteiros = new int[5];

– Inicialização

• <variavel>[<indice>] = <valor>; – inteiros[0] = 1;

(33)

O Tipo String

Em Java, cadeias de caracteres (String) não são tipos primitivos, são objetos! – Literais: “”, “Programa”, “Linguagem”; – String a = “Java”; – Concatenação: “Ola” + “Mundo” = “OlaMundo”; – Conversão Implícita: “Ola” + 2008 = “Ola2008”; – Comparação de Strings: a.equals(b) retorna boolean – Tamanho de uma String: a.length() retorna int

(34)

Declaração e Atribuição

[1/2] • Declarando Variáveis – <tipo> <variável> = <expressão>; • char a, b, c; • double area;Declarando e Inicializando Variáveis – <tipo> <variável> = <expressão>; • int i = 10, j = 100; • long big = 12341234L;

(35)

Declaração e Atribuição

[2/2] • Atribuindo valores a variáveis – <variável> = <expressão>; • j = 5; • k = 5; – <variável> = <variável> ... = <expressão>; • int j, k; • j = k = 5;

(36)

Convenções de Código Java

Java é sensível ao caso (case sensitive)variavelA é diferente de variavela

Além de tudo é uma boa prática toda a equipe escrever da mesma forma – Mais entendimento e organização • Existe um documento oficial da SUN/Oracle que determinada esse padrão (Java Code Convetions) – http://www.oracle.com/technetwork/java/codeconv-138413.html

(37)

Convenções de Código Java

Classes e Interfaces – class MinhaClasse – interface MinhaInterface • Métodos e Variáveis – calcularSalario() – double valorSalarioMensal • Constantes – DADA_DE_EXPIRACAO_SENHA – MAX_SIZE

(38)

Operadores Matemáticos

Nome Símbolo Exemplo

Adição + a = a + 1 Subtração - s = s - 1 Multiplicação * m = m*2 Divisão / d = d/2 Módulo (resto) % r = r%2 Incremento ++ i++ Decremento --

(39)

i--Operadores Comparativos

Nome Símbolo Exemplo

Igualdade == if(a == b) {...} Desigualdade != if(a != b) {...} Menor que < if(a < b){...} Maior que > if(a > b){...} Menor ou igual <= if(a <= b){...} Maior ou igual >= if(a >= b){...}

AND && if(a == 1 && b > 1){...}

(40)

Operadores Binários

Nome Símbolo Exemplo

Complemento binário ~ a = ~a

AND & a = a & 0x22

OR | a = a | b

XOR ^ a = a ^ b

Deslocamento à esquerda << a = 2 >> a

(41)

Operadores Binários

Nome Símbolo Exemplo

(42)

Imprimindo Dados

[1/2]

Escrevendo dados na saída padrão (monitor)

– System.out.print(“dados”); – System.out.println(“dados”);

– System.out.println( x ); (x é uma variável)

Pode-se concatenar Strings com variáveis

(43)

Imprimindo Dados

[2/2] • Códigos de escape para caracteres Caractere Significado \b Caractere de retrocesso (backspace - BS) \f Quebra de página (form feed - FF) \n Quebra de linha (line feed - FL) \r Retorno de carro (carriage return - CR) \t Tabulação horizontal (horizontal tab - HT) \\ Barra invertida (backslash - \ ) \’ Apóstrofo (single quote - ' ) \” Aspas (double quote - " )

(44)

Lendo Dados

Lendo dados da entrada padrão (teclado)

– Crie a variável de leitura dos dados

• Scanner scanner = new Scanner ( System.in );

– Use os métodos de leitura específicos do tipo desejado

• System.out.print( "digite uma linha: " );

• String linha = scanner.nextLine() ; // lê a linha • System.out.print( "digite um numero: " );

• int i = scanner.nextInt() ; // lê um inteiro • System.out.print( "digite um numero: " );

(45)

Fluxo de Controle (if .. else)

Comando – if ... else if(condição){ (...) } else { (...) }

(46)

Fluxo de Controle (if ... else ... if)

Comando – if ... else ... if

if(condição){ (...)

} else if (condição){ (...)

(47)

Teste de Múltipla Escolha (switch )

Comando - switch switch(opção) { case 1: (...) break; (...) case n: (...) break; default:(...) break; }

(48)

Enquanto (while)

Comando - while

while(condição) { (...)

(49)

Faça Enquanto (do ... while)

Comando – do ... while

do {

(...)

(50)

Para (for)

Comando – for

for (comando; condição; comando){ (...)

(51)

Break

Comando – break

for (comando; condição; comando) { if(condição) {

break; }

(...) }

(52)

Continue

Comando – break

for (comando; condição; comando) { if(condição) {

continue; }

(...) }

(53)

Return

É usado para parar a execução do método corrente e transferir o fluxo de controle para o método que o chamou.

(54)

Programação Orientada a Objetos

Flávio R. C. Sousa flavio@lesc.ufc.br @flaviosousa www.lia.ufc.br/~flavio POO - 2017.1

Universidade Federal do Ceará

Departamento de Engenharia de Teleinformática

Referências

Documentos relacionados

Para obter mais informações sobre como ativar os perfis do Device Link utilizando as Configurações de cor para especialistas no driver da impressora Integrated Fiery Color

O que esta função faz é varrer todas as interfaces de rede do computador, verificar quais são USB/SAT, verificar qual tem o MAC compatível com o número de série fornecido e

R$35.760.426.974,00 (trinta e cinco bilhões, setecentos e sessenta milhões, quatrocentos e vinte e seis mil e novecentos e setenta e quatro reais), nos termos da proposta

Mathes and Nahai 20 con- ducted a detailed study of the vascular anatomy of the muscles, where the blood configuration model of the muscle determines how safe it is to

O meu primeiro agradecimento não poderia deixar de ser para a Cabelte S.A. por me ter dado a oportunidade de assumir a responsabilidade de chefiar o setor de manutenção

Os efeitos da substituição do magnésio pelo cobre e/ou manganês em óxidos mistos derivados de compostos do tipo hidrotalcita serão avaliados na remoção

Foram avaliados o ganho de peso, o consumo alimentar, a quantidade de proteína ingerida, o coeficiente de qualidade proteica (PER), a razão protéica líquida (NPR) e a

A presente portaria estabelece o regime de aplicação da operação n.º 2.1.1, «Ações de formação», inserida na ação n.º 2.1, «Capacitação e divulgação», da medida n.º