JAVA JSE 8

Aula de Java SE 8 JAVA PROGRAMAÇÃO ORIENTADO A OBJETO LÓGICA E ALGORITMO PROGRAMAÇÃO

Get Started. It's Free
or sign up with your email address
JAVA JSE 8 by Mind Map: JAVA JSE 8

1. 1. _Objeto Um valor capturado pela entrada de dados, teclado, iniciado por uma classe, existem classes que permitem entrada de valores. Alguns valores são criados com tipos que não podem ser usados matematicamente, então usamos os Wrappers para converter em um tipo primitivo. ---------------------------------------- Integer idade = new Integer(); int idad = idade.intValue();

2. Classe System

3. Aula de 1 a 10

3.1. JAVA - 001 - Introdução

3.2. JAVA - 002 - Hardware e Software

3.2.1. 1. Compilador Linguagens do Computador

3.2.1.1. Linguagem de Máquina

3.2.1.2. Linguagem Assembly ->Tradutor Assembler

3.2.1.3. Linguagem Alto Nível ->Tradutor Compilador

3.3. JAVA - 003 - Instalação e Configuração

3.3.1. 1. Instalar JDK(Java Development Kit) JRE

3.3.2. 2. NetBeans / Eclipse ou Notepad++

3.3.3. 3. Java SE Iniciantes

3.3.3.1. 1. Java EE Web

3.3.3.2. 2. Java Card

3.3.3.3. 3. Java TV

3.3.3.4. 4. Java ME MOBILE

3.4. JAVA - 004 - Hello World

3.4.1. 1. Escrever o programa na linguagem Java e salvar com .java; 2. Compilar o programa, será criado um arquivo .class(ByteCodes)"O .class é o programa Java propriamente dito", com mesmo nome do .java. O .class ainda não esta em linguagem de maquina, o ByteCodes podem rodar em qualquer micro que tenha a máquina virtual JAVAVM(Simula um computador), o JVM converte o .class em binário para ser executado em qualquer computador.

3.4.2. JavaDoc

3.5. JAVA - 005 - Fundamentos Java 1-"Write once Run Anywhere"; 2-Fonte, Classe, Método, Comentário; 3-Convenções de Código; 4-Palavras Reservadas; 5-Sequência de Escape; 6-Erros de Compilação

3.5.1. 1. "Write once Run Anywhere" Escreve uma vez e rode em qualquer lugar;

3.5.2. 2. Fonte(Classe, Método, instruções, Comentário);

3.5.2.1. 1. Classe representa uma parte de um programa ou um programa inteiro

3.5.2.2. 2. Métodos são acoes. que o programa pode executar. Método de retorno, nome do método e parâmetros dentro de ( ). As instruções terminam com ; . O Main e um método que executa o programa.

3.5.2.2.1. 1. println - Quebra de linha; print - Sem quebra de linha na visualização.

3.5.2.3. 3. Comentário // Unica linha /* .....*/ Varias linhas /**...@author....*/ Criar Documentação

3.5.3. 3. Convenções de Código; CamelCase

3.5.3.1. 1. Classe ->Inicia com Maiúscula Método -> Tudo minúscula ou nomeComposto

3.5.4. 4. Palavras Reservadas;

3.5.5. 5. Sequência de Escape;

3.5.5.1. Tudo entre Aspas e barra na Frente "\t" Tabulação "\n" Quebra de Linha "\" " Imprimir Aspas "\\" Imprimir umaBarra

3.6. JAVA - 006 - Variáveis e Sintaxe

3.6.1. 1. Variável = São referencias a dados. _Toda variavel tem um tipo, um nome e valor; _Pode criar varivel sem valor, tem que inicializada. _String nome, segundoNome, terceiroNome;

3.6.2. 2. Sintaxe: Iniciar com letra minuscula, _ ou $ _Não pode iniciar com numero _Não pode separa o nome composto->NÃO PODE "Primeiro Nome". _Padrão CamelCase.

3.7. JAVA - 007 - Tipos Primitivos Cast

3.7.1. 1. NÃO É OBJETO; É o seu valor declarado na variável

3.7.2. 2. int byte short long = L float = F double = D char void = inexistência de valor boolean

3.7.2.1. Números Binários inicia com 0b= 0b10110011

3.7.3. 3. Cast Explícito Forço um primitivo maior em valor caber "forçar" em um primitivo menor. int num1 = (int) 9_000_000_000_000_000_000L

3.8. JAVA - 008 - Introdução ao Garbage Collector _Variáveis de Referências _Conceitos de Memória _Garbage Colector

3.8.1. 1. Variáveis de Referências _Toda variável que aponta uma referencia na memória do valor. _String Y = "XTI", Y é uma variavel de referencia pois utiliza uma classe para criar um objeto, cria a variavel e a variavel linka o valor na memória "XTI".

3.8.2. 2. A variável primitiva armazena um dados primitivo = É um local que armazena a variável na memória. O dado binário que representa o valor.

3.8.3. 3. _Quando um objeto esta na memória e não esta mais "setado/linkado" ele pode ser limpo pelo Garbage Collector, Gerencia os objetos que não tem mais referencia na memoria. _Limpar esta referencia usa-se Null nesta referência. String y = "XTI"; y = "xti.com.br"; y = null; System.out.println(y);

3.9. JAVA - 009 - Constantes e Modificador "final"

3.9.1. _CONSTANTE VALOR QUE NÃO MODIFICA. _CONSTANTE = ESCREVE EM MAIUSCULAS. SE FOR NOME COMPOSTO SEPARAR COM _.

3.9.2. _Modificador final(escritos em letras minúsculas), modificador que não permite a alteração de uma constante, trava a constante. final double PI = 3.14; PI = 123; // NÃO SERÁ COMPILADO char = SEXO_MASCULINO = 'M'; char = SEXO_FEMININO = 'F'; System.out.println(PI);

3.10. JAVA - 010 - Wrapper Classes Envólucros de Tipos Primitivos -------------------------------------------------- Integer idade = new Integer(); int idad = idade.intValue(); -------------------------------------------------- double d1 = Double.parseDouble("123.44"); int i1 = Integer.parseInt("123"); ----------------------------------------------- .valueOf

3.10.1. 2. Executar sem criar Objeto. Apartir da versão 5Java Métodos Staticos: ------------------------------ double d1 = Double.parseDouble("123.44"); int i1 = Integer.parseInt("123");

3.10.2. 3. _Wrappers são classes empacotadores dos tipos primitivos _Para cada tipo primitivo temos um espelho Wrappers. Tipo Primitivo -> Wrappers int Integer byte Byte short Short long Long float Float double Double char Character void Void boolean Boolean

3.10.3. .valueOf Metodo transforma um valor da sua base de conversão, para base 10. int i2 = Integer.valueOf("101010",2); //i2 = 42

4. Aula de 11 a 20

4.1. JAVA - 011 - Entrada de Dados com Scanner

4.1.1. 1. import java.util.Scanner;

4.1.2. 2. Á classe Scanner, permite criar um objeto para entrada de dados no systema

4.1.3. 3. Scanner entradaObjeto = new Scanner(System.in); String entradaDados = entradaObjeto.nextLine(); _O método nextLine retorna uma String

4.1.3.1. Scanner entradaObjeto = new Scanner(System.in); System.out.println("Qual seu nome: "); String entradaDados = entradaObjeto.nextLine(); Syetm.out.println("Bem Vindo: " +entradaDados); //System.out.println(entradaObjeto.nextLine()); //Outra opção para entrada de dados

4.2. JAVA - 012 - Entrada Gráfica de Dados com JOptionPane Objeto JOptionPane

4.2.1. 1. import javax.swing.JOptionPane;

4.2.2. 2. Permite criar janelas Entrada Dados: JOptionPane.showInputDialog("Digite: "); Objeto.método //Entrada dos Dados String entradaObjeto = JOptionPane.showInputDialog("Digite Nome: "); System.out.println(entradaObjeto); //Saída no terminal

4.2.3. 3. //Saída de Dados como Janela JOptionPane.showMessageDialog(null, entradaObjeto)

4.3. JAVA - 013 - Operadores Operador Unário Operadores Aritméticos Binários Operador Ternários Operador de Atribuíção =

4.3.1. Imagem1

4.3.2. Imagem 2

4.3.3. //Operador Unário ->Funciona com 1 operando -2 +6 //Operadores Binários ->Funciona com 2 operando 2+6 5+9 //Operador Ternários ->Funciona com 3 operando true ? "Sim" : "Não" //Operador de Atribuíção = int x = 9 + 4;

4.3.4. Operador Ponto '.' Para acessar as propriedades de um Objeto

4.4. JAVA - 014 - Operadores Matemáticos

4.4.1. Imagem

4.4.2. int x =6; //int y = ++x; Pré-incremento x=7 e y=7 int y = x++; //Pós - incremento y=6 e x=7 System.out.println("x "+x); System.out.println("y "+y);

4.5. JAVA - 015 - Operadores de Comparação (SEMPRE RETORNAM A INFORMAÇÃO COMO TRUE ou FALSE) ==, !=, >, >=, <, <= _instanceof (Compara dois Operandos são do mesmo OBJETOS para ver se são iguais.) System.out.println("oi" instanceof String);

4.6. JAVA - 016 - Operadores Lógicos

4.6.1. && AND || OR ! NOT

4.7. JAVA - 017 - Operadores de Atribuição

4.7.1. += ->x =x+3 -> x+=3 -= *= /= %=

4.8. JAVA - 018 - Operadores Especiais //Operador Ternário LIGAÇÃO COM A JAVA - 013 - Operadores

4.8.1. //Operador Ternário int idade = 6; String x = (idade >= 18) ?/*Retornar o texto*/ "Maior de idade" :/*MAS Se essa avaliação for Falsa*/ "Menor de idade"; System.out.println(x);

4.9. JAVA - 019 - Desafio do Cálculo do IMC

4.9.1. /** * Desafio IMC * @author Eduardo */ import javax.swing.JOptionPane; public class IMC{ public static void main(String[] args){ String entradapeso = JOptionPane.showInputDialog("Digite seu Peso: "); double peso = Double.parseDouble(entradapeso); String entradaaltura = JOptionPane.showInputDialog("Digite sua altura: "); double altura = Double.parseDouble(entradaaltura); double imc = peso / (altura*altura); String resp = ((imc >= 20) && (imc <= 25 ))? "Peso Ideal":"Gordo"; JOptionPane.showMessageDialog(null,"IMC: " + imc +"\t"+resp); } }

4.10. JAVA - 020 - Array [] _Definição _Criação _Acesso a Elementos _Classe Arrays _Pesquisa _Ordenação

4.10.1. 1. Definição

4.10.1.1. 1. _Grupo de informações semelhantes que estão conectados entre eles.

4.10.1.2. 2. _Conjunto indexado de informações.

4.10.2. 2. Criação Podemos ter Arrays de Tipos Primitivos e Objetos.

4.10.2.1. 1. _Defini o Tipo de Array e [], String, int, double, + a variável.

4.10.2.2. 2. Array de Tipo Primitivo String[] paises = {"Brasil", "Russia", "India", "China"}; Um Array de String armazenado na variável paises.

4.10.2.3. 3. Array de Objeto int[] impares = new int[5]; //Objeto pelo comando NEW. impares[0] = 1; impares[1] = 3; impares[2] = 5; impares[3] = 7; impares[4] = 9;

4.10.3. 3. Acesso a Elementos

4.10.3.1. 1. _Cada um desses valores recebe uma posição, iniciando pela posição 0zero.

4.10.3.2. 2. _chave =(INDEXANDO UMA CHAVE COM VALOR) valor <==> INDICE = VALOR

4.10.3.3. 3. _ VISUALIZA O VALOR BRASIL QUE ESTA NO ÍNDICE/POSIÇÃO/CHAVE 0ZERO.

4.10.3.4. 4. String[] paises = {"Brasil", "Russia", "India", "China"};

4.10.3.4.1. 1. System.out.println(paises[0]);

4.10.4. 4. Classe Arrays

4.10.4.1. 1. Método .toString Arrays.toString(paises"que eh a variavel onde armazena os Arrays") Transforma em String o Array da variável, visualiza todo conjunto. System.out.println(Arrays.toString(paises));

4.10.4.2. 2. Pesquisa Arrays.binarySearch

4.10.4.2.1. 1. int posicao = Arrays.binarySearch(paises, "China"); System.out.println(posicao);

4.10.4.3. 3. Ordenação

4.10.4.3.1. 1. 1- Usa-se o método Arrays.sort Arrays.sort(paises, 0 , paises.length); 2_O método Arrays.toString System.out.println(Arrays.toString(paises)); ----------Fonte Completo---------- Arrays.sort(paises, 0 , paises.length); System.out.println(Arrays.toString(paises));

4.10.4.4. .length SABER QUANTAS POSIÇOES DENTRO DE UM ARRAY. String[] nome = {"Eduardo", "Andreia", "Willyam", "Filipe", "Deia", "Lucimar"}; System.out.println(nome.length); RETORNA COM 6. Quantos valores tem no Array.

4.10.5. 5. Como Alterar o conteúdo de uma posição paises[0] = "BRAZIL";

4.10.6. 6. Saber quantas posições tem o meu Array utilizando o comando length System.out.println(paises.length);

4.10.7. 7. Quando criamos um Array por meio de Objetos, NEW. Podemos acessar esses metodos desse Objeto dentro do Array. Double[] valores = {12.35, 3456.34568}; Sysyem.out.println(valores[0].doubleValue()); OU System.out.println(valores[0]);

4.10.8. 8. int[] nada = new int[3]; nada[0] = 100; nada[1] = 200; nada[2] = 300; System.out.println(nada[1]); int soma = nada[0] + nada[2]; System.out.println(soma);

4.10.9. 9. Exercícios

5. Scanner

5.1. Scanner entradaObjeto = new Scanner(System.in); System.out.print("Digite seu nome: ");//nome String nome = entradaObjeto.nextLine(); System.out.print("Digite sua idade: ");//idade Integer idade = entradaObjeto.nextInt(); System.out.print("Digite seu salario: ");//salario Double salar = entradaObjeto.nextDouble(); System.out.println("Seu nome eh: " +nome +" e " +"Sua Idade: " +idade +" e seu Salário R$" +salar);

6. JOptionPane

6.1. //Diametro = 2r; String entrada = JOptionPane.showInputDialog("Digite o raio: "); double raio = Double.parseDouble(entrada); double diam = 2 * raio; System.out.println(diam); //Circuferencia = 2PIr double pi = Math.PI; double circf = 2 * pi * raio; System.out.println(circf); //Area Circuferencia double area = pi *(raio*raio); System.out.println(area);

7. Aula de 21 a 30

7.1. 021 - Array Multidimensional

7.1.1. 1. São Arrays com mais de uma DImensão

7.1.1.1. 1. String[][] duas = { {"Eduardo","M","RJ"},{"Andreia","F","Duque de Caxias","Brasil"} }; String [][][] tres = { {"Eduardo","M","RJ"},{"Andreia","F","Duque de Caxias"},{"Willyam","M","RJ"} }; String[][][][] quatro = { {"Eduardo","M","RJ"},{"Andreia","F","Duque de Caxias"},{"Willyam","M","RJ"}, {"Filipe","M","RJ"} };

7.1.2. 2. Acessar um valor no Array Multidimensional

7.1.2.1. 1. System.out.println(duas[1][2]); System.out.println(duas[0][1]);

7.1.3. 3. Quantidade de Elementos total do Array

7.1.3.1. 1. System.out.println(duas.length);

7.1.3.2. 2. Quantos Elementos tenho em cada Elelmento interno

7.1.3.2.1. 1. System.out.println(duas[0].length); {"Eduardo","M","RJ"} ->3 Elementos

7.1.3.2.2. 2. System.out.println(duas[1].length); {"Andreia","F","Duque de Caxias","Brasil"} -> 4 Elementos

7.1.4. 4. Valores Aleatórios classes Random Random variavel = new Random(); variavel.nextInt(10); -> 10 eh o número máximo de números aleatórios OU int num = variavel.Random(10); System.out.println(num);

7.1.4.1. 1. import java.util.Random;

7.1.5. Exercício

7.1.5.1. String[] faces = {"A","2","3","4","5","6","7","8","9","10","VALETE","DAMA","REI"}; String [] nipes = {"Espadas","Paus","Copas","Ouros"}; Random r = new Random(); int indiceFaces = r.nextInt(faces.length); int indiceNipes = r.nextInt(nipes.length); System.out.println(faces[indiceFaces] +" "+ nipes[indiceNipes]);

7.2. 022 - ArrayList Collection Framework Arraylist

7.2.1. 1. ArrayList eh um Array com valor ARRAY variavel.

7.2.1.1. 1. import java.util.ArrayList;

7.2.2. 2. Adicionar

7.2.2.1. 1. ArrayList nipes = new ArrayList(); nipes.add("Eduardo"); nipes.add("Andreia"); nipes.add("Filhos"); System.out.println(nipes.toString());

7.2.2.1.1. 1. Podemos definir a posição do novo elemento do Array. nipes.add(0/*O Zero coloca o valor na primeira posição do Array*/ , "Dea Lucia");

7.2.2.1.2. 2. Ver o tamanho do ArrayList System.out.println(nipes.size());

7.2.3. 3. Remover

7.2.3.1. 1. nipes.remove("Andreia"); System.out.println(nipes.toString());

7.2.4. 4. Pesquisar

7.2.4.1. 1. Pesquisar um Índece de um Elemento

7.2.4.1.1. 1. System.out.println("Indece do Eduardo: " +nipes.indexOf("Eduardo"));

7.2.5. 5. Recuperar

7.2.5.1. 1. System.out.println(nipes.get(1));

7.2.5.1.1. 1. get(0), get(0) ou get(nPosição)

7.2.6. 6. Perguntar se tem valores, retorna boolean nipes.contains("Deia"); System.out.println("Tem Deia? "+nipes.contains("Deia"));

7.2.7. 7. Código Fonte Exercício

7.3. 023 - if else Fluxo Condicional

7.3.1. 1. public class ifElse{ public static void main(String[] args){ int idade = 10; if(idade < 11){ System.out.println("Crianca"); } } }

7.3.1.1. 1. public class ifElse{ public static void main(String[] args){ int idade = 11; if(idade <= 11){ System.out.println("Crianca"); }else if(idade > 11 && idade <= 18){ System.out.println("Adolescente"); }else if(idade > 18 && idade <=60){ System.out.println("Adulto"); }else{ System.out.println("Idoso"); } } }

7.3.2. 2. public class ifElse{ public static void main(String[] args){ int num = 11; if((num % 2)==0){ System.out.println("Par"); }else{ System.out.println("Impar"); } } }

7.3.3. 3. public class ifElse{ public static void main(String[] args){ int nota = 2; if (nota >= 7){ System.out.println("Passou"); if(nota >=9){ System.out.println("Genio"); } } else{ System.out.println("Reprovou"); if(nota >= 6){ System.out.println("Recuperação"); } else if(nota >=0 && nota<6){ System.out.println("BURRO"); } } } }

7.4. 024 - switch

7.4.1. 1. public class switchCase{ public static void main(String[] args){ char sexo = 'j'; switch(sexo){ case 'M': System.out.println("Masculino"); break; case 'F': System.out.println("Feminino"); break; default: System.out.println("outros"); } } }

7.4.2. 2. public class switchCase2{ public static void main(String[] args){ char sexo = 'f'; switch(sexo){ case 'M': System.out.println("Masculino Adulto"); case 'm': System.out.println("Masculino Crianca"); break; case 'F': System.out.println("Feminino Adulto"); case 'f': System.out.println("Feminino Crianca"); break; default: System.out.println("outros"); } } }

7.4.2.1. public class switchCase3{ public static void main(String[] args){ String situacao = "inss"; switch(situacao){ case "emprego": case "trabalhando": case "labuta": System.out.println("empregado"); break; case "desempregado": case "seguro desemprego": case "inss": System.out.println("aguardando emprego"); break; default: System.out.println("SEM AVALIACAO"); } } }

7.5. 025 - Desafio dos Dados

7.5.1. import java.util.Scanner; //import java.util.Random; import java.util.*; public class Dados{ public static void main(String[] args){ Scanner entradaPalpite = new Scanner(System.in); System.out.print("Digite o seu palpite: "); String palp = entradaPalpite.nextLine(); // int palpite = entradaPalpite.nextInt(); int palpiteUsuario = Integer.parseInt(palp); Random entradaDado = new Random(); int palpiteDado = entradaDado.nextInt(6)+1; ou (7) //int palpiteDado = Integer.parseInt(entraDado); if(palpiteUsuario <0 || palpiteUsuario >6){ System.out.println("\n\nValor Invalido"); }else if( palpiteDado == palpiteUsuario){ System.out.println("\n\nVoce acertou" +"\nValor do Dado Automatico: " +palpiteDado +"\t"+"\nValor do Palpite Usuario : " +palpiteUsuario); }else{ System.out.println("\n\nVoce ERROU\n" +"Valor do Dado Automatico: " +palpiteDado +"\n"+"Valor do Palpite Usuario : " +palpiteUsuario +"\nVALORES DIFERENTES"); } } }

7.6. 026 - for

7.6.1. 1. public class For{ public static void main(String[] args){ for(int i = 0; i < 3; i++){ System.out.println(i); } } }

7.6.1.1. public class For{ public static void main(String[] args){ String texto = ""; for(int i = 0; i < 20; i++){ if ((i % 2) == 0) texto = texto + i+","; System.out.println(texto); } } }

7.6.2. 2. QUADRADO * FOR public class For{ public static void main(String[] args){ int tamanho = 5; for(int x = 0; x < tamanho; x++){ // 2) Faz a repetição de cada linha do comentario "1)" 5 vezes. System.out.println(); for(int i = 0; i < tamanho; i++){ // 1) Repete o * na mesma linha, em uma linha ***** System.out.print("i*"); } } } }

7.7. 027 - foreach Utilizado para percorrer elementos de um ARRAY ou ARRAYLIST

7.7.1. 1. import java.util.ArrayList; public class For{ public static void main(String[] args){ int [] pares = {2,4,3,8,10}; //FOR TRADICIONAL /*for(int i=0; i < pares.length; i++){ int par = pares[i]; System.out.println(par); }*/ //FOREACH/* PERCORRA CADA ELEMENTO PAR"VARIALVEL" EXISTENTE DENTRO DO ARRAY PARES*/ for(int par : pares) { /*NAO TEM A VARIALVEL i E SOMENTE INCREMENTA, NAO DECREMENTA, POIS NAO TEM O i*/ System.out.println(par); } /*UTILIZANDO O ARRAYLIST COM FOR TRADICIONAL PARA INCLUIR VALORES NO ARRAY*/ ArrayList list = new ArrayList(); for(int i = 0; i < 10; i++){ list.add(i); } for(Integer mostra : list){ System.out.println(mostra); } } }

7.7.1.1. 1. FOR TRADICIONAL public class For2{ public static void main(String[] args){ int[] pares = {2,4,6,8}; for(int i = 0; i < pares.length; i++){ //int par = pares[i]; System.out.println(pares[i]); } } }

7.7.1.2. 2. FOREACH for(int par : pares){ System.out.println(par); }

7.7.1.2.1. 1. ArrayList lista = new ArrayList<>(); for(int i = 1; i < 101; i++){ lista.add(i); }for(int novaLista : lista){ System.out.print(novaLista + ","); }

7.8. 028 - while, do while

7.8.1. 1. WHILE public class WhileDo{ public static void main(String[] args){ int i = 0; while(i < 2){ System.out.println(i); i = i+1; } } }

7.8.2. 2. DO....WHILE public class WhileDo{ public static void main(String[] args){ int i = 3; do{ System.out.println(i); i = i+1; }while( i < 2); } }

7.8.3. 3. Exercícios

7.8.3.1. 1. 1) import java.util.ArrayList; import java.util.Scanner; public class WhileDo{ public static void main(String[] args){ ArrayList produtos = new ArrayList<>(); String fim = "FIM"; Scanner entradaProdutos = new Scanner(System.in); System.out.println("Digite os Produtos: "); String produtosDigitados = entradaProdutos.nextLine(); while(!fim.equals(produtosDigitados) ){ produtos.add(produtosDigitados); System.out.println("Digite os Produtos: "); produtosDigitados = entradaProdutos.nextLine(); System.out.println(produtos.toString()); } }

7.8.3.1.1. 1. 2) Novamente o mesmo exercício de outra visão import java.util.ArrayList; import java.util.Scanner; public class ListaDeProdutos2{ public static void main(String[] args){ ArrayList lista = new ArrayList<>(); String fim = "FIM"; Scanner entrada = new Scanner(System.in); System.out.print("Digite os Produtos da Lista: "); String produtosDigitados = entrada.nextLine(); while (!fim.equals(produtosDigitados)){ lista.add(produtosDigitados); System.out.print("Digite os Produtos da Lista: "); produtosDigitados = entrada.nextLine(); }System.out.println(lista.toString() +"\t Quantidade de Produtos: " +lista.size()); } }

7.9. 029 - Fibonacci

7.9.1. public class Fibo{ public static void main(String[] args){ int anterior = 1; int proximo = 2; System.out.println(anterior); while(proximo < 50){ System.out.println(proximo); proximo = proximo + anterior; anterior = proximo - anterior; } } }

7.9.1.1. http://www.devmedia.com.br/sequencia-de-fibonacci-em-java/23620

7.10. 030 - Label, Break e Continue

7.10.1. São palavras para encerrar um fluxo de Repetição

7.10.1.1. Breaak Encerra todo Loop

7.10.1.1.1. public class Fluxo{ public static void main(String[] args){ while(true) { System.out.println("Entrou Loop Infinito"); break; } } }

7.10.1.1.2. public class Fluxo{ public static void main(String[] args){ for(int i= 0; i < 10; i++) { if (i == 5){ //IF break; } System.out.println(i); } } }

7.10.1.2. Continue Encerra somente a iteração na posição indicada/repetição atual

7.10.1.2.1. public class Fluxo{ public static void main(String[] args){ for(int i= 0; i < 10; i++) { if (i == 5){ //NESTA POSIÇÃO O PROGRAMA "PULA" O 5 E CONTINUA ATE O FINAL. continue; } System.out.println(i); } } }

7.10.1.3. Label -- Rótulo

7.10.1.3.1. public class Fluxo{ public static void main(String[] args){ um: for(int x= 0; x < 10; x++){ //ROTULO UM: System.out.println("For Externo" +x); dois: for(int i= 0; i < 10; i++) { //ROTULO DOIS: if (i == 3){ break um ; } System.out.println("\tInterno For" +i); } } } }

7.10.1.3.2. public class Fluxo{ public static void main(String[] args){ um: for(int x= 0; x < 10; x++){ System.out.println("For Externo" +x); dois: for(int i= 0; i < 10; i++) { if (i == 3){ continue um ; } System.out.println("\tInterno For" +i); } } } }

7.10.1.3.3. PARA O FLUXO EXTERNO O BREAK E CONTINUE PARA OS FLUXOS INTERNOS FO FOR.

8. Aula de 31 a 40

8.1. 031 - AutoBoxing WRAPPER

8.1.1. public class Fluxo{ public static void main(String[] args){ String st1 = "444"; int st11 = Integer.parseInt(st1); st11++; //Desempacotando, Incrementando, reempacotando String st2 = "111"; int st22 = Integer.parseInt(st2); st22++; //Desempacotando, Incrementando, reempacotando int xb = st11 + st22; System.out.println(xb); } }

8.1.1.1. BOXING Encaixotar

8.1.1.2. UNBOXING Desencaixotar

8.2. 032 - IDE Eclipse - Instalação

8.2.1. O que é uma IDE?

8.2.1.1. Ambiente de Desenvolvimento Integrado Integrated Development Everionment

8.2.2. Por que usar IDE?

8.2.3. Por que só agora?

8.2.4. Principais IDEs

8.2.5. Instalação do Eclipse

8.2.5.1. http://www.eclipse.org/downloads/packages/eclipse-classic-422/junosr2

8.3. 033 - IDE Eclipse, Atalhos

8.3.1. ATALHOS DO ECLIPSE IMPORTAR BIBLIOTECAS CTRL + SHIFT + O

8.4. 034 - Orientação a Objetos OO

8.4.1. OBJETOS É a REPRESENTAÇÃO DOS ELEMENTOS DO MUNDO REAL.

8.4.1.1. A CLASSE NÃO É UM OBJETO. É UM ´PROJETO DO OBJETO

8.4.1.1.1. ESSE OBJETO É COMPOSTO DE: ATRIBUTOS / VARIÁVEIS AÇÕES / MÉTODOS

8.4.2. POO

8.4.2.1. CACHORRO Classe É O PROJETO DO SEU OBJETO

8.4.2.1.1. A CLASSE CRIA NOVOS OBJETOS NEW

8.4.2.2. public class Cachorro { //PROJETO CACHORRO int tamanho; String raça; void latir() { System.out.println("Au, Au, Au!!"); } }

8.4.2.2.1. public class CachorroTest { public static void main(String[] args) { Cachorro pitbull = new Cachorro(); pitbull.raça = "Pit Bull"; pitbull.tamanho = 40; pitbull.latir(); Cachorro viralata = new Cachorro(); viralata.raça = "Vira-lata"; viralata.tamanho = 30; viralata.latir(); Cachorro cao = new Cachorro(); cao.latir2(); } }

8.4.2.2.2. O que esse objeto vai representar? CACHORROS O que é que esse objeto conhece de si mesmo? TEM RAÇA E TAMANHO--->Estou definindo os ATRIBUTOS. Que ações/métodos que esse objeto pode fazer/executar? LATIR

8.5. 035 - Pacotes package

8.5.1. Pacote: É uma estrutura de Diretórios onde vc coloca todoas as classes por um determinado assunto Um agrupamento de classes organizadas por uma determinada categoria. O pacato a forma que vc em para modularizar o seu programa.

8.5.2. Devera organizar os seus programas em pacotes

8.5.2.1. Os pacotes ajudam a evitar os conflitos de nomes, classes de outros programas.

8.5.2.1.1. package br.com.eduardodavila.poo;

8.5.3. Os nomes dos pacotes são criados com dominios ao contrario(br.com.eduardodavila)

8.5.3.1. Estrutura de Diretórios onde posso colocar minhas classes.

8.6. 036 - Métodos com Parâmetros

8.6.1. package br.com.eduardodavila.conta; public class Conta { String cliente; double saldo; void exibeSaldo() { System.out.println(cliente + " seu saldo eh: " + saldo); } void saca(double valor) { // ver se tem autorização // se limite do dia não foi ultrapassado // se tem saldo na conta // saldo = saldo - valor; (Vamos Implementar) deduzir do saldo o valor // do saque // atualizar registros do banco // entregar o dinheiro saldo -= valor; } void deposito(double valor) { saldo += valor; } void transferePara(Conta destino, double valor) { this.saca(valor); destino.deposito(valor); } }

8.6.1.1. package br.com.eduardodavila.conta; public class ContaTeste { public static void main(String[] args) { Conta conta = new Conta(); conta.cliente = "Eduardo"; conta.saldo = 10_000.00; conta.exibeSaldo(); /* * conta.saca(1000); conta.exibeSaldo(); conta.deposito(6000); * conta.exibeSaldo(); */ Conta destino = new Conta(); destino.cliente = "Andreia"; destino.saldo = 8000; destino.exibeSaldo(); conta.transferePara(destino, 1550.00); conta.exibeSaldo(); destino.exibeSaldo(); } }

8.7. 037 - Métodos com Retorno

8.7.1. package br.com.eduardodavila.MetodoscomRetorno37; public class Matematica { /** * * @param um * @param dois * @return o maior de dois numeros */ int maior(int um, int dois) { if (um > dois) { return um; } else { return dois; } } double soma(double um, double dois){ //return um + dois; double s = um + dois; return s; } }

8.7.1.1. package br.com.eduardodavila.MetodoscomRetorno37; public class MatematicaTeste { public static void main(String[] args) { Matematica m = new Matematica(); int maiorV = m.maior(10, 20); System.out.println(maiorV); double somaV = m.soma(20, 30); System.out.println(somaV); int maiorPar = m.maior(2, 4); int maiorImpar = m.maior(3, 5); int somaPim = maiorPar + maiorImpar; System.out.println("Maior Par: " + maiorPar + "\tMaior Impar:" + maiorImpar + "\tSoma: " + somaPim); } }

8.8. 038 - Desafio Raiz Quadra com Equação Pell

8.8.1. package br.com.eduardodavila.raiz; public class Raiz { //int teste int conta = 0; int foraT(int teste) { for (int i = 1; i <= teste; i += 2) { //teste -= i; teste = teste - i; conta++; } return conta; } void exib( ) { System.out.println("Raiz quadrada eh :"+conta); } }

8.8.1.1. package br.com.eduardodavila.raiz; public class RaizTeste { public static void main(String[] args) { Raiz calR = new Raiz(); //calR.numDig = ; //calR.exibeNumDig(); calR.foraT(276); calR.exib(); } }

8.8.1.1.1. System.out.println(Math.sqrt(27));

8.9. 039 - Modificadores de Acesso

8.9.1. O método é composto: *Modificadores(public static) *Tipos de retorno(void) *Nome do método(main) *Parâmetro(String[] args)

8.9.1.1. PUBLIC

8.9.1.1.1. private: Na própria classe Restringe acesso a classe de comenados fora da classe.

8.9.2. Outros Modificadores

8.10. 040 - Métodos get e set Encapsulamento

8.10.1. Encapsulamento PROTEGE AS VARIÁVEIS *VAI GARANTIR QUE AS VARIÁVEIS RECEBEM VALORES VALIDOS PARA FUNCIONAR O SEU MÉTODO. *NEGAR RECEBIMENTO DE VALORES DE VARIÁVEIS NEGATIVO(-N).

8.10.1.1. GET significa capturar a variavel.

8.10.1.2. SET permite alteração da variável

8.10.1.3. boolean o método de captura é diferente. private boolean varBolean; public boolean isVarBolean(){ return ativo; } public void setVarBolean(boolean testeBoll){ this.varBolean = testeBoll; }

8.10.2. package br.com.eduardodavila.raiz; public class Funcionario { private String nome; public String getNome() { return nome; } public void setNome(String nome2) { this.nome = nome2; } public void exibe() { System.out.println(nome);} private String sexo; public String getSexo() { return sexo; } public void setSexo(String sex) { this.sexo = sex; } public void exibsexo(){ System.out.println(sexo); } }

8.10.2.1. package br.com.eduardodavila.raiz; public class FuncionarioPacote { public static void main(String[] args) { Funcionario ff = new Funcionario(); // ff.getNome(); // ff.setNome("Edu D"); // //ff.nome = "Eduardo"; // ff.exibe(); // ff.getIdade(); // ff.setIdade(42); // ff.exibId(); // ff.getSalario(); // ff.setSalario(1000); // ff.exibeSalario(); // ff.sexo = "MAsculino"; String sex = ff.getSexo(); ff.setSexo("Masculino"); ff.exibsexo(); } }

9. Aula de 41 a 50

9.1. 041 - Variáveis e Métodos Estáticos

9.1.1. package br.com.eduardodavila.galinha; public class Galinha { public static int ovosDaGranja;//variavel global public int ovos;//total de ovos do objeto galinha public Galinha botar() { this.ovos++; Galinha.ovosDaGranja++; return this; } public static double mediaDeOvos(double mediaGalinha) { return Galinha.ovosDaGranja / mediaGalinha; } }

9.1.1.1. package br.com.eduardodavila.galinha; public class GalinhaTeste { public static void main(String[] args) { Galinha g1 = new Galinha(); g1.botar().botar().botar(); Galinha g2 = new Galinha(); g2.botar().botar(); System.out.println(g1.ovos); System.out.println(g2.ovos); System.out.println(Galinha.ovosDaGranja); System.out.println(Galinha.mediaDeOvos(2)); } } package br.com.eduardodavila.galinha; public class GalinhaTeste { public static void main(String[] args) { Galinha g1 = new Galinha(); g1.botar().botar().botar(); Galinha g2 = new Galinha(); g2.botar().botar(); System.out.println(g1.ovos); System.out.println(g2.ovos); System.out.println(Galinha.ovosDaGranja); System.out.println(Galinha.mediaDeOvos(2)); } }

9.1.2. ATÉ ENTÃO TRABALHAMOS COM, Variáveis e Métodos Locais que pertencem a um Objeto especifico. AGORA VEREMOS MÉTODOS STATICS que sejam compartilhados com objetos do mesmo tipo.

9.2. 042 - VarArgs Argumentos Variáveis

9.2.1. package br.com.eduardodavila.aula42; public class Matematica { double soma(double...numeros){ double listaSoma = 0; for(double n : numeros){ listaSoma += n; }return listaSoma; //double somaT = um + dois; //return somaT; } }

9.2.1.1. package br.com.eduardodavila.aula42; public class MatematicaTeste { public static void main(String[] args) { Matematica somaMath = new Matematica(); double sss = somaMath.soma(11, 9, 1, 1); System.out.println("sss: "+sss); System.out.println(somaMath.soma(10, 20, 1, 1)); } }

9.2.2. package br.com.eduardodavila.aula42; public class Mat2 { double soma(double... numerosX){ double lll=0; for(double lista:numerosX){ lll +=lista; }return lll; } }

9.2.2.1. package br.com.eduardodavila.aula42; public class Mat2Teste { public static void main(String[] args) { Mat2 som = new Mat2(); double kkkk = som.soma(10, 9, 200); System.out.println(kkkk); System.out.println("som.soma: "+som.soma(11, 22, 3000)); } }

9.3. 043 - Métodos Sobrecarregados

9.3.1. Até o momento vimos métodos com nomes diferentes. O método sobrecarregado é quando vários métodos tem o mesmo nome, somente o nome, os métodos são diferentes. O JVM determina quando vc insere os parâmetros"assinaturas" qual o melhor método para retornar o valor.

9.3.1.1. package br.com.eduardodavila.aula42; public class Matematica { double soma(double... numeros) { double listaSoma = 0; for (double n : numeros) { listaSoma += n; } return listaSoma; } double mediaE1(double um, double dois) { double mediaTotal = (um + dois) / 2; return mediaTotal; } double mediaE1(String umString, String doisString) { double converterUm = Double.parseDouble(umString); double converterDois = Double.parseDouble(doisString); double mediaTotal = (converterUm + converterDois) / 2; return mediaTotal; } double mediaE1(double... numeros2) { double var = 0; for (double variasMed : numeros2) { var += variasMed; } return (var / numeros2.length); } }

9.3.1.1.1. package br.com.eduardodavila.aula42; public class MatematicaTeste { public static void main(String[] args) { Matematica aula43 = new Matematica(); double result1 = aula43.mediaE1(10, 3); System.out.println("mediaTotal = (um + dois) / 2: " + result1); Matematica aula43_2 = new Matematica(); double result2 = aula43_2.mediaE1("10", "3"); System.out.println("mediaTotal = (converterUm + converterDois) / 2;: " +result2); Matematica aula43_3 = new Matematica(); double result2_3 = aula43_3.mediaE1(3,1,1,2,3,5,4); System.out.println("return (var / numeros2.length);: " +result2_3); } }

9.3.2. Temos 3 métodos, mediaE1 com o mesmo nome.dependendo dos valores digitados, ele vai procurar, graças aos nomes iguais, mediaE1 qual o método que poderá utilizar.

9.4. 044 - Construtores

9.4.1. São blocos de comandos que são utilizados para inicializar os objetos. Se referindo as variáveis dentro do objeto. Construtor não é um Método.

9.4.1.1. package br.com.eduardodavila.carro; public class Carro { String modelo; int velocidadeMaxima; double segundosZeroACem; public Carro(){ //Não tem retorno } public Carro(String modelo,int velocidadeMaxima,double segundosZeroACem){ //Não tem retorno this.modelo = modelo; this.velocidadeMaxima = velocidadeMaxima; this.segundosZeroACem = segundosZeroACem; } public Carro(String modelo, double segundosZeroACem){ //Não tem retorno this.modelo = modelo ; this.velocidadeMaxima = velocidadeMaxima; this.segundosZeroACem = segundosZeroACem; } }

9.4.1.1.1. package br.com.eduardodavila.carro; public class CarroTeste { public static void main(String[] args) { Carro ferrari = new Carro(); //Forma tradicional do construtor. ferrari.modelo = "Fusca"; ferrari.velocidadeMaxima = 100; ferrari.segundosZeroACem = 60; System.out.println(ferrari.modelo + "\t"+ferrari.velocidadeMaxima +"\t"+ferrari.segundosZeroACem); Carro bugre = new Carro("Bugre",110,80 ); System.out.println(bugre.modelo+"\t"+bugre.velocidadeMaxima+"\t"+bugre.segundosZeroACem); Carro nada = new Carro("",100,10); System.out.println(nada.modelo+"\t"+nada.velocidadeMaxima+"\t"+nada.segundosZeroACem); } }

9.5. 045 - Relacionamento tem um, Composição

9.5.1. package br.com.eduardodavila.carro; public class Carro { String modelo; int velocidadeMaxima; double segundosZeroACem; Motor motor; Motorzinho tozinho; public Carro(){ //Não tem retorno } public Carro(String modelo,int velocidadeMaxima,double segundosZeroACem){ //Não tem retorno this.modelo = modelo; this.velocidadeMaxima = velocidadeMaxima; this.segundosZeroACem = segundosZeroACem; } /*public Carro(String modelo, double segundosZeroACem){ //Não tem retorno this.modelo = modelo ; this.velocidadeMaxima = velocidadeMaxima; this.segundosZeroACem = segundosZeroACem; }*/ }

9.5.1.1. package br.com.eduardodavila.carro; public class Motor { String tipo; int potencia; }

9.5.1.1.1. package br.com.eduardodavila.carro; public class CarroTeste { public static void main(String[] args) { Carro ferrari = new Carro(); //Forma tradicional do construtor. ferrari.modelo = "Fusca"; ferrari.velocidadeMaxima = 100; ferrari.segundosZeroACem = 60; Motor v12 = new Motor(); v12.tipo = "V12"; v12.potencia = 600; // ferrari.motor = v12; //ferrari.motor = v12; System.out.println(ferrari.modelo + "\t"+ferrari.velocidadeMaxima +"\t"+ferrari.segundosZeroACem +"\t"+v12.tipo+"\t"+v12.potencia ); /* Carro nada = new Carro("",100,10); System.out.println(nada.modelo+"\t"+nada.velocidadeMaxima+"\t"+nada.segundosZeroACem);*/ } }

9.6. 046 - Enumeração enum Constantes

9.6.1. static = Modificador. Sejam de escopo global

9.6.2. ENUM Foram construidas para criação constantic STATIC E FINAL , criar conjunto de constantes.

9.7. Herança

9.7.1. 1. Herança em Java - o que é, para que serve, exemplos e quando usar Chegamos em um ponto muito importante em nosso curso de Java no que se refere a Programação Orientada a Objetos. Herança é uma das maiores características desse tipo tão importante e usado tipo de programação. Através desse recurso, você irá criar classes de uma maneira bem mais rápida, eficiente e fácil de manter: baseando classes em outras. O que é herança em Java - Superclasse e subclasse O que é herança, na vida real? É quando um pessoa deixa seus bens para outra. No Java também. Geralmente a herança ocorre dentre membros de uma mesma família. No Java também. Herança, em Java, nada mais é do que criar classes usando outras classes já existentes. Obviamente, você vai fazer uma classe herdar as características de outra se estas tiverem uma relação (se forem parecidas). Outro ponto importante é que, quando fazemos uso da herança, nós podemos adicionar mais atributos a classe. Exemplo 1: Carros e motos Imagine que você tem uma revenda de veículos: carros e motos. Todos são veículos. Ora, crie a classe "Veiculo". O que esses veículos tem em comum? Motor, preço, marca, nome do cliente que vai comprar, quantos quilômetros fazem com 1 litro de combustível etc. Todos os objetos da classe "Veiculo" tem essas características. Porém, existem algumas características que as motos tem que um carro não tem: capacete, somente duas rodas, cilindrada etc. Também existem características que os carros tem que as motos não tem: podem ter 4 portos, banco de couro, ar-condicionado etc. Para resolver esse problema, e deixar a aplicação MUITO MAIS ORGANIZADA, vamos fazer duas classes: "Moto" e "Carro". Cada uma dessas irá herdar a classe "Veiculo", pois também são um tipo de veículos. Dizemos que "Veiculo" é a superclasse, "Moto" e "Carro" são subclasses. Faz sentido, não?

9.7.1.1. 1. Exemplo 2: Alunos de uma escola Se for criar uma aplicação para um colégio, muito provavelmente você vai criar uma classe chamada "Aluno". O que todo aluno tem em comum, para colocarmos nessa classe? Tem seu nome, cursa uma série, tem seu número de matrícula etc. Mas um aluno do 2o grau tem matérias como Física, Biologia e Química. Coisa que aluno do ensino fundamental não tem. Ou seja, se você tentar criar uma classe e colocar as matérias Física, Química e Biologia para um aluno que não cursa essas matérias, estará tendo problemas, pois muito provavelmente você deveria preencher as notas e faltas dessas matérias no construtor. E pra calcular a média? A média inclui todas as matérias, ora. Mas os alunos de uma escola não tem as mesmas disciplinas. E agora? Criar vários métodos diferentes dentro da classe, e acionar o método certo para o cálculo da média através de um booleano? Claro que não! Vamos criar outras classes: "fundamental" e "medio". A nossa classe mãe - ou superclasse - será a "Aluno", com dados e disciplinas QUE TODOS os alunos possuem em comum. Fazemos "fundamental" e "medio" herdarem as características da "Aluno", e dentro de cada subclasse (ou classe filha) dessas irá ter seus métodos e variáveis a mais. Note que, ao herdar, você é mais eficiente, pois não precisa criar duas classes de alunos diferentes. Ao herdar, automaticamente as subclasses irão possuir as mesmas variáveis e métodos.

9.7.1.1.1. 1. Exemplo 3: Funcionários de uma empresa Ok, você já sabe que os funcionários da tesouraria, do suporte técnico e do alto escalão são diferentes, fazem diferentes tarefas e tem diferentes características profissional. Então você cria uma classe para cada tipo de setor: "FuncionarioTesouraria", "FuncionarioSecretaria", "FuncionarioTI" etc. Uma trabalheira...ao término disso tudo, terá dezenas de classes só para representar os funcionários. Porém, as redes sociais, como Facebook e Twitter estão muito na moda e são usadas, inclusive, em meios profissionais. Sabia que as empresas olham o facebook de um candidato ao emprego antes de contratar? Então seu chefe pediu para você adicionar o campo "Facebook" no registro de cada funcionário. Nossa! E agora? Vai em cada uma das dezenas de classes, adicionar esse campo? Agora não vai mais, pois aprendeu sobre herança aqui no Java Progressivo (e de graça, que bom hein?). Uma boa solução seria criar a superclasse "Funcionario", com dados que TODOS os funcionários possuem: idade, nome, salário, setor que trabalha etc. Qual a vantagem disso? Ora, se você adicionar o campo "facebook" na classe "Funcionario", todas as subclasses passarão a ter esse campo! Pois todas as subclasses (Tesouraria, Secretaria, TI...) são também classes do tipo "Funcionario". Notou a importância e a mão-na-roda que é herança? Quando e como saber que é hora de usar herança em Java - Relação 'é um' Para saber quando usar, e detectar o uso de herança, use a relação 'é um'. Nos exemplos anteriores: "Moto" é um "Veiculo", e "Carro" é um "Veículo". "alunoMedio" é um "Aluno", assim como "alunoFundamental" é um "Aluno". "FuncionarioTesouraria" é um "Funcionario" e também "FuncionarioTI" é um "Funcionario". Bem simples e óbvio, não? Essa é a vantagem do Java e da programação orientada a objetos(POO). POO é uma imitação do mundo real.

9.8. 047 - Herança extends

9.8.1. Imagem1

9.8.1.1. Imagem2

9.8.1.1.1. Imagem3

9.8.2. package heranca; public class Animal { double peso; String comida; void dormir(){System.out.println("Dormiu");} void fazerBarulho(){ System.out.println("Fazer Barulho"); } }

9.8.2.1. package heranca; public class Cachorro extends Animal{ }

9.8.2.2. package heranca; public class Galinha extends Animal{ }

9.8.2.3. package heranca; public class AnimalTeste { public static void main(String[] args) { Cachorro toto = new Cachorro(); toto.comida="Carne"; toto.dormir(); Galinha carijo = new Galinha(); carijo.comida="Milho"; carijo.dormir(); } }

9.9. 048 - Heranca e Construtor super

9.9.1. Um construtor chamando outro construtor

9.9.1.1. public Animal(double peso,String comida){ this.peso=peso; this.comida=comida; }

9.9.1.1.1. public Animal(){ this(0,null); } public Animal(double peso,String comida){ this.peso=peso; this.comida=comida; }

9.9.1.2. Quando criamos um novo Construtor(public Animal(double peso,String comida){ this.peso=peso; this.comida=comida;), o construtor padrão( public Animal(){ } ) é desativado. As classes que são EXTENDS(public class Cachorro extends Animal) e(public class Galinha extends Animal) não conseguem visualizar o novo construtor. Mostra mensagem de erro.

9.9.1.2.1. Para que as Classes possam utilizar o novo Construtor pode utilizar duas formas:

9.9.2. System.out.println(toto instanceof Cachorro); System.out.println(toto instanceof Animal);

9.9.3. public class Animal extends Object { double peso; String comida; protected int serial; /* public Animal(){ System.out.println("TESTANDO CONSTRUTOR ANIMAL"); }*/ public Animal(){ this(0,null); } public Animal(double peso,String comida){ this.peso=peso; this.comida=comida; } void fazerBarulho(){System.out.println("Fazer Barulho");} void dormir(){System.out.println("Dormiu");} }

9.9.3.1. 1. public class Cachorro extends Animal{ double peso; public Cachorro(){ super(30,"Carne"); } /*public Cachorro(){ System.out.println("TESTANDO CONSTRUTOR cachorro"); }*/ }

9.9.3.1.1. 1. public class Galinha extends Animal{ public Galinha(){ super(100,"Milho"); } }

9.10. 049 - Polimorfismo, Sobrescrita de Métodos

9.10.1. //SUPER CLASSE package Bichos; public abstract class Animal { protected String nome; protected int numeroPatas; public abstract void som(); }

9.10.1.1. 1. package Bichos; public class Vaca extends Animal { public Vaca(){ this.nome = "Vaca"; this.numeroPatas = 4; } @Override public void som(){ System.out.println("A "+this.nome + " que tem "+this.numeroPatas+" patas, faz MUUUUU!"); } }

9.10.1.2. 2. package Bichos; public class Gato extends Animal{ public Gato(){ this.nome="Gato"; this.numeroPatas = 4; } @Override public void som(){ System.out.println("O "+this.nome + " que tem "+this.numeroPatas+" patas, faz MIAUUUUU!"); } }

9.10.1.3. 3. package Bichos; public class Carneiro extends Animal{ public Carneiro(){ this.nome="Carneiro"; this.numeroPatas=4; } @Override public void som(){ System.out.println("O "+this.nome + " que tem "+this.numeroPatas+" patas, faz MEEEMEEEMEEE!"); } }

9.10.1.4. 4. package Bichos; public class Calopsita extends Animal{ public Calopsita(){ this.nome="Calopsita"; this.numeroPatas=2; } @Override public void som(){ System.out.println("O "+this.nome + " que tem "+this.numeroPatas+" patas, faz PIU PIU!"); } }

9.10.1.5. package Bichos; public class AnimalTeste { public static void main(String[] args) { Vaca vaca=new Vaca(); vaca.som(); Gato gato=new Gato(); gato.som(); Carneiro carneiro=new Carneiro(); carneiro.som(); Calopsita calopsita=new Calopsita(); calopsita.som(); } }

9.11. 050 - Polimorfismo, Classes abstract

9.11.1. //SUPER CLASSE ABSTRATA package heranca; public abstract class Animal { double peso; String comida; void dormir(){System.out.println("Dormiu");} abstract void fazerBarulho(); }

9.11.2. package heranca; public class Cachorro extends Animal{ @Override void fazerBarulho(){ System.out.println("Au Au!"); } }

9.11.3. package heranca; public class Galinha extends Animal{ @Override void fazerBarulho(){ System.out.println("Có Có"); } }

9.11.4. package heranca; public class AnimalTeste { public static void main(String[] args) { Cachorro toto = new Cachorro(); toto.fazerBarulho(); toto.dormir(); System.out.println(); Galinha carijo = new Galinha(); carijo.fazerBarulho(); carijo.dormir(); } }

10. Métodos da classe Object:

10.1. getClass() Esse método retorna informações do objeto atual, como o package e o nome da classe. Muito importante caso você tenha vários tipos de objeto, onde um herda do outro etc. Ele vai retornar o nome da classe que objeto foi criado, e não sua superclasse.

10.2. clone() Retorna uma referência - ou cópia - de um objeto. Você deve implementar esse método conforme sua necessidade. Para uma cópia total, você deve implementar a cópia de cada variável corretamente. Veja sobre a interface Cloneable: http://docs.oracle.com/javase/7/docs/api/java/lang/Cloneable.html No exemplo ao final do artigo, fizemos um @Override do método para que ele retorne uma referência objeto que queremos copiar. Pode usar tanto: Object copia = original.clone() Ou: NomeDaClasse copia = (NomeDaClasse) original.clone(); Mais informações em: http://en.wikipedia.org/wiki/Clone_(Java_method)

10.3. toString() Retorna uma string com a package, nome da classe e um hexadecimal que representa o objeto em questão.

10.4. equals(Object obj) Faz a comparação entre dois Objects, e retorna true se os objetos forem o mesmo, e false se não forem o mesmo. É útil para saber se dois objetos apontam para o mesmo local na memória.

10.5. hashCode() Esse método retorna um inteiro único de cada objeto, muito usado em Collections. Falaremos mais dele nos artigos sobre coleções, em breve. Veja sobre HashMap: http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html O hashCode tem uma ligação com o método equals(), conforme você pode ver no exemplo dado, lá embaixo. É bastante útil quando trabalhamos com arquivos, para agilizar buscas e comparações.

10.6. Outros métodos: Veja a documentação da classe Object: http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html

11. Aula de 51 a 60

11.1. JAVA - 051 - Polimorfismo, Classes final

11.1.1. package heranca; public abstract class Animal { double peso; String comida; void dormir(){System.out.println("Dormiu");} /* final*/ void fazerBarulho(){ } }

11.1.2. package heranca; public class Cachorro extends Animal{ @Override void dormir(){System.out.println("Dormiu e Muito");} /*final*/ void comer(){ } @Override void fazerBarulho(){ System.out.println("Au Au!"); } }

11.1.3. package heranca; public class Pitbull extends Cachorro{ @Override public void comer (){System.out.println("milho de Pipoca");} @Override void fazerBarulho(){ System.out.println("AUAUAUAUA PITIBULL!"); } }

11.2. 052 - Polimorfismo, Interfaces