Java na Cabeça Mudando de Paradigma ADS/Redes RONNISON REGES VIDAL CEARÁ, 26 de Outubro de 2016
ROTEIRO Senta que lá vem a história Características Vamos aos Códigos!
ROTEIRO Senta que lá vem a história Características Vamos aos Códigos! Maratona!
HISTÓRIA DO JAVA Em 1992, A Sun criou um time (conhecido como Green Team) para desenvolver inovações tecnológicas Esse time foi liderado por James Gosling, considerado o Pai do Java
HISTÓRIA DO JAVA Ideia de criar um interpretador para pequenos dispositivos, facilitando a reescrita de software para aparelhos eletrônicos O projeto resultou em uma linguagem baseada em C e C++ chamada Oak A inspiração do nome Java surgiu em uma cafeteria local, cujo café vinha de uma ilha da Indonésia chamada Java 1993 a Sun aposta no imediato potencial de utilizar Java para criar páginas da Web com o chamado conteúdo dinâmico
HISTÓRIA DO JAVA Na metade de 1994, construiu um browser chamado HotJava. Em maio de 1995, a Sun anunciou Java formalmente. Em Janeiro de 1996, a Netscape decide dar suporte a Java (browser Navigator). Em 1996, foi disponibilizada a primeira versão do Java (JDK 1.0). Atualmente, Java é utilizado : páginas da Web com conteúdo interativo e dinâmico Aplicativos corporativos de grande porte Fornecer aplicativos para dispositivos destinados ao consumidor final
CARACTERÍSTICAS Orientada a objetos Java é uma linguagem puramente orientada a objetos Tudo em Java são classes ou instâncias de classes, com exceção de seus tipos primitivos de dados Sem Ponteiros Java não possui ponteiros, isto é, Java não permite a manipulação direta de endereços de memória Coletor de lixo (Garbage Collector) Possui um mecanismo automático de gerenciamento de memória. Permite Multithreading Recursos que permite o desenvolvimento de aplicações capazes de executar múltiplas rotinas concorrentemente
CARACTERÍSTICAS Independente de plataforma Programas Java são compilados para uma forma intermediária (bytecodes) Tratamento de exceções Permite o tratamento de situações excepcionais Possui exceções embutidas e permite a criação de novas exceções Segurança Pode executar programas via rede com restrições de execução, além de itens específicos da linguagem, como ser fortemente tipada, ter assinaturas digitais em suas classes compiladas, etc
CARACTERÍSTICAS Máquina Virtual Java Utiliza o conceito de máquina virtual; Camada responsável por interpretar os bytecodes
FASES DE UM PROGRAMA
FERRAMENTAS Java SDK Netbeans/Eclipse Laboratórios/Computadores Pessoais
FERRAMENTAS Java SDK Netbeans/Eclipse Laboratórios/Computadores Pessoais FORÇA DE VONTADE
VAMOS AOS CÓDIGOS!
VAMOS AOS CÓDIGOS! HelloWorld.java
TIPOS DE DADOS PRIMITIVOS Tipos de Dados Primitivos Identificadores é uma seqüência de símbolos UNICODE (64K símbolos) que começa com uma letra, um símbolo subscrito _, ou o caractere $. Os demais símbolos de um identificador podem conter também números. Identificadores são case-sensitive 15
TIPOS DE DADOS PRIMITIVOS Tipos de Dados Primitivos Exemplos de Identificadores Exemplo de identificadores válidos em Java:?? data?? _data?? $data?? data_do_mês?? data1?? uma_variável_pode_ser_bastante_extensa_e_conter_numero s234876238476?? data_public_class_notequeesseidentificadorcontempalavrasr eservadas 16
TIPOS DE DADOS PRIMITIVOS Tipos de Dados Primitivos Declarando variáveis em Java <tipo> + <espaço> + identificador + ; ou <tipo> + <espaço> + identificador + = + valor + ; 17
TIPOS DE DADOS PRIMITIVOS Tipos de Dados Primitivos Declarando variáveis em Java public class AloMundo { static public void main(string[] args) { boolean obrigatorio; int semestre = 2; String mensagem = "Alo mundo."; System.out.println(mensagem); } 18 }
TIPOS DE DADOS PRIMITIVOS Tipos de Dados Primitivos A linguagem Java utiliza oito tipos primitivos de dados e um tipo especial Divididos em quatro categorias: lógicos, textuais, numéricos inteiros e numéricos de ponto flutuante Tipos lógicos: boolean Tipos textuais: char e String Tipos numéricos inteiros: byte, short, int e long Tipos numéricos de ponto flutuante: float e double 19
ESTRUTURA DE DECISÃO Estruturas de Decisão Simples If Else Composta If (condição){ //linhas de comando } eles { //outros comandos } 20 Switch case... switch (variável){ Case valor: //comando Case valor: //comando Default: //outro comando }
ESTRUTURA DE DECISÃO Estruturas de Decisão Simples Elaborar um algoritmo que efetue o cálculo do reajuste de salário de um funcionário. Considere que o funcionário deverá receber um reajuste de 15% (0.15) se seu salário seja menor ou igual a 500. Caso contrario, seu reajuste será de 10% (0.1). 21
VAMOS AOS CÓDIGOS! Import java.util.scanner; Scanner leitor = New Scanner (System.in);
ESTRUTURA DE DECISÃO Estruturas de Decisão Composta Faça um algoritmo (utilizando o comando Switch) que, baseado no código digitado pelo usuário, retorne o nome e valor do produto. Sabendo que 23 001 Parafuso (R$ 0,15) 002 Porca (R$ 0,05) 003 Prego (R$ 0,10) 004 Martelo (R$ 40,00) 005 Tomada (R$ 3,00)
ESTRUTURA DE REPETIÇÃO Estruturas de Repetição As estruturas de repetição também são chamadas de laços ou loops e permitem que o programador especifique que um programa deve repetir uma ação em quanto uma condição for verdadeira. Para for (int i = 0; i < 10; i ++) {.. } Enquanto while( x < 10 ) {.. } Repita Do { } while(i < 10) 24
ESTRUTURA DE REPETIÇÃO Estruturas de repetição While Realiza loop Permite especificar um código que deve repetir uma ação enquanto alguma condição permanece verdadeira Exemplo: encontre a primeira potência de 3 maior do que 100 25
ESTRUTURA DE REPETIÇÃO Estruturas de repetição While Exemplo: encontre a primeira potência de 3 maior do que 100 while ( product <= 100 ) { product = 3 * product; } 26
ESTRUTURA DE REPETIÇÃO Estruturas de repetição While Desenvolva um algoritmo que calcule o fatorial de um número, usando o laço while 27
ESTRUTURA DE REPETIÇÃO /** * repetição de comandos usando FOR */ // Calculando o fatorial de um número: int numero = 10; int fatorial = 1; int i = numero; while (i > 0) { fatorial = fatorial * i; i--; } System.out.println("fatorial de " + valor + " = " + fatorial); 28
ESTRUTURA DE REPETIÇÃO Estruturas de repetição Do.. While A diferença entre o DO-WHILE e WHILE é que o DO- WHILE analisa a expressão no final da repetição ao invés do início, ou seja, pelo menos uma vez o bloco de comandos será executado 29
ESTRUTURA DE REPETIÇÃO Estruturas de repetição Do.. While class Repete2 { public static void main(string[] args){ int conta = 1; do { System.out.println("Contando: " + conta = conta+1; } while (conta < 11); } } 30
ESTRUTURA DE REPETIÇÃO Estruturas de repetição For O comando for é um meio compacto de fazer uma repetição sobre um intervalo de valores Na programação é comum usar o termo loop em repetições devido ao modo no qual o for, neste caso, repetidamente executa enquanto uma condição é verdadeira. 31
ESTRUTURA DE REPETIÇÃO Estruturas de repetição For A expressão de inicialização começa o loop. É executada uma única vez assim que o loop começa Quando a expressão de término é analisada e é falsa, o loop finaliza A expressão de incremento é chamada a cada iteração dentro do loop 32
ESTRUTURA DE REPETIÇÃO Estruturas de repetição For class Repete3 { public static void main(string[] args){ for(int i=1; i<11; i++){ System.out.println("Contando: " + i); } } } 33
ESTRUTURA DE REPETIÇÃO Estruturas de repetição For O for tem uma função estendida para vetores e classes Collections Este tipo de for é chamado de enhanced for e pode ser usado para fazer iterações dentro dessas estruturas de dados, percorrendo-as 34
ESTRUTURA DE REPETIÇÃO Estruturas de repetição For class EnhancedFor { public static void main(string[] args){ //declarando um vetor inteiro contendo uma lista de números int[] numeros = {1,2,3,4,5,6,7,8,9,10}; //o for abaixo percorre o vetor e mostra na tela cada um dos números for (int item : numeros) { System.out.println("Contando: " + item); } } } 35
ESTRUTURA DE REPETIÇÃO Estruturas de repetição Faça um algoritmo que leia a idade de 10 pessoas. Em seguida, o algoritmo deverá apresentar: A idade do mais velho; A idade do mais novo; A quantidade de adolescentes (de 12 a 17 anos); 36
ARRAY - DEFINIÇÃO Vetor ou Array é a forma mais familiar de dados estruturados Um array é um conjunto de componentes do mesmo tipo Espaço ocupado = tamanho ocupado por cada elemento do vetor * tamanho do vetor Problema Dada uma relação de 5 estudantes, imprimir o nome de cada estudante, cuja nota é maior do que a média da classe. 37
ARRAY - DEFINIÇÃO Como estes dados têm uma relação entre si, podemos declará-los com um nome ÚNICO para todos os 100 elementos. Conjunto de 100 números = LISTA 38
ARRAY DECLARAÇÃO DE TIPOS Arrays são agrupamentos de dados adjacentes na memória declaração: tipo_dado nome_array[<tamanho>]; define um arranjo de <tamanho> elementos adjacentes na memória do tipo tipo_dado 39
ARRAY - DEFINIÇÃO O elemento do vetor tem todas as características de uma variável e pode aparecer em expressões e atribuições Lista[2] Lista[3] + Lista[20] Para somar todos os elementos da Lista: soma 0 para I 1 até 100 faça soma soma + Lista[i] 40
SOLUÇÃO 2 Algoritmo Notas Início Para i 1 até 5 faça Leia(nome[i],nota[i]) soma 0,0 Para i 1 até 5 faça soma soma + nota[i] media soma/5 Para i 1 até 5 faça Se nota[i] > media então escrever (nome[i]) Fim 41
MATRIZES - DEFINIÇÃO Também chamadas conjuntos bidimensionais, contém: um número fixo de elementos; todos são do mesmo tipo; arranjados na forma de tabela de 2 dimensões; 42
MATRIZES - DEFINIÇÃO Ex.: Uma matriz chamada MAT que tenha m elementos (horizontal) e n elementos (vertical) 43
MATRIZES - MULTIDIMENSIONAIS Arrays podem ter diversas dimensões, cada uma identificada por um par de colchetes na declaração Ex: char matriz[5][10]; declara uma matriz de 5 linhas e 10 colunas: na memória, entretanto, os caracteres são armazenados linearmente: 44
MATRIZES PROBLEMA Dada uma tabela de 4x5 elementos, calcular a soma dos elementos e o maior elemento 45
STRING Seqüência de caracteres; Em Java, String não é tipo primitivo; É tipo de referência são objetos! 46
IGUALDADE DE STRINGS O operador == não deve ser usado para compararmos se duas Strings são iguais Deve-se usar o método equals da classe String str1 == str2; str1.equals(str2); 47
IGUALDADE DE STRINGS int indexof(string s): Retorna o índice do primeiro encontrado; Índices em Java começam em 0; Caso não encontre, retorna -1; String x = Clique aqui para adicionar anotações ; String y = adicionar Int i = x.indexof (y); //1 == 12 48
STRINGS String substring(int inicio, int fim): Retorna a substring do índice inicio (inclusivo) até o Índice fim (exclusivo) String a = Clique aqui adicionar anotações ; String b = a.substring(2,5); // b é igual a iqui 49
STRINGS char charat(int indice): Caracter da posição índice; String x = Clique aqui para adicionar anotações Char c = x.charat(0) //c == C 50
VAMOS AOS CÓDIGOS! Programando Orientado à Objetos!
INTRODUÇÃO Orientação a objetos pressupõe que o mundo é composto por objetos, onde um objeto é uma entidade que combina estrutura de dados e comportamento funcional. No paradigma orientado a objetos, os sistemas são criados a partir dos objetos que existem no domínio do problema, isto é, os sistemas são modelados como um conjunto de objetos que interagem entre si. 52
INTRODUÇÃO O que são objetos no mundo computacional? 53
OBJETO Definição : Um objeto é a representação computacional de um elemento ou processo do mundo real Exemplos : cadeira, aula, venda, cliente Os objetos possuem características e comportamentos Cada característica ou propriedade é chamada de atributo do objeto Por exemplo, o objeto moto tem como atributos cor, marca, Podemos sempre associar um conjunto de valores aos atributos. Exemplo : a cor da moto pode ser vermelha, azul, verde, etc. 54
OBJETO Cada comportamento é chamado de método do objeto Um comportamento representa uma reação ou resposta de um objeto a uma ação do mundo real Exemplos de comportamentos para o objeto moto : acelerar, parar... 55
ATRIBUTOS Atributos são declarados da mesma forma que as variáveis locais, porém com uma sintaxe ligeiramente diferente: [visibilidade] [static] [final] tipo atributo [ = inicialização]; visibilidade: public, private, package ou protected. static: define que esse atributo é da classe (será visto posteriormente) final: atributo constante (valor inicial não pode ser alterado) 56
SINTAXE DE MÉTODOS DA CLASSE visibilidade [static] [final] [abstract] tipo método ([parâmetros]) [throws exceções] { [ corpo do método ] } Visibilidade: public, private, package ou protected. static: método da classe (será visto posteriormente) final: método não pode ser sobrescrito (será visto posteriormente) abstract: método deve ser implementado nas subclasses 57 (será visto posteriormente)
EXERCÍCIOS 1) Sabendo que todo livro possui autor, editora e preço, crie uma classe pública com construtor padrão e métodos modificadores e de acesso. Depois, crie dois livros com dados obtidos via console 58
VAMOS AOS CÓDIGOS! Maratonando! :)
Obrigad o!