SlideShare une entreprise Scribd logo
1  sur  385
Guia de Estudos paraSun Certified Java Associate (SCJA) Prof. Rafael Guimarães Sakurai 12/2009 1
Quem sou? Rafael Guimarães Sakurai (rafael.sakurai@metodista.br) Possui graduação em Ciência da Computação pela Universidade Metodista de São Paulo (2005), especialista em Engenharia de Componentes com Java Enterprise e Webservices pela Faculdade de Informática e Administração Paulista (2007). Atualmente é analista desenvolvedor de software da Virginia Surety e docente na Universidade Metodista de São Paulo. Tem experiência na área de Ciência da Computação, com ênfase em Linguagens de Programação. Possui as seguintes certificações: SCJA 1.0, SCJP 5.0, SCWCD 1.4 e SCSNI. 2 Guia de Estudos para SCJA
Agenda 1º Dia – Apresentação do curso  		     Conceitos basicos de Orientação a Objetos. 2º Dia – UML e implementação Java 3º Dia – Implementação Java (continuação) 4º Dia – Implementação de algoritmos 		     Principios básicos de desenvolvimento Java 5º Dia – Plataforma Java e tecnologias de integração 		     Tecnologia cliente 6º Dia – Tecnologia servidor e simulado 3 Guia de Estudos para SCJA
Detalhes Número de Questões: 51 Score: 68% (35 de 51 questões) Tempo: 115 minutos 4 Guia de Estudos para SCJA
Sun Academic Initiative Site (https://sailearningconnection.skillport.com) Vantagens: Cursos Materiais Simulados Desconto no voucher 5 Guia de Estudos para SCJA
Objetivos do exame 1- Conceitos básicos Orientados a Objetos (OO) 2- Representação UML de conceitos OO 3- Implementação Java de conceitos OO 4- Projeto e implementação de algoritmos 5- Princípios básicos do desenvolvimento em Java 6- Plataforma Java e tecnologias de integração 7- Tecnologias de cliente 8- Tecnologias de servidor 6 Guia de Estudos para SCJA
1- Conceitos Básicos Orientados a Objetos 7
1.1- Descrever, comparar e contrastar primitivas (número inteiro, ponto flutuante, booleano e caractere), tipos de enumeração e objetos. 8
Tipos Primitivos Os tipos primitivos são representações de dados/valores básicos. Todos são representados por letras minúsculas e estão divididos nos seguintes tipos: Número Inteiro Número com Ponto Flutuante Caractere Booleano 9 Guia de Estudos para SCJA
Tipos Inteiros Representam números inteiros em forma decimal, hexadecimal ou octal. 	                  Recomendado quando o número é muito grande,  	                 capaz de armazenar 64 bits                          Tipo inteiro mais utilizado, capaz de armazenar 32 bits                         Valor numérico capaz de armazenar 16 bits                   Utilizado para representar números pequenos, no intervalo de -128 e 127,                    capaz de armazenar 8 bits   10 Guia de Estudos para SCJA
Tipos Inteiros ,[object Object]
byte:0, 1, 2
short:1, 20, 100
int:10, 100, 2000000
long:1000, 21234300000, 5609800125811 11 Guia de Estudos para SCJA
Tipos de Ponto Flutuante Representam valores reais, ou seja, com parte fracionária. ,[object Object]
float:1.99, 13.14, 100.45
double:1500.27, 409673.90, 12935878423.09667512 Guia de Estudos para SCJA
Tipo Caractere Representa um único caractere incluindo letras, números, caracteres especiais e outros, denominado char. Exemplos: char: a, b, c, 4, $, & 13 13 Guia de Estudos para SCJA
Tipo Booleano Representa o valor lógico true(verdadeiro)oufalse(falso), denominado boolean. Exemplos: boolean:true, false 14 Guia de Estudos para SCJA
Enumeração Tipo de classe com valores pré-definidos, ou seja, possui valores padrões previamente estabelecidos. Exemplo: public enumDiaSemana {     SEGUNDA-FEIRA,     TERÇA-FEIRA,     QUARTA-FEIRA,     QUINTA-FEIRA,     SEXTA-FEIRA,     SÁBADO,     DOMINGO } 15 15 Guia de Estudos para SCJA
Objeto Características + Ações = Objeto 16 Guia de Estudos para SCJA
Objeto Um objeto é a representação de um conjunto de características e funcionalidades para representar algo do mundo real.  Podemos por exemplo representar pessoas como objetos, onde cada pessoa terá suas características próprias como nome, data de nascimento, documento de identidade e outros. Também podemos representar as ações que uma objeto que é uma pessoa pode ter, como por exemplo andar, pensar, falar e outros. Na OO as características são chamados de atributos e as ações são chamadas de métodos, onde todos os objetos do mesmo tipo possuem os mesmos métodos, mas cada um pode ter seus atributos com valores diferentes (estado). 17 Guia de Estudos para SCJA
Objeto A partir de um modelo ou forma que define os atributos e métodos dos objetos podemos criar vários objetos cada um com um estado diferente: Objetos com diferentes estados Modelo 18 Guia de Estudos para SCJA
1.2 - Descrever, comparar e contrastar classes concretas, classes abstratas e interfaces, e como a herança é aplicada a elas. 19
Classe Uma Classe define quais as características (atributos) e ações (métodos) para representar as “coisas” do mundo real, podemos dizer que uma classe é um modelo ou forma que define como devem ser os objetos. Os atributos de uma classe podem ser de tipos primitivos, enumerações ou outro objeto. Os métodos de uma classe vão representar as ações que aquela classe pode ter, dependendo do estado dos atributos os métodos podem executar de formas diferentes. 20 Guia de Estudos para SCJA
Classe Concreta ,[object Object]
Exemplo:publicclass Aluno { public String nome; public String matricula; public Aluno() { } public Aluno(String _nome, String _matricula) {         nome = _nome;         matricula = _matricula;     } } 21 Guia de Estudos para SCJA
Classe Abstrata ,[object Object]
A partir das classes abstratas não podemos instanciar objetos, pois ela pode ter métodos que não estão implementados.
Exemplo:publicabstractclass Pessoa { public String nome;     public void dizerNome() { System.out.println("Meunome é:" + nome);     }     public void estudar(); } 22 Guia de Estudos para SCJA
Interface ,[object Object]
Exemplo:publicinterface Transporte { publicvoidentrarPessoa(Pessoa pessoa);     public void sairPessoa(Pessoa pessoa);     public void transportarPara(String localidade); } 23 Guia de Estudos para SCJA
Interface 24 Guia de Estudos para SCJA
Generalizando Interface 25 Guia de Estudos para SCJA
Implementando mais de uma Interface 26 Guia de Estudos para SCJA
Herança Visando a reutilização de código, a herança permite que classes herdem atributos e métodos de outras classes. É utilizada em objetos que possuem características e funcionalidades semelhantes. publicclass Pessoa { private String nome;     public void setNome(String nome) { this.nome = nome;}     public String getNome() { return this.nome; } } publicclass Programador extends Pessoa { publicvoiddizerProfissao() { return "Meu nome eh " + getNome() + " eu sou Programador."     } } 27 Guia de Estudos para SCJA
Herança 28 Guia de Estudos para SCJA
1.3 - Descrever, comparar e contrastar composições e associações (incluindo multiplicidade: um-para-um, um-para-vários e vários-para-vários) de classes, bem como a navegação de associações. 29
Associação Associação é quando uma classe pode utilizar uma outra classe, por exemplo, um cliente possui um endereço. A associação define que uma classe está relacionada com outra classe, mas elas podem ser utilizadas independente. publicclass Cliente { public String nome; publicEnderecoendereco; } publicclassEndereco { public String estado; public String cidade; public String bairro; public String logradouro; } 30 30 Guia de Estudos para SCJA
Composição Composição é quando uma classe depende de outra classe para poder existir, por exemplo, um estado possui varias cidades. Caso apaguem um estado do mapa, as cidades dele não devem continuar existindo. publicclass Cidade { public String nome; } publicclass Estado { public Cidade[] cidades; } 31 Guia de Estudos para SCJA
Multiplicidade Um-para-um Um logradouro pode ter apenas um CEP. Um-para-vários Exemplo: Um carro tem quatro pneus. Vários-para-vários Um programador pode trabalhar em vários projetos, e um projeto pode ter vários programadores. 32 Guia de Estudos para SCJA
Navegação Navegação informa qual a direção do relacionamento entre duas classes. Neste exemplo através da classe Produto podemos chegar até a classe Modelo. 33 Guia de Estudos para SCJA publicclass Modelo { public String nome; } publicclass Produto { public Modelo modelo;     public ModelogetModelo() {         return this.modelo;     } }
1.4 - Descrever a ocultação de informações (usando métodos e atributos privados), o encapsulamento e a funcionalidade de exposição de objetos usando métodos públicos; e descrever as convenções de JavaBeans para os métodos setter e getter. 34
Ocultação de informações Quando queremos restringir o acesso a atributos e métodos dentro de uma classe, podemos definir sua visibilidade como privada utilizando a palavra-chave private, desta forma somente dentro da própria classe podem ser alterados os valores de um atributo ou chamado um método. 35 Guia de Estudos para SCJA
Encapsulamento Quando temos uma classe com seus atributos com visibilidade publica, esses atributos podem ser alterados a qualquer momento por qualquer outra classe. 36 Guia de Estudos para SCJA nome matricula
Encapsulamento ,[object Object],37 Guia de Estudos para SCJA
Encapsulamento Definindo os atributos como privados e criando métodos públicos para manipulação desses atributos podemos então restringir  a manipulação desorganizada. 38 Guia de Estudos para SCJA Método Privado Método Público nome matricula Método Público Método Privado
Exemplo encapsulamento publicclass Aluno { private String nome; privateint matricula; publicvoidsetNome(String _nome) {         nome = _nome;     } public String getNome() { return nome;     } publicvoidsetMatricula(int _matricula) {         matricula = _matricula;     } publicintgetMatricula() { return matricula;     } } 39 Guia de Estudos para SCJA
Convenções Javabeans As convenções Javabeans são boas práticas de programação que definem como devem ser criadas as classes, normalmente essas convenções são seguidas pelos desenvolvedores Java. Nomes de classes são escritos com a primeira letra de cada palavra em maiúsculo. Possuir um construtor padrão (default) Todos os atributos são privados (private) Os atributos são escritos com letras minúsculas, a menos que ele seja composto por mais de uma palavra, a primeira palavra é toda em minúscula e as demais começam com a primeira letra em maiúsculo e o restante da palavra em minúscula. Todos os atributos devem ser acessíveis através de métodos “get” e “set”.  Nomes de métodos seguem o mesmo padrão de escrita que atributos. 40 Guia de Estudos para SCJA
Convenções Javabeans Exemplo: Precisamos desenvolver uma classe para representar um produto que pode ter as informações nome, data de validade, preço e ativo. publicclass Produto { private String nome; private String marca; private Date dataValidade; privatedoublepreco; privateboolean ativo; publicvoidsetNome(String nome) { this.nome = nome;     } public String getNome() { returnthis.nome;     } publicvoidsetDataValidade(Date dataValidade) { this.dataValidade = dataValidade;     } 41 Guia de Estudos para SCJA
Convenções Javabeans public Date getDataValidade() { returnthis.dataValidade;      } publicvoidsetPreco(doublepreco) { this.preco = preco;     } publicdoublegetPreco() { returnthis.preco;      } publicvoidsetAtivo(boolean ativo) { this.ativo = ativo;     } publicbooleangetAtivo() { returnthis.ativo;     }     // Quando é boolean podemos usar get ou is publicbooleanisAtivo() { returnthis.ativo;     } } 42 Guia de Estudos para SCJA
1.5 - DESCREVER O POLIMORFISMO CONFORME APLICADO A CLASSES E INTERFACES, BEM COMO DESCREVER E APLICAR O PRINCÍPIO "PROGRAMA PARA UMA INTERFACE". 43
Polimorfismo O termo polimorfismo vem do grego que significa “muitas formas”. Na Orientação a Objetos o polimorfismo é a forma de representar um objeto de varias formas. Podemos aplicar o polimorfismo quando temos uma estrutura de herança de classes (subclasse e superclasse) ou com estrutura de implementação de interface. 44 Guia de Estudos para SCJA
Polimorfismo Neste exemplo podemos representar o CarroVoador como um Aereo ou como um Terrestre, pois o CarroVoador segue essas interfaces e tem implementado as funcionalidades que estão definidos nelas. Da mesma forma podemos representar o CarroVoador como um Transporte. 45 Guia de Estudos para SCJA
Programe para uma interface “Programe para uma interface” deve ser entendido como “Programe para um supertipo” dessa forma podemos: Generalizar o tipo de retorno de método Generalizar o tipo de um atributo Generalizar os parâmetros de método 46 Guia de Estudos para SCJA
2- Representação UML de Conceitos Orientados a Objetos 47
UnifiedModelingLanguage (UML) Definição: “É uma família de notações gráficas, apoiada por um metamodelo único, que ajuda na descrição e no projeto de sistemas de software, particularmente daqueles construídos utilizando o estilo orientado a objetos.” Martin Fowler  48 Guia de Estudos para SCJA
2.1 - Reconhecer a representação UML de classes (incluindo atributos e operações, classes abstratas e interfaces), a representação UML de herança (implementação e interface) e a representação UML de modificadores da visibilidade dos membros da classe (-/privada e +/pública). 49
Estrutura da Classe Uma classe em UML possui três partes: Nome da Classe Atributos Operações Podemos abreviar a declaração da classe, caso não influencie o entendimento do diagrama: 50 Guia de Estudos para SCJA
Atributos Um atributo é formado por: visibilidade nome : tipo [multiplicidade] = valor inicial {propriedades} 51 Guia de Estudos para SCJA
Operações Uma operação é formada por: visibilidade nome (parâmetros) : tipo de retorno {propriedades} O parâmetro de um método é formado por: nome : tipo [multiplicidade] = valor inicial 52 Guia de Estudos para SCJA
Herança Utilizamos herança quando queremos declarar subclasses, permitindo reutilizar os códigos já declarados na superclasse. 53 Guia de Estudos para SCJA
Classe Abstrata Utilizado para informar que uma classe não implementa todos os seus métodos. 54 Guia de Estudos para SCJA
Interface Utilizamos interface para definir as operações básicas que uma classe de seu tipo precisa implementar. ou 55 Guia de Estudos para SCJA
Interface Exemplo: 56 Guia de Estudos para SCJA
Visibilidade Podemos definir as seguintes visibilidades em atributos e operações: -private ~		default #protected +		public 57 Guia de Estudos para SCJA
Comentário Os comentários ou notas são utilizados para adicionar mais informações ao diagrama. 58 Guia de Estudos para SCJA
Pacote Utilizamos para organizar as classes: 59 Guia de Estudos para SCJA
2.2 - Reconhecer a representação UML de associações de classes, composições, indicadores de multiplicidade de associação e indicadores de navegação de associações. 60
Associações Utilizado para representar o relacionamento entre classes, as associações podem ser: Associação Agregação Composição Classe de associação As classes que fazem parte de um relacionamento também são chamadas de TODO (responsável pelo relacionamento) e PARTE (usado pelo relacionamento). 61 Guia de Estudos para SCJA
Associação Relacionamento simples entre duas classes: 62 Guia de Estudos para SCJA
Agregação Informa que uma classe faz parte de outra classe, mas não de forma exclusiva. 63 Guia de Estudos para SCJA
Composição Informa que uma classe faz parte de outra classe de forma exclusiva. 64 Guia de Estudos para SCJA
Agregação x Composição A diferença entre ambos é: Agregação – se excluir a classe responsável pelo relacionamento, não deve excluir a classe que ele possui relacionamento. Composição – se excluir a classe responsável pelo relacionamento, então deve excluir a classe que ele possui relacionamento. 65 Guia de Estudos para SCJA
Associação Podemos também ter uma associação para mesma classe: 66 Guia de Estudos para SCJA
Navegabilidade Podemos informar qual a direção do relacionamento: 67 Guia de Estudos para SCJA
Multiplicidade A multiplicidade é utilizada para definir a quantidade de objetos devem ser criados: 0 .. 1 (zero ou um) 1 (um) * (zero ou muitos) 68 Guia de Estudos para SCJA
Dependência Utilizado para informar que uma classe depende de outra classe para executar alguma operação: Palavras - chave de dependência: <<call>> <<create>> <<dependency>> <<use>> 69 Guia de Estudos para SCJA
Associação x Dependência A diferença básica entre ambos: Associação temos um atributo da classe relacionada. Dependência utilizamos a classe relacionada, para passar um parâmetro, chamar um método, criar um objeto, etc. 70 Guia de Estudos para SCJA
Diagrama de Classes 71 Guia de Estudos para SCJA
3- Implementação Java de Conceitos Orientados a Objetos 72
A linguagem Java ,[object Object]
1995 – Divulgação do Java 1.0 – SunWorld
1998 – Lançamento da versão 1.2 – Java 2Versão 1.3 e 1.4 - Java 2 ,[object Object]
2006 – Lançamento da versão 1.6 – Java 6 – Mustang
JCP (Java CommunityProcess) – Diversas empresas responsáveis pelo Java.73 Guia de Estudos para SCJA
A linguagem Java Os conceitos chaves da linguagem Java são: Programação Orientada a Objetos Independente de plataforma Seguro Distribuído Multi-thread O tema principal do Java é “escreva uma vez, rode em qualquer lugar” (writeonce, runanywhere). 74 Guia de Estudos para SCJA
JRE x JDK Há dois principais produtos dentro da plataforma Java SE:  - Java RuntimeEnvironment (JRE)‏ Fornece a Java Virtual Machine, bibliotecas Java e outros componentes para executar aplicações escritas em Java. - Java Development Kit (JDK) Contém tudo que tem na JRE, mais ferramentas adicionais para criar Java Archive (JAR) e desenvolver (compilar e depurar) aplicações feitas em Java. 75 Guia de Estudos para SCJA
Java Virtual Machine (JVM) A Java Virtual Machine é uma maquina imaginaria que é implementada através da emulação em software. Existe uma JVM diferente para cada Sistema Operacional. Uma vez que sua aplicação é criada, a mesma pode ser executada em diversos Sistemas Operacionais sem precisar recompilar. 76 Guia de Estudos para SCJA .java .classbytecode JVM JVM JVM Linux Windows Outros
Compilando e executando um arquivo java Fases da programação Java: Editor Java Compiler Java Interpreter PrimeiraClasse.class PrimeiraClasse.java 77 Guia de Estudos para SCJA
Criando um arquivo .java Crie um arquivo com a extensão .java com o seguinte código: 78 /**  * Exemplo de uma classe simples em Java.  */ public class PrimeiraClasse {     public static void main(String[] args) {         System.out.println("Hello world !!!");     } } Guia de Estudos para SCJA
Compilando um arquivo .java A aplicação javac é responsável por compilar o arquivo .java. Após a execução deste comando, um arquivo com a extensão .class contendo bytecode Java será criado em disco, com o seguinte nome: PrimeiraClasse.class. A aplicação java é utilizada para executar um arquivo .class. 79 Guia de Estudos para SCJA
Comentário em Java // -> Comentário de uma única linha   /* Comentário longo com mais     de uma linha */   /** *Javadoc * @author Rafael Guimarães Sakurai */ 80 Guia de Estudos para SCJA
Comentário em Java 81 /** * Classe utilizada para demonstrar o uso de comentários. * * Depois que uma classe Java é compilada, os comentários não vão * para os códigos compilados .class, dessa forma os comentários * não interferem no tamanho final do projeto. *  * @author Rafael Guimarães Sakurai */ public class ExemploComentario {     public static void main(String[] args) { //Imprime uma mensagem para o usuario.         System.out.println("Demonstrando o uso dos comentarios."); /* Podemos utilizar esta forma quando queremos escrever um            comentário mais longo para exemplicar o código. */     } } Guia de Estudos para SCJA
Palavras-chave da linguagem Java 82 Guia de Estudos para SCJA
3.1 - Desenvolver código que utilize primitivas, tipos de enumeração e referências a objetos, e reconhecer literais desses tipos. 83
Tipos Primitivos Uma variável é a forma de representar valores primitivos ou objetos:   Variáveis primitivas: podem ser do tipo byte, short, int, long, float, double, char ou boolean. Variáveis de referência: usada para referenciar um objeto. Quando usamos uma variável de referencia definimos qual o tipo do objeto ou um subtipo do tipo do objeto (veremos isso mais para frente). 84 Guia de Estudos para SCJA
Lista de Tipos Primitivos 85 Guia de Estudos para SCJA
Tipos Inteiros (byte, short, int, long) Tipos inteiros trabalham apenas com números inteiros, positivos ou negativos. Os valores podem ser representados nas bases octal, decimal e hexadecimal. Inteiro em octal 	Qualquer valor escrito utilizando números de 0 a 7 começando com 0 é um valor na base octal, exemplo:   short s = 010; 	// Equivale ao valor 8 em decimal. int i = 025; 		// Equivale ao valor 21 em decimal. 86 Guia de Estudos para SCJA
Tipos Inteiros (byte, short, int, long) Inteiro em decimal 	Qualquer valor escrito utilizando números de 0 a 9 é um valor decimal, este é o tipo de representação mais comum, pois é utilizada no dia a dia, exemplo: int i = 9; long b = 9871342132; 87 Guia de Estudos para SCJA
Tipos Inteiros (byte, short, int, long) Inteiro em hexadecimal 	Qualquer valor escrito utilizando números de 0 a 9 e A a F começando com 0x ou 0X é um valor hexadecimal, exemplo:   long a = OxCAFE; 	// Equivale ao valor 51966 em decimal int b = 0X14a3;	// Equivale ao valor 5283 em decimal 88 Guia de Estudos para SCJA
Tipos Inteiros (byte, short, int, long) Quando um número é maior que o tamanho de um tipo inteiro precisamos especificar o tipo como um long, para isso devemos adicionar a letra l ou L depois do seu valor, exemplo: long a = 0Xcafel; long b = 0752L; long c = 987654321L; 89 Guia de Estudos para SCJA
Exemplo tipo primitivo inteiro 90 /**  * Exemplo de utilização dos tipos primitivos byte, short, int e long.  */ public class ExemploTipoPrimitivo {     public static void main(String[] args) {         //Inicializando atributos primitivos com valores na base octal.         byte a = 077;         short b = 010;         int c = 025;         System.out.println(a); // Imprime 63         System.out.println(b); // Imprime 8         System.out.println(c); // Imprime 21         //Inicializando atributos primitivos com valores na base decimal.         int d = 9;         long e = 9871342132L;         System.out.println(d); // Imprime 9         System.out.println(e); // Imprime 9871342132 Guia de Estudos para SCJA
Exemplo tipo primitivo inteiro 91         //Inicializando atributos primitivos com valores na base hexadecimal.         long f = 0XCAFE;         long g = 0Xcafel;         int h = 0X14a3;         long i = 0752L;         long j = 987654321L;         System.out.println(f); // Imprime 51966         System.out.println(g); // Imprime 51966         System.out.println(h); // Imprime 5283         System.out.println(i); // Imprime 490         System.out.println(j); // Imprime 987654321     } } Guia de Estudos para SCJA
Exemplo tipo primitivo inteiro Compilar e executar o arquivo ExemploTipoPrimitivo. java 92 Guia de Estudos para SCJA
Tipos Ponto Flutuante (float e double) Tipos de ponto flutuante servem para representar números com casas decimais, tanto negativos quanto positivos. Todos números com ponto flutuante são por padrão do tipo double. float f = 10.99f; double b = 10.3D; double c = 10.3; 	// Erro de compilação, pois o padrão do valor é double. floaf c = 1.99; OBS: Números com ponto flutuante devem ser escritos com ponto final ( . ). 93 Guia de Estudos para SCJA
Exemplo tipo primitivo inteiro com ponto flutuante 94 /**  * Exemplo de utilização dos tipos primitivos float e double.  */ public class ExemploTipoPrimitivo2 {     public static void main(String[] args) {         //Definindo explicitamente que o valor é float.         float a = 10.99f;         //Definindo explicitamente que o valor é double.         double b = 10.3D;         //Atribuindo o valor inteiro para um tipo double.         double c = 5;         //Atribuindo um valor double, por padrão todos números         // com casas decimais são do tipo double.         double d = 7.2;         System.out.println(a); // Imprime 10.99         System.out.println(b); // Imprime 10.3         System.out.println(c); // Imprime 5.0         System.out.println(d); // Imprime 7.2     } } Guia de Estudos para SCJA
Exemplo tipo primitivo inteiro com ponto flutuante Compilar e executar  o arquivo ExemploTipoPrimitivo2. java 95 Guia de Estudos para SCJA
Tipo caractere (char) O tipo caractere, como o próprio nome já diz, serve para representar um valor deste tipo. Sua inicialização permite 3 modelos: char a = ‘a’;	//Inicialização usual com 1 caractere. char a = 97; 	//Inicialização com código ASCII. char u = ‘0025’; //Equivale ao caractere ‘%’ Os caracteres podem ser representados por números e possuem o mesmo tamanho de um atributo short. O unicode é no formato hexadecimal, portanto o exemplo anterior ‘0025’ equivale a 37 na base decimal. 96 Guia de Estudos para SCJA
Exemplo tipo primitivo caractere 97 /**  * Exemplo de utilização do tipo primitivo char.  */ public class ExemploTipoPrimitivo3 {     public static void main(String[] args) {         //Definindo explicitamente um valor caracter.         char a = 'a';         //Definindo explicitamente um valor numerico.         char b = 97;         //Definindo explicitamente um valor unicode.         char c = '0025';         System.out.println(a); // Imprime a         System.out.println(b); // Imprime a         System.out.println(c); // Imprime %     } } Guia de Estudos para SCJA
Exemplo tipo primitivo caractere Compilar e executar o arquivo ExemploTipoPrimitivo3. java 98 Guia de Estudos para SCJA
Tipo booleano (boolean) Tipo que representa valores lógicos true (verdadeiro) ou false (falso), exemplo: boolean a = true; boolean b = false; 99 Guia de Estudos para SCJA
Casting 100 Guia de Estudos para SCJA
Casting Para fazer um casting, basta sinalizar o tipo para o qual se deseja converter entre parênteses, da seguinte forma:   float  f  = (float) 5.0; 		Conversão do double 5.0 para float. int b = (int) 5.1987; Conversão de double para int.   float c = 100; Conversão de int para float é implícito, não precisa de casting.   int d = ‘d’; Conversão de char para int é implícito, não precisa de casting.  101 Guia de Estudos para SCJA
Exemplo casting 102 /**  * Exemplo de conversão de tipos primitivos utilizando casting.  */ public class ExemploCasting {     public static void main(String[] args) {         //Casting feito implicitamente, pois o valor possui um         // tamanho menor que o tipo da variável que irá recebe-lo.         char a = 'a';         int b = 'b';         float c = 100;         System.out.println(a); // Imprime a         System.out.println(b); // Imprime 98         System.out.println(c); // Imprime 100.0         //Casting feito explicitamente, pois o valor possui um tamanho         // maior que o tipo da variável que irá recebe-lo.         int d = (int) 5.1987;         int e = (char) (a + 5);         char f = (char) 110.5;         System.out.println(d); // Imprime 5         System.out.println(e); // Imprime 102         System.out.println(f); // Imprime n     } } Guia de Estudos para SCJA
Exemplo casting Compilar e executar o arquivo ExemploCasting.java 103 Guia de Estudos para SCJA
Vetor (array) Segundo a definição mais clássica da informática, um vetor é uma estrutura de dados homogenia, ou seja, todos os elementos de um vetor são do mesmo tipo.  A estrutura básica de um vetor é representada por seu nome e um índice, que deve ser utilizado toda a vez que se deseja acessar um determinado elemento dentro de sua estrutura.  Todo vetor possui um tamanho fixo, ou seja, não é possível redimensionar um vetor ou adicionar a ele mais elementos do que este pode suportar.  Em Java a posição inicial do vetor é definida pelo valor zero. 104 Guia de Estudos para SCJA
Vetor (array) Um vetor é composto de três partes: Declaração Criação Inicialização Podemos também criar e inicializar o vetor da seguinte forma: 105 int[] valores;	// ou int valores[]; String[] nomes;	// ou String nomes[]; int[] valores = newint[100]; String[] nomes = new String[50]; valores[0] = 5; nomes[10] = "Rafael"; int[] valores = {2, 5, 4, 8, 5}; Guia de Estudos para SCJA
Vetor (array) Exemplo de utilização de array: 106 publicclassExemploVetor { publicstaticvoidmain(String[] args) { int[] vetor = {2, 5, 4, 8, 5};         System.out.println("Elemento do indice 2 = " + vetor[2]);         System.out.println("Elemento do indice 4 = " + vetor[4]);         System.out.println("Percorrendo todos os elementos do vetor");         for(int i = 0; i < vetor.length; i++) {             System.out.println("Indice[" + i + "]= " + vetor[i]);         }     } } Guia de Estudos para SCJA
Vetor (array) Todo vetor em Java é um objeto, mesmo que ele possua apenas atributos primitivos. Quando os vetores são criados eles já são inicializado com os valores padrões para os tipos que eles guardam. O primeiro índice do vetor é sempre zero, logo, seu último elemento é sempre igual ao tamanho do vetor menos um. Se acessar uma posição do vetor que não existe será lançado uma java.lang.ArrayIndexOutOfBoundsException. 107 Guia de Estudos para SCJA
Enumeration Enumeration ou enum é uma alternativa ao uso de valores constantes. O enum criado pode ser criado em um arquivo separado ou dentro de outra classe. Podem conter: Variáveis de instância, métodos e construtores. Problemas na utilização de constante: As constantes não oferecem segurança. Não há um domínio estabelecido. Fragilidade de modelo. Seus valores impressos são pouco informativos 108 Guia de Estudos para SCJA
Enumeration Exemplo de utilização de constantes: 109 /**  * Classe utilizada para demonstrar as fragilidades das contantes.  */ public class ExemploUsarEnums { publicstatic final int CONCEITO_RUIM = 1; publicstatic final int CONCEITO_BOM = 2; publicstatic final int CONCEITO_OTIMO = 3;     public void calcularAprovacao(int conceito) {         if(conceito == CONCEITO_OTIMO) {             System.out.println("Aprovado com louvor!");         } else if (conceito == CONCEITO_BOM) {             System.out.println("Aprovado!");         } else if (conceito == CONCEITO_RUIM) {             System.out.println("Reprovado!");         }     } } Guia de Estudos para SCJA
Enumeration Exemplo de criação de enum: 110 /**  * Enum para conceitos de avaliação de disciplinas.  */ public enum ConceitoEnum {     RUIM,     BOM,     REGULAR,     OTIMO;     public void calcularAprovacao(ConceitosEnum conceito) {         if(conceito == OTIMO) {             System.out.println("Aprovado com louvor!");         } else if (conceito == REGULAR) {             System.out.println("Regular!");         } else if (conceito == BOM) {             System.out.println("Aprovado!");         } else if (conceito == RUIM) {             System.out.println("Reprovado!");         }     } } Guia de Estudos para SCJA
Enumeration Exemplo de enum com atributo e construtor: 111 /**  * Enum para conceitos de avaliação de disciplinas.  */ public enumConceitoEnumComConstrutor {     RUIM("Reprovado!"),     BOM("Aprovado!"),     REGULAR("Regular"),     OTIMO("Aprovado com louvor");     private final String mensagem;     //O construtor de um enum pode ser default ou private. privateConceitoEnumComConstrutor(String mensagem) {         this.mensagem = mensagem;     }     public String calcularAprovacao() {         return this.mensagem;     } } Guia de Estudos para SCJA
Enumeration Compilando e executando a classe PrincipalTesteEnum. java 112 /**  * Classe para testar o uso de enum.  */ public class PrincipalTesteEnum {     public static void main(String[] args) {         System.out.println("Conceito..:" +  ConceitoEnumComConstrutor.OTIMO.calcularAprovacao();     } } Guia de Estudos para SCJA
Outros informações das enums: Enumeration 113 publicclass PrincipalTesteEnum2 { publicstaticvoidmain(String[] args) {         //Percorrendo todas as enums         for(ConceitoEnumComConstrutor conceito : ConceitoEnumComConstrutor.values())             System.out.println(conceito);         //Buscando um enum pelo seu nome.         System.out.println(ConceitoEnumComConstrutor.valueOf("BOM"));         //método name() que retorna o nome da propriaenum.         System.out.println(ConceitoEnumComConstrutor.OTIMO.name());         //método ordinal() retorna a posição da ordem em que a enum foi declarada.         System.out.println(ConceitoEnumComConstrutor.OTIMO.ordinal());     } } Guia de Estudos para SCJA
Referência a objeto Como Java é uma linguagem orientada a objetos é muito comum declararmos atributos ou variáveis que possuem referência a objetos em memória. Exemplo: 114 Produto prod = new Produto(); Pessoa paulo = new Pessoa("Paulo"); String texto = new String("Explicação de referência de objeto"); int[] valores = new int[100]; Guia de Estudos para SCJA
Referência a objeto 115 public class ExemploReferencia{ publicstaticvoidmain(String[] args) {     Produto prod = new Produto();     prod.setNome("Duke"); prod.setPreco(75.90);     Pessoa paulo = new Pessoa("Paulo");     paulo.setIdade(40);     paulo.setCpf("111.111.111-11");   } } Heap 115 Guia de Estudos para SCJA
3.2 - Desenvolver código que declare classes concretas, classes abstratas e interfaces, código que ofereça suporte a herança de interface e implementação, código que declare métodos e atributos de instâncias e código que utilize modificadores de acesso Java: privados e públicos. 116
Classe Concreta Nome da Classe Carro, Pessoa, ContaCorrente, CaixaCorreio Atributos idade, nome, listaMensagens, notaAluno Métodos getPessoa, consultarAluno, enviarMensagemEmail 117 Guia de Estudos para SCJA
Classe Concreta 118 /**  * Classe utilizada para demonstrar a estrutura de uma classe.  */ public class NovaClasse {   /* Declaração dos atributos da classe. */   public int atributo1;   public float atributo2;   public boolean atributo3;   /* Declaração dos métodos da classe. */   public void metodo1() {     //Comandos     System.out.println("Chamando o metodo 1.");   }   public void metodo2() {     //Comandos     System.out.println("Chamando o metodo 2.");   } } Guia de Estudos para SCJA
Classe Concreta publicclass Livro { private String titulo; private String autor; privatedoublepreco; public Livro() {   } publicvoidsetTitulo(String _titulo) { titulo = _titulo; } public String getTitulo() { return titulo; } publicvoidsetAutor(String _autor) { autor = _autor; } public String getAutor() { return autor; } publicvoidsetPreco(double _preco) { preco = _preco; } public String getPreco() { returnpreco; } } 119 Guia de Estudos para SCJA
Atributo de instância Atributos de instância são “variáveis” declaradas a nível de classe, que são utilizados para representar as propriedades (estado) que o objeto desta classe pode ter. Por convenção, costuma-se escrever o atributo com letras minúsculas, a menos que ele seja composto por mais de uma palavra, a primeira palavra é toda em minúscula e as demais começam com a primeira letra em maiúsculo e o restante da palavra em minúscula. Exemplo: idade, nome, listaMensagens, notaAlunoTurma, etc 120 Guia de Estudos para SCJA
Atributo de instância Exemplo de declaração de atributo: 121 /**  * Classe utilizada para demonstrar a utilização de atributos.  */ public class Atributo {   /* Declaração dos atributos da classe. */   public int atributo1;   public float atributo2;   public boolean atributo3; } Guia de Estudos para SCJA
Métodos São blocos de códigos que representam as funcionalidades (ações)  que a classe apresentará. Por convenção, costuma-se escrever o método com letras minúsculas, a menos que ele seja composto por mais de uma palavra, a primeira palavra é toda em minúscula e as demais começam com a primeira letra em maiúsculo e o restante da palavra em minúscula. Exemplo: getPessoa, consultarDadosAluno, enviarMensagemEmail, etc 122 Guia de Estudos para SCJA
Métodos Os métodos podem ou não retornar algum valor no final de sua execução, esta informação deve constar na assinatura do método. Quando não desejamos retornar valor devemos a palavra chave void. Podemos também informar o tipo de retorno que pode ser um tipo primitivo ou referencia de objeto, lembrando que quando informamos o tipo de retorno então é obrigatório que esse retorno aconteça. 123 Guia de Estudos para SCJA
Métodos 124 /**  * Classe utilizada para demonstrar o uso de métodos com retorno de valor.  */ public class MetodoRetorno {   public int atributo1;   /**    * Método utilizado para retornar o atributo1.    * @return int com o valor do atributo1.    */   public int metodo1() {     System.out.println("Chamou o metodo 1.");     return atributo1;   }   /**    * Método que verificar se o atributo1 é maior ou igual a 0 (zero).    * @return boolean informando se o atributo1 é positivo    */   public boolean metodo2() {     System.out.println("Chamou o metodo 2.");     return atributo1 >= 0;   } } Guia de Estudos para SCJA
Métodos Os métodos também podem receber valores para serem utilizados durante sua execução, esses valores são chamados parâmetros. Exemplo: 125 /**  * Classe utilizada para demonstrar o uso de métodos que recebem parâmetros.  */ publicclassMetodoParametro { publicint atributo1;   /**    * Método utilizado para atribuir o valor do atributo1.    */ publicvoid metodo1(int valor) {     System.out.println("Chamando o metodo 1.");     atributo1 = valor;     System.out.println("O valor do atributo1 eh: " + atributo1);   } Guia de Estudos para SCJA
Métodos 126   /**    * Método que recebe uma quantidade de parâmetros variados e imprime todos os    * valores recebidos. Essa possibilidade de receber uma quantidade de    * parâmetros variados é chamado de varargs e foi implementado a partir    * da versão 5.0 do java.    */ publicvoid metodo2(int... valores) {     System.out.println("Chamando o metodo 2."); if(valores.length > 0) {       /* Para cada argumento recebido como parâmetro, imprime seu valor. */       for(intcont = 0; cont < valores.length; cont++) { int valor = valores[cont];         System.out.print(valor + " ");       }       System.out.println("");       /* Este for faz a mesma coisa que o anterior, este novo tipo de for          chamado foreach foi implementado a partir da versão 5.0 do java. */       for(int valor : valores) {         System.out.print(valor + " ");       }     }   } } Guia de Estudos para SCJA
Métodos com passagem de parâmetro 127 Stack publicclassVendaLivro { publicstaticvoidmain(String[] args) { int quantidade = 3;     Livro livro = new Livro();     livro.setTitulo("Java com Aveia");     livro.setAutor("Sakurai");     livro.setPreco(35.90);     Comprovante c = new Comprovante(); c.emitir(quantidade, livro);   } } Heap publicclass Comprovante { publicvoid emitir(int qtd, Livro l) {     /* utiliza o qtd e o l para emitir        comprovante. */   } } Guia de Estudos para SCJA
Métodos com passagem de parâmetro 128 Stack publicclassVendaLivro { publicstaticvoidmain(String[] args) { int quantidade = 3;     Livro livro = new Livro();     livro.setTitulo("Java com Aveia");     livro.setAutor("Sakurai");     livro.setPreco(35.90);     Comprovante c = new Comprovante(); c.emitir(quantidade, livro);   } } Heap publicclass Comprovante { publicvoid emitir(int qtd, Livro l) {     /* utiliza o qtd e o l para emitir        comprovante. */   } } Guia de Estudos para SCJA
Métodos Para construirmos uma classe precisamos chamar um método construtor, exemplo: Livro livro = newLivro(); O método construtor é especial pois através dele é criado um objeto da classe. Um construtor tem a seguinte assinatura: visibilidade NomeClasse(parâmetros) Note que neste exemplo o método construtor Livro() não recebe nenhum parâmetro, também chamado de construtor padrão. Quando não declaramos nenhum construtor na classe, o compilador do Java adiciona um construtor padrão. 129 Guia de Estudos para SCJA
Classe Abstrata Define um modelo (template) para representar entidades e conceitos abstratos. Utilizada como classe pai (base) para criação de outras classes. Pode ter métodos implementados de forma genérica Pode definir métodos abstratos que devem ser implementados pelas subclasses concretas. Em Java para criarmos uma classe abstrata utilizamos a palavra-chave abstract. 130 Guia de Estudos para SCJA
Exemplo UML de classe abstrata 131 Guia de Estudos para SCJA
Exemplo de classe Abstrata 132 /**  * Classe abstrata que possui os métodos básicos para  * as telas do computador de bordo de um veiculo.  */ publicabstractclass Tela { private String titulo; publicvoidsetTitulo(String titulo) { this.titulo = titulo;     } public abstract String obterInformacao(); publicvoid imprimir() {         System.out.println(this.titulo);         System.out.println("" + obterInformacao());     } } Guia de Estudos para SCJA
Exemplo de classe Abstrata 133 /**  * Tela que mostra a kilometragem percorrida por um veiculo.  */ publicclassTelaKilometragemextends Tela {     /* Atributo que guarda o valor da km atual do veiculo. */ int km = 0;     /* Construtor que iniciliza o titulo da tela. */ publicTelaKilometragem() {         /* Atribui o valor do titulo desta tela. */         super.setTitulo("Km Atual");     }     /**      * Implementa o método abstrato da classe Tela,      * neste método buscamos a km atual do veiculo.      * @return Texto com a km atual.      */     @Override public String obterInformacao() {         km += 10; return String.valueOf(km) + " km";     } } Guia de Estudos para SCJA
Exemplo de classe Abstrata 134 /**  * Classe utilizada para testar a Tela Kilometragem.  */ public class TesteTelaKm {     public static void main(String[] args) {         TelaKilometragem tk = new TelaKilometragem();         tk.imprimir();         System.out.println("------------");         tk.imprimir();     } } Guia de Estudos para SCJA
Exemplo de classe Abstrata Compilar os arquivos Tela.java, TelaKilometragem.java e TesteTelaKm e executar o arquivo  TesteTelaKm.class. 135 Guia de Estudos para SCJA
Interface A interface é utilizada para definir assinaturas de métodos que todas as classes que forem implementá-la devem seguir. Podemos associar uma interface a um contrato onde todas as classes que querem ter esse contrato precisam implementar seus métodos. Para criar uma interface em Java utilizamos a palavra-chave interface. 136 Guia de Estudos para SCJA
Interface A interface pode: uma interface pode extender outra interface declarar atributos como constantes declarar assinatura de métodos públicos A interface não pode: implementar método declarar construtor extender classe implementar outra interface não pode ser final não pode ter métodos com visibilidade private, protected ou default (padrão) 137 Guia de Estudos para SCJA
Exemplo de Interface 138 Guia de Estudos para SCJA
Exemplo de Interface 139 /**  * Classe utilizada para representar uma Conta bancaria.  */ publicclass Conta {     // Nome do proprietário da Conta. private String nomeProprietario;     // Número da Conta. privateint numero;     // Saldo da Conta. privatedouble saldo; public String getNomeProprietario() { returnnomeProprietario; } publicvoidsetNomeProprietario(String nomeProprietario) { this.nomeProprietario = nomeProprietario;     } publicintgetNumero() { return numero; } publicvoidsetNumero(int numero) { this.numero = numero; } publicdoublegetSaldo() { return saldo; } publicvoidsetSaldo(double saldo) { this.saldo = saldo; } } Guia de Estudos para SCJA
Exemplo de Interface 140 /**  * Interface utilizada para representar os métodos mínimos que  * os bancos precisam implementar.  */ publicinterface Banco { public abstractvoidmanutencaoConta(Conta conta); public abstractboolean saque(Conta conta, double valor); public abstractboolean deposito(Conta conta, double valor); public abstractvoid extrato(Conta conta); } Guia de Estudos para SCJA
Exemplo de Interface 141 /**  * Classe utilizada para representar o Banco Sakurai  */ public class BancoSakurai implements Banco {     // Conta que representa o Banco Sakurai.     private Conta contaBancoSakurai = null;     /**      * Construtor padrão da classe.      * Cria uma conta para o banco sakurai.      */     public BancoSakurai() {         this.contaBancoSakurai = new Conta();         this.contaBancoSakurai.setNomeProprietario("Banco Sakurai");         this.contaBancoSakurai.setNumero(0);         this.contaBancoSakurai.setSaldo(0d);     } publicvoidmanutencaoConta(Conta conta) { booleantemSaldo = conta.getSaldo() >= 0.25; Guia de Estudos para SCJA
Exemplo de Interface 142         //Verifica se tem saldo para realizar a manutenção da conta. if(temSaldo) { doublenovoSaldo = conta.getSaldo() - 0.25;             conta.setSaldo(novoSaldo);             //Deposita o dinheiro da manutenção na conta do banco sakurai.             deposito(this.contaBancoSakurai, 0.25);         } else {             System.out.println("Não conseguiu cobrar a manutenção da conta " +                     conta.getNumero() + " !!!");         }     }     public boolean saque(Conta conta, double valor) {         //Verifica se tem saldo suficiente para fazer o saque         if(conta.getSaldo() >= valor) {             //Realiza o saque na conta.             double novoValor = conta.getSaldo() - valor;             conta.setSaldo( novoValor );             System.out.println("Saque efetuado!!!");             //Toda vez que fizer um saque faz cobra a manutenção da conta.             manutencaoConta(conta);             return true; Guia de Estudos para SCJA
Exemplo de Interface 143         } else {             System.out.println("Não conseguiu fazer o saque!!!");             //Se não conseguir fazer o saque, mostra o extrato da conta.             extrato(conta); returnfalse;         }     }  public boolean deposito(Conta conta, double valor) {         //Realiza o deposito na conta.         double novoValor = conta.getSaldo() + valor;         conta.setSaldo(novoValor);         System.out.println("Deposito efetuado!!!");         return true;     }     public void extrato(Conta conta) {         System.out.println(" -- BANCO SAKURAI -- ");         System.out.println("-> EXTRATO CONTA");         System.out.println("Nome: " + conta.getNomeProprietario());         System.out.println("Numero: " + conta.getNumero());         System.out.println("Saldo: " + conta.getSaldo());         System.out.println("---------------------");     } Guia de Estudos para SCJA
Exemplo de Interface 144     public boolean transferencia(Conta contaOrigem, Conta contaDestino, double valor) {         boolean fezSaque = saque(contaOrigem, valor);         //Verifica se conseguiu sacar dinheiro na conta de origem.         if(fezSaque) {             //Faz o deposito na conta de destino.             deposito(contaDestino, valor);             System.out.println("Transferencia efetuada.");             return true;         } else {             System.out.println("Não conseguiu fazer a transferencia.");             return false;         }     } } Guia de Estudos para SCJA
Exemplo de Interface 145 /**  * Classe utilizada para representar o Banco Cristiano.  */ publicclassBancoCristianoimplements Banco {     private Conta contaBancoCristiano = null; publicBancoCristiano() { this.contaBancoCristiano = new Conta(); this.contaBancoCristiano.setNomeProprietario("Banco Cristiano"); this.contaBancoCristiano.setNumero(0); this.contaBancoCristiano.setSaldo(0d);     } publicvoidmanutencaoConta(Conta conta) {         //Sempre executa o saque na conta bancaria. doublenovoSaldo = conta.getSaldo() - 0.01;         conta.setSaldo(novoSaldo);         //Deposita o dinheiro da manutenção na conta do Banco Cristiano. doublesaldoBanco = this.contaBancoCristiano.getSaldo() + 0.01; this.contaBancoCristiano.setSaldo(saldoBanco);     } Guia de Estudos para SCJA
Exemplo de Interface 146 publicboolean saque(Conta conta, double valor) {         //Verifica se tem saldo suficiente para fazer o saque if(conta.getSaldo() >= valor) {             //Realiza o saque na conta. doublenovoValor = conta.getSaldo() - valor;             conta.setSaldo( novoValor );             System.out.println("Saque efetuado!!!");             //Toda vez que fizer um saque faz cobra a manutenção da conta. manutencaoConta(conta); returntrue;         } else {             System.out.println("Não conseguiu fazer o saque!!!");             //Se não conseguir fazer o saque, mostra o extrato da conta.             extrato(conta); returnfalse;         }     } Guia de Estudos para SCJA
Exemplo de Interface 147 publicboolean deposito(Conta conta, double valor) {         //Realiza o deposito na conta. doublenovoValor = conta.getSaldo() + valor;         conta.setSaldo(novoValor);         System.out.println("Deposito efetuado!!!");         //Toda vez que fizer um deposito faz cobra a manutenção da conta. manutencaoConta(conta); returntrue;     } publicvoid extrato(Conta conta) {         System.out.println(" -- BANCO CRISTIANO -- ");         System.out.println("-> EXTRATO CONTA");         System.out.println("Nome: " + conta.getNomeProprietario());         System.out.println("Numero: " + conta.getNumero());         System.out.println("Saldo: " + conta.getSaldo());         System.out.println("---------------------");     } } Guia de Estudos para SCJA
Exemplo de Interface 148 /**  * Classe utilizada para testar a interface Banco, e as   * classes BancoCristiano e BancoSakurai.  */ publicclassBancoTeste { publicstaticvoidmain(String[] args) {         Banco bancoCristiano = newBancoCristiano();         Conta contaC = new Conta(); contaC.setNomeProprietario("Cristiano Camilo"); contaC.setNumero(1);    contaC.setSaldo(1000); bancoCristiano.deposito(contaC, 150.50); bancoCristiano.saque(contaC, 500); bancoCristiano.extrato(contaC);         Banco bancoSakurai = newBancoSakurai();         Conta contaS = new Conta(); contaS.setNomeProprietario("Rafael Sakurai"); contaS.setNumero(1);    contaS.setSaldo(500); bancoSakurai.deposito(contaS, 40.99); bancoSakurai.saque(contaS, 300); bancoSakurai.extrato(contaS);     } } Guia de Estudos para SCJA
Exemplo de Interface 149 Guia de Estudos para SCJA
Comparativo Classe Abstrata x Interface 150 Guia de Estudos para SCJA
Herança Em Java, podemos criar classes que herdam atributos e métodos de outras classes, evitando reescrita de código. Este tipo de relacionamento é chamado de Herança. Para representarmos este tipo de relacionamento na linguagem, devemos utilizar a palavra reservada extends, de forma a apontar para qual classe a nossa nova classe deve herdar seus atributos e métodos. Utilizando herança podemos também guardar instâncias de objetos de subclasses em variáveis do tipo das superclasses. 151 Guia de Estudos para SCJA
Herança Uma classe pode herdar apenas de uma classe (superclasse). Quando uma classe não define explicitamente que está herdando outra classe então esta classe é filha de java.lang.Object, ou seja, a classe Object é a classe pai de todas as classes. Por Object ser pai de todas as classes, todas as classes herdam os seguintes métodos dela: 152 Guia de Estudos para SCJA
Herança Quando lidamos com classes que possuem a relação de herança, podemos fazer uso de duas palavras-chave que servem para identificar se estamos utilizando um método e ou atributo da classe atual ou de sua super classe, estes comandos são: thisDefine que o recurso pertence à classe atual. super	Define que o recurso pertence à super classe. 153 Guia de Estudos para SCJA
Herança Neste exemplo temos a superclasse Pessoa, e três subclasses Funcionario, Aluno e Coordenador. 154 Guia de Estudos para SCJA
Herança 155 /**  * Classe utilizada para representar a Pessoa.  */ publicclass Pessoa { private String nome; privateint matricula;     /**      * Construtor que recebe o nome da pessoa.      * @param nome      */ public Pessoa(String nome, int matricula) { this.nome = nome; this.matricula = matricula;     } publicintgetMatricula() { return matricula; } publicvoidsetMatricula(int matricula) { this.matricula = matricula; } public String getNome() { return nome; } publicvoidsetNome(String nome) { this.nome = nome; } } Guia de Estudos para SCJA
Herança 156 /**  * Classe utilizada para representar um Funcionario que é uma Pessoa.  */ publicclassFuncionarioextends Pessoa { private String departamento; publicFuncionario(String nome, int matricula, String departamento) {         super(nome, matricula); this.departamento = departamento;     } public String getDepartamento() { return departamento;     } publicvoidsetDepartamento(String departamento) { this.departamento = departamento;     } } Guia de Estudos para SCJA
Herança 157 /**  * Classe utilizada para representar um Coordenador que é uma Pessoa.  */ publicclass Coordenador extends Pessoa { private String cursoCoordenado; public Coordenador(String nome, int matricula, String cursoCoordenado) {         super(nome, matricula); this.cursoCoordenado = cursoCoordenado;     } public String getCursoCoordenado() { returncursoCoordenado;     } publicvoidsetCursoCoordenado(String cursoCoordenado) { this.cursoCoordenado = cursoCoordenado;     } } Guia de Estudos para SCJA
Herança 158 /**  * Classe utilizada para testar a Herança da classe Funcionario.  */ publicclassTesteFuncionario { publicstaticvoidmain(String[] args) {         /* Declarações comuns. */         Pessoa camilo = new Pessoa("Camilo", 123); Funcionariorafael = newFuncionario("Rafael", 111, "informatica");         /* Todo Funcionario é uma Pessoa. */         Pessoa sakurai = newFuncionario("Sakurai", 222, "telecomunicação"); /* Erro de compilação, porque nem toda Pessoa é um Funcionario. */ Funcionariocristiano = new Pessoa("Cristiano", 456);     } } Guia de Estudos para SCJA
Herança Com a declaração acima, temos as classe Funcionario e Coordenador como classes filha ou subclasses da classe paiPessoa. Com isso podemos dizer que as subclasses Funcionario e Coordenador herdam todos os atributos e métodos da sua superclasse Pessoa. Por isso lembre-se, o FuncionarioÉ UMAPessoa, pois é uma subclasse, logo apenas possui algumas características a mais do que Pessoa, porém podemos sempre manuseá-lo como uma Pessoa. 159 Guia de Estudos para SCJA
Modificador de acesso Os modificadores de acesso são utilizados para proteger o acesso a um atributo, método ou uma classe de outras classes, em Java temos os seguintes modificadores: private (Restringe totalmente o acesso do atributo ou método da classe de todas as demais classes) default (Apenas classes do mesmo pacote tem acesso a classe, método ou atributo que possui este modificador) protected (Um atributo ou método é visível apenas para as classes do mesmo pacote ou para as subclasses daquela classe) public (classes, métodos e atributos podem ser acessados a partir de qualquer outra classe) ,[object Object],160 Guia de Estudos para SCJA
Modificadores de acesso 161 Guia de Estudos para SCJA
3.3 - Desenvolver código que implemente associações de classes simples e código que implemente multiplicidade usando matrizes; e reconhecer código que implemente composições em oposição a associações simples e código que implemente corretamente a navegação de associações. 162
Associação de classe simples Associação é quando uma classe possui um relacionamento com outra classe, exemplo: A classe Usuario possui um atributo chamado perfil que é do tipo da classe Perfil e um atributo chamado endereco que é do tipo da classe Endereco. 163 Guia de Estudos para SCJA
A implementação em Java fica da seguinte forma: Associação de classe simples 164 publicclass Perfil { private String nome; } publicclassEndereco { private String estado; private String cidade; private String bairro; private String logradouro; private String cep; } publicclassUsuario{ private String nome; private String cpf; private String login; private String senha; private Perfil perfil; privateEnderecoendereco; } Guia de Estudos para SCJA
Composição Uma composição é um relacionamento mais forte que a associação, pois uma classe depende da outra para existir, exemplo: A classe DetalheUsuario depende da classe Usuario para ser criada, sem a classe Usuario não tem porque ela existir. 165 Guia de Estudos para SCJA
Composição A implementação em Java fica da seguinte forma: 166 publicclassUsuario{ private String nome; private String login; private String senha; private Perfil perfil; privateDetalheUsuario detalhe; } publicclassDetalheUsuario { private String endereco; private String telefone; private String email; } Guia de Estudos para SCJA
Navegação A navegação informa a direção entre os relacionamentos. A partir da classe Venda podemos chegar nas classes Funcionario, Produto e Cliente. 167 Guia de Estudos para SCJA
Navegação A implementação em Java fica da seguinte forma: 168 publicclassFuncionario { private String nome; } publicclass Cliente { private String nome; } publicclass Produto{ private String nome; privatedoublepreco; } publicclass Venda { private Cliente cliente; private Produto produto; privateFuncionariofuncionario; public Cliente getCliente() { returnthis.cliente; } public Produto getProduto() { returnthis.produto; } publicFuncionariogetFuncionario() { returnthis.funcionario; } } Guia de Estudos para SCJA
Multiplicidade com matrizes Quando uma classe pode guardar mais de uma referencia para outra classe, podemos utilizar uma estrutura de vetor, matriz, lista e outros, exemplo: A classe Pagamento possui um conjunto da classe Servico, através do relacionamento da UML sabemos que é no mínimo 1 e não tem limite de quantidade máxima. 169 Guia de Estudos para SCJA
Multiplicidade com matrizes A implementação em Java fica da seguinte forma: 170 publicclass Pagamento{ private Prestador prestador; privateServico[] servicos; privatelong numero; publicServico[] getServicos() { returnthis.servicos;     } } publicclassServico { private String nome; privateBigDecimalpreco; privatechar status; } Guia de Estudos para SCJA
3.4 - Desenvolver código que utilize polimorfismo para classes e interfaces, bem como reconhecer código que utilize o princípio "programa para uma interface". 171
Polimorfismo Polimorfismo é a capacidade de um objeto ser referenciado de diversas formas e com isso realizar as mesmas tarefas (ou chamadas de métodos) de diferentes formas. Durante a execução do programa, a JVM verifica qual a classe de origem do objeto e chama o método desta classe. 172 Guia de Estudos para SCJA
Polimorfismo com herança 173 Guia de Estudos para SCJA
Polimorfismo com herança 174 /**  * Classe utilizada para representar uma Pessoa.  */ publicclass Pessoa { private String nome; public String getNome() { return nome;     } publicvoidsetNome(final String nome) { this.nome = nome;     } } Guia de Estudos para SCJA
Polimorfismo com herança 175 /**  * Classe utilizada para representar uma Pessoa Fisica  * que É UMA subclasse de Pessoa.  */ publicclassPessoaFisicaextends Pessoa { private String cpf; public String getCpf() { returncpf;     } publicvoidsetCpf(String cpf) { this.cpf = cpf;     } public String getNome() { return "Pessoa Fisica: " + super.getNome() + " - CPF: " + this.getCpf();     } } Guia de Estudos para SCJA
Polimorfismo com herança 176 /**  * Classe utilizada para representar uma Pessoa Fisica  * que É UMA subclasse de Pessoa.  */ publicclassPessoaJuridicaextends Pessoa { private String cnpj; public String getCnpj() { returncnpj;     } publicvoidsetCnpj(String cnpj) { this.cnpj = cnpj;     } public String getNome() { return "Pessoa Juridica: " + super.getNome() + " - CNPJ: " + this.getCnpj();     } } Guia de Estudos para SCJA
Polimorfismo com herança 177 /**  * Classe utilizada para demonstrar o uso do polimorfismo, vamos criar um vetor  * de Pessoa e adicionar nele objetos do tipo PessoaFisica e PessoaJuridica.  */ publicclassTestePessoa { publicstaticvoidmain(String[] args) { PessoaFisicafisica = newPessoaFisica(); fisica.setNome("Cristiano"); fisica.setCpf("12345678901"); PessoaJuridicajuridica = newPessoaJuridica(); juridica.setNome("Rafael"); juridica.setCnpj("010101010101010101"); Pessoa[] pessoas = new Pessoa[2];         pessoas[0] = fisica;         pessoas[1] = juridica;         for(Pessoa pessoa : pessoas) {             System.out.println(pessoa.getNome());         }     } } Guia de Estudos para SCJA
Polimorfismo com herança Durante o laço for, mesmo as variáveis sendo do tipo Pessoa, o método getNome() foi chamado da classe PessoaFisica e PessoaJuridica, porque durante a execução do programa, a JVM percebe de qual classe foi criada o objeto que está guardado na variável pessoa. 178 Guia de Estudos para SCJA
Polimorfismo com Interface 179 Guia de Estudos para SCJA
Polimorfismo com Interface 180 /**  * Interface que deve ser implementada por todas as classes que devem   * ser ordenadas.  */ publicinterfaceComparavel {     /**      * Assinatura de método que toda classe que quer permitir      * a comparação entre seus objetos precisa implementar.      *       * @param o - Objeto que será comparado.      * @return 0 se os objetos forem iguais      *         > 0 se o objeto recebido é menor que o objeto que será comparado.      *         < 0 se o objeto recebido é maior que o objeto que será comparado.      */ public abstract int comparar(Object o); } Guia de Estudos para SCJA
Polimorfismo com Interface 181 /**  * Classe utilizada para ordenar qualquer tipo de classe  * que implementa a interface Comparavel.  */ publicclass Ordenar {     /**      * Método que utiliza o algoritmo de bubblesort      * para ordenar um vetor de objetos do tipo <code>Comparavel</code>.      * @param objetos - Vetor de objetos que ordenados.      */ publicvoid ordenar(Comparavel[] objetos) {         for (int i = 0; i < objetos.length; i++) {             for (int j = i + 1; j < objetos.length; j++) {                 /* Verifica se os objetos não estão na ordem. */ if(objetos[i].comparar(objetos[j]) > 0) {                     /* Troca os objetos de lugar no vetor. */ Comparaveltemp = objetos[i];                     objetos[i] = objetos[j];                     objetos[j] = temp;                 }             }         }     } } Guia de Estudos para SCJA
Polimorfismo com Interface 182 /**  * Classe utilizada para representar um Livro, esta classe  * implementa a interface Comparavel.  */ publicclass Livro implementsComparavel { private String autor; private String titulo; public Livro(String autor, String titulo) { this.autor = autor; this.titulo = titulo;     } public String getAutor() { return autor;     } publicvoidsetAutor(String autor) { this.autor = autor;     } public String getTitulo() { return titulo;     } Guia de Estudos para SCJA
Polimorfismo com Interface 183     public void setTitulo(String titulo) { this.titulo = titulo;     } publicint comparar(Object o) { intcomparacao = 0;         //Verifica se o objeto que vai comparar é do tipo Livro. if (o instanceof Livro) {             Livro livro = (Livro) o; comparacao = this.getAutor().compareTo(livro.getAutor());             //Se os autores forem iguais, compara o titulo dos livros. if (comparacao == 0) { comparacao = this.getTitulo().compareTo(livro.getTitulo());             }         } returncomparacao;     } } Guia de Estudos para SCJA
Polimorfismo com Interface 184 /**  * Classe utilizada para testar a ordenação genérica.  */ publicclassTestarOrdenacao { publicstaticvoidmain(String[] args) {         /* Cria uma vetor de livros. */         Livro[] livros = new Livro[4];         livros[0] = new Livro("Sakurai", "Almoçando com Java");         livros[1] = new Livro("Cristiano", "Classes Java em fila indiana");         livros[2] = new Livro("Sakurai", "Java em todo lugar");         livros[3] = new Livro("Cristiano", "Viajando no Java");         /* Ordena os livros */         Ordenar o = new Ordenar(); o.ordenar(livros);         /* Imprime os livros ordenados. */         for(intcont = 0; cont < livros.length; cont++) {             System.out.println("Autor: " + livros[cont].getAutor());             System.out.println("Livro: " + livros[cont].getTitulo());             System.out.println("---------");         }     } } Guia de Estudos para SCJA
Polimorfismo Quando utilizamos polimorfismo estamos restringindo os métodos baseado no tipo de referencia do objeto, exemplo: O tipo de referencia do objeto é Comparavel e através dela podemos chamar apenas o método comparar(), não podemos chamar os métodos que foram declarados na classe Livro. 185 Comparavel livro = new Livro("Java com Aveia", "Rafael"); Livro onlyJava = new Livro("Only Java", "Sakurai"); livro.comparar(onlyJava); livro.getNome(); //Erro de compilação Guia de Estudos para SCJA
DinamicBinding Mas porque quando chamamos o método comparar() da interface Comparavel é chamado o método comparar() da classe Livro? Em tempo de execução a JVM verifica qual o objeto está sendo referenciado e chama seu método, isto é chamado DinamicBinding. 186 Comparavel livro = new Livro("Java com Aveia", "Rafael"); Livro onlyJava = new Livro("Only Java", "Sakurai"); livro.comparar(onlyJava); Guia de Estudos para SCJA
Casting de objeto Vimos anteriormente que uma Pessoa (superclasse) nem sempre É UMAPessoaFisica (subclasse), mas quando estamos trabalhando com uma superclasse e temos a certeza de qual o tipo de subclasse ele está representando podemos fazer o casting de objetos, para guardar o objeto em sua classe, funciona de forma similar ao casting de atributos primitivos. No exemplo abaixo vamos criar duas variáveis do tipo Pessoa com objetos do tipo PessoaFisica e PessoaJuridica, depois vamos também criar uma variável do tipo Object (que é a superclasse de todas as classes) e guardar nela um objeto do tipo String. 187 Guia de Estudos para SCJA
Casting de objeto 188 /**  * Classe utilizada para demonstrar o uso do polimorfismo, vamos criar duas   * variáveis do tipo Pessoa e adicionar nele objetos do tipo PessoaFisica e   * PessoaJuridica.  */ publicclass TestePessoa4 { publicstaticvoidmain(String[] args) {         Pessoa pessoa1 = newPessoaFisica();         pessoa1.setNome("Cristiano");         Pessoa pessoa2 = newPessoaJuridica();         pessoa2.setNome("Rafael"); PessoaFisicafisica = (PessoaFisica) pessoa1; fisica.setCpf(12345678901L); PessoaJuridicajuridica = (PessoaJuridica) pessoa2; juridica.setCnpj(1000100012345678L);         System.out.println(fisica.getNome());         System.out.println(juridica.getNome()); Object objeto = "Programacao Orientada a Objetos";         String texto = (String) objeto;         System.out.println(texto);     } } Guia de Estudos para SCJA
Casting de objeto Compilar  e executar o arquivo  TestePessoa4.java. 189 Guia de Estudos para SCJA
Programe para uma interface Programando para implementação Programando para interface 190 OrdenarLivroordenadorDeLivros = new OrdenadorLivro(); Livro[] livros = new Livros[] { new Livro("Only Java", "Sakurai"),     new Livro("Java com Aveia", "Rafael") }; ordenadorDeLivros.ordenarLivro(livros); OrdenarPessoaordenadorDePessoas = newOrdenarPessoa(); Pessoa[] pessoas = new Pessoa[] { newPessoaFisica("Sakurai"),  newPessoaJuridica("Rafael") }; ordenadorDePessoas.ordenar(pessoas); Ordenar o = new Ordenar(); Livro[] livros = new Livros[] { new Livro("Only Java", "Sakurai"),      new Livro("Java com Aveia", "Rafael") }; o.ordenar(livros); Pessoa[] pessoas = new Pessoa[] { new PessoaFisica("Sakurai"),      new PessoaJuridica("Rafael") }; o.ordenar(pessoas); Guia de Estudos para SCJA
4- Projeto e Implementação de Algoritmos 191
4.1 - Descrever, comparar e contrastar estes três tipos de instruções fundamentais: atribuição, condicional e iteração; com base na descrição de um algoritmo, selecionar o tipo apropriado de instrução para projetar o algoritmo. 192
Instruções fundamentais Quando queremos guardar o valor de um tipo primitivo ou uma referência para um objeto, podemos guardá-los em variáveis, isto também é chamado de atribuição. 193 Guia de Estudos para SCJA
Instruções fundamentais Quando queremos executar um determinado conjunto de instruções, em uma determinada condição ou situação, podemos utilizar estruturas do tipo condicional. 194 Guia de Estudos para SCJA
Instruções fundamentais Quando queremos executar um certo conjunto de instruções n vezes, durante uma determinada condição ou situação, podemos utilizar  estruturas do tipo iteração. 195 Guia de Estudos para SCJA
4.2 - Com base em um algoritmo como pseudo-código, determinar o escopo correto de uma variável usada no algoritmo e desenvolver código para declarar variáveis em qualquer um dos seguintes escopos: variável de instância, parâmetro de método e variável local. 196
Escopo de variável Variáveis de instânciasão criadas em nível de classe que podem ser utilizadas para guardar informações (estado)  para cada objeto que estiver em memória. Este tipo de variável tem um escopo de vida igual a vida do objeto onde ele está referenciado. 197 Guia de Estudos para SCJA
Escopo de variável Parâmetros de método são variáveis recebidas por parâmetro de método. Todo parâmetro é passado por cópia, ou seja: Se o parâmetro for do tipo primitivo, então é copiado o valor da variável de origem para o parâmetro do método. Se o parâmetro for um objeto, então é copiado o valor da referência ao objeto original. ,[object Object],198 Guia de Estudos para SCJA
Escopo de variável Variável local é criada dentro de blocos de chave { }, este tipo de variável tem um escopo de vida limitado ao bloco.Estas variáveis são criadas para serem utilizadas para executar uma determinada instrução e depois são descartadas. 199 Guia de Estudos para SCJA
4.3 - Com base em um algoritmo como pseudo-código, desenvolver código de método que implemente o algoritmo usando instruções condicionais (if e switch), instruções de iteração (for, for-each, while e do-while), instruções de atribuição e instruções break e continue para controlar o fluxo dentro das instruções switch e de iteração. 200
Instruções condicionais (if / else) A instrução condicionais if, é utilizada para executar alguns comandos apenas se sua condição for true (verdadeira). O else pode ou não acompanhar o if, mas o else não pode ser usado sozinho, e é utilizado para executar alguns comandos caso a condição do if for false (falso). 201 if (condição) {     //Comandos executados caso a condição verdadeira. } if (condição) {     //Comandos executados caso a condição verdadeira. } else {     //Comandos executados caso a condição falsa. } Guia de Estudos para SCJA
Instruções condicionais (if / else) Podemos também utilizar vários if / else aninhados: 202 if (condição1) {     //Comandos executados caso a condição1 verdadeira. } else if (condição2) {     //Comandos executados caso a condição2 verdadeira. } else if (condição3) {     //Comandos executados caso a condição3 verdadeira. } else {     //Comandos executados caso nenhuma das condições for verdadeira. } Guia de Estudos para SCJA
Instruções condicionais (if / else) Exemplo: 203 /**  * Exemplo de estrutura de controle IF.  */ public class ExemploIf {     public static void main(String[] args) {         int idade = 15; if(idade >= 18) {             System.out.println("Permissão para dirigir"); } else {             System.out.println("Idade minima para dirigir eh 18 anos"); }     } } Guia de Estudos para SCJA
Instruções condicionais (switch) A instrução condicional switch é utilizada quando queremos testar  se o valor de uma variável pode atender um determinado caso. 204 switch(variável) { case<possível valor da constante> :         < instruções >         break; case<possível valor da constante> :         < instruções >         break; default:         < instruções >         break; } Guia de Estudos para SCJA
Instruções condicionais (switch) A instrução switch aceita apenas variáveis do tipo: byte, short, int, char e enumeração. Cada case é um caso onde os comandos dentro dele são executados se o valor constante dele for o mesmo que o valor da variável recebida no switch. O bloco de comandos default representa uma condição geral de execução caso nenhuma das anteriores tenha sido atendida, sendo a sua utilização também é opcional. O comando break é utilizado para bloquear a execução de blocos cases de forma desnecessária. 205 Guia de Estudos para SCJA
Instruções condicionais (switch) 206 /**  * Exemplo de estrutura de seleção SWITCH.  */ public class ExemploSwitch {     public static void main(String[] args) {         char nota = 'D'; switch(nota) { case 'A':                 System.out.println("Aluno aprovado. Conceito excelente!");                 break; case 'B':                 System.out.println("Aluno aprovado. Conceito bom!");                 break; case 'C':                 System.out.println("Aluno aprovado. Conceito medio!");                 break; default:                 System.out.println("Aluno reprovado!");                 break; }     } } Guia de Estudos para SCJA
Instruções de iteração (for) Utilizamos a instrução for quando queremos executar um bloco de instruções n vezes. for(<inicialização>; <condição de execução>; <pós-instruções>) { 		<< instruções >> } Utilizamos a área inicialização para criar variáveis ou atribuir valores para variáveis já declaradas, mas todas as variáveis precisam ser do mesmo tipo, está área é executada antes de começar a estrutura de repetição do for. Utilizamos a área condição de execução para definir a lógica de parada da estrutura de repetição for. Utilizamos a área pós-instruções para executar alguma ação que deve ocorrer cada vez que as instruções dentro for forem executados. 207 Guia de Estudos para SCJA
Instruções de iteração (for) Exemplo1: 208 /**  * Exemplo de estrutura de repetição FOR  */ public class ExemploFor {     public static void main(String[] args) { for(int i = 0; i <= 10; i++) {             if(i % 2 == 0) {                 System.out.println(i + " e um numero par.");             } else {                 System.out.println(i + " e um numero impar.");             } }     } } Guia de Estudos para SCJA
Instruções de iteração (for) Exemplo2: 209 /**  * Exemplo de estrutura de repetição FOR  */ public class ExemploFor2 {     public static void main(String[] args) { for(int i = 0, j = 10; i <= 10; i++, j--) {             if(i == j) {                 System.out.println("i " + i + " eh igual a j " + j);             } }     } } Guia de Estudos para SCJA
Instruções de iteração (for-each) Muitas vezes o for é utilizado para percorrer um array ou uma coleção de objetos, para facilitar seu uso foi adicionado na versão 5 do Java o for-each. 210 for(<Tipo> <identificador> : <expressão>) {     <instruções> } Guia de Estudos para SCJA
Instruções de iteração (for-each) 211 import java.util.ArrayList; import java.util.List; /**  * Exemplo de estrutura de repetição For Each.  */ public class ExemploForEach {     public static void main(String[] args) {         String[] nomes = {"Altrano", "Beltrano", "Ciclano", "Deltrano"};         //Percorre um array. for(String nome : nomes) {             System.out.println(nome); }         List<Integer> valores = new ArrayList<Integer>();         valores.add(100);         valores.add(322);         valores.add(57);         //Percorre uma coleção. for(Integer numero : valores) {             System.out.println(numero); }     } } Guia de Estudos para SCJA
Instruções de iteração (while) A instrução while executa um bloco de instruções enquanto uma determinada condição for verdadeira (true). 212 while(condição)  {     < instruções > } Guia de Estudos para SCJA
Instruções de iteração (while) Exemplo: 213 /**  * Exemplo de estrutura de repetição WHILE  */ public class ExemploWhile {     public static void main(String[] args) {         int i = 0; while(i < 10) {             System.out.println(++i); }     } } Guia de Estudos para SCJA
Instruções de iteração (do / while) A estrutura do / while tem seu bloco de instruções executados pelo menos uma vez, então se a condição ao final das instruções for verdadeira (true), então o bloco de instruções é executado novamente. 214 do {     < instruções > } while(condição); Guia de Estudos para SCJA
Instruções de iteração (do / while) Exemplo: 215 import java.util.Scanner; /**  * Exemplo de estrutura de repetição DO / WHILE  */ public class ExemploDoWhile {     public static void main(String[] args) {         Scanner entrada = new Scanner(System.in);         int opcao = 0; do {             System.out.println("Escolha uma opcao:");             System.out.println("1 - Iniciar jogo");             System.out.println("2 - Ajuda");             System.out.println("3 - Sair");             System.out.println("OPCAO: ");             opcao = entrada.nextInt(); } while (opcao != 3);     } } Guia de Estudos para SCJA
Instrução break O comando break é uma instrução de interrupção imediata de qualquer laço, seja ele qual for e independente de sua condição de parada ter sido atendida. 216 /**  * Exemplo do comando break.  */ public class ExemploBreak {     public static void main(String[] args) {         Scanner entrada = new Scanner(System.in);         System.out.println("Digite um numero de 1 a 9 exceto o 5:");         int numero = entrada.nextInt();         System.out.println("Contando de 1 ate o numero que voce digitou... ");         for(int cont = 1; cont <= numero; cont++) {             if(numero == 5 || numero < 1 || numero > 9) {                 System.out.println("Um numero invalido foi digitado!!!"); break;             }             System.out.println(cont + " ");         }     } } Guia de Estudos para SCJA
Instrução continue O comando continue faz com que o laço salte para sua próxima iteração. Este comando pode ser utilizado com qualquer laço. 217 /**  * Exemplo do comando continue.  */ public class ExemploContinue {     public static void main(String[] args) {         Scanner entrada = new Scanner(System.in);         System.out.println("Digite um numero de 1 a 9: (saltaremos o 5)");         int numero = entrada.nextInt();         System.out.println("Contando de 1 ate o numero que voce digitou...");         for(int cont = 0; cont <= numero; cont++) {             if(cont == 5) {                 System.out.println("# PULANDO O 5 #");                 continue;             }             System.out.println(cont + " ");         }     } } Guia de Estudos para SCJA
4.4 - Com base em um algoritmo como pseudo-código, desenvolver código que aplique corretamente os operadores apropriados, incluindo operadores de atribuição (limitados a: =, +=, -=), operadores aritméticos (limitados a: +, -, *, /, %, ++, --), operadores relacionais (limitados a: <, <=, >, >=, ==, !=) e operadores lógicos (limitados a: !, &&, ||) para produzir o resultado desejado. Além disso, escrever código que determine a igualdade de dois objetos ou duas primitivas. 218
Operadores de atribuição Símbolo = é chamado de atribuição, utilizado para atribuir o valor de um operando a uma variável. 219 /**  * Classe utilizada para demonstrar o uso do operador de atribuição ( = ).  */ public class OperadorAtribuicao {     public static void main(String[] args) {         int x;         x = 25;         System.out.println(x);     } } Guia de Estudos para SCJA
Operadores de atribuição Símbolo += é utilizado para atribuir a uma variável o valor desta variável somada ao valor de um operando. 220 /**  * Classe utilizada para demonstrar o uso do operador de atribuição  * junto com o operador de adição ( += ).  */ public class OperadorAtribuicaoAdicao {     public static void main(String[] args) {         int x = 4;         x += 2;         System.out.println(x);     } } Guia de Estudos para SCJA
Operadores de atribuição Símbolo -= é utilizado para atribuir a uma variável o valor desta variável subtraindo o valor de um operando. 221 /**  * Classe utilizada para demonstrar o uso do operador de atribuição  * junto com o operador de subtração ( -= ).  */ public class OperadorAtribuicaoSubtracao {     public static void main(String[] args) {         int x = 4;         x -= 2;         System.out.println(x);     } } Guia de Estudos para SCJA
Operadores relacionais Símbolo > é chamado de maior que. <operando1> > <operando2>  	Retorna true se o valor do operando1 for maior que o valor do operando2, caso contrario retorna false. 222 /**  * Classe utilizada para demonstrar o uso do operador   * relacional maior que ( > ).  */ public class OperadorMaiorQue {     public static void main(String[] args) {         int a = 5;         int b = 3;         System.out.println(a > b);     } } Guia de Estudos para SCJA
Operadores relacionais Símbolo < é chamado de menor que. <operando1> < <operando2> 	Retorna true se o valor do operando1 for menor que o valor do operando2, caso contrario retorna false. 223 /**  * Classe utilizada para demonstrar o uso do operador relacional menor que ( < ).  */ public class OperadorMenorQue {     public static void main(String[] args) {         int a = 5;         int b = 3;         System.out.println(a < b);     } } Guia de Estudos para SCJA
Operadores relacionais Símbolo >= é chamado de maior ou igual que.  <operando1> >= <operando2> 	Retorna true se o valor do operando1 for maior ou igual que o valor do operando2, caso contrario retorna false. 224 /**  * Classe utilizada para demonstrar o uso do operador  * relacional maior ou igual que ( >= ).  */ public class OperadorMaiorIgualQue {     public static void main(String[] args) {         int a = 5;         int b = 3;         System.out.println(a >= b);         int c = 5;         System.out.println(a >= c);     } } Guia de Estudos para SCJA
Operadores relacionais Símbolo <= é chamado de menor ou igual que. <operando1> <= <operando2>  	Retorna true se o valor do operando1 for menor ou igual que o valor do operando2, caso contrario retorna false. 225 /**  * Classe utilizada para demonstrar o uso do operador   * relacional menor ou igual que ( <= ).  */ public class OperadorMenorIgualQue {     public static void main(String[] args) {         int a = 5;         int b = 5;         System.out.println(a <= b);     } } Guia de Estudos para SCJA
Operadores relacionais Símbolo != é chamado de diferente. <operando1> != <operando2>  	Retorna true se o valor do o
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA
SCJA

Contenu connexe

Tendances

Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosLeonardo Melo Santos
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosMoises Omena
 
Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - ConceitosMayron Cachina
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaCristiano Almeida
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetosdanielrpgj30
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosLudimila Monjardim Casagrande
 
Analise e projetos orientados a objetos
Analise e projetos orientados a objetosAnalise e projetos orientados a objetos
Analise e projetos orientados a objetosSliedesharessbarbosa
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaCharles Jungbeck
 
Aula classes abstratas 3º periodo uniao
Aula classes abstratas  3º periodo uniaoAula classes abstratas  3º periodo uniao
Aula classes abstratas 3º periodo uniaoMaria Alice Jovinski
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaDaniel Brandão
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetossoncino
 
Minicurso de Lógica e Linguagem Java 6.0
Minicurso de Lógica e Linguagem Java 6.0Minicurso de Lógica e Linguagem Java 6.0
Minicurso de Lógica e Linguagem Java 6.0Thiago Dieb
 
Programação Orientada á Objeto - Paradigmas e Implementação
Programação Orientada á Objeto - Paradigmas e ImplementaçãoProgramação Orientada á Objeto - Paradigmas e Implementação
Programação Orientada á Objeto - Paradigmas e ImplementaçãoEvandro Júnior
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a ObjetosEdy Segura
 

Tendances (20)

Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a Objetos
 
Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - Conceitos
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em Java
 
Curso : Introdução Orientação a Objetos
Curso : Introdução Orientação a ObjetosCurso : Introdução Orientação a Objetos
Curso : Introdução Orientação a Objetos
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
Analise e projetos orientados a objetos
Analise e projetos orientados a objetosAnalise e projetos orientados a objetos
Analise e projetos orientados a objetos
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
 
Aula classes abstratas 3º periodo uniao
Aula classes abstratas  3º periodo uniaoAula classes abstratas  3º periodo uniao
Aula classes abstratas 3º periodo uniao
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
 
Minicurso de Lógica e Linguagem Java 6.0
Minicurso de Lógica e Linguagem Java 6.0Minicurso de Lógica e Linguagem Java 6.0
Minicurso de Lógica e Linguagem Java 6.0
 
Poo padadigmas
Poo padadigmasPoo padadigmas
Poo padadigmas
 
Programação Orientada á Objeto - Paradigmas e Implementação
Programação Orientada á Objeto - Paradigmas e ImplementaçãoProgramação Orientada á Objeto - Paradigmas e Implementação
Programação Orientada á Objeto - Paradigmas e Implementação
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
 

En vedette

Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVACristiano Almeida
 
Projeto De Informtica
Projeto De InformticaProjeto De Informtica
Projeto De Informticaguestdf8d825
 
Modelo mapa de risco
Modelo mapa de  riscoModelo mapa de  risco
Modelo mapa de riscoAne Costa
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Tipos de estudos epidemiológicos
Tipos de estudos epidemiológicosTipos de estudos epidemiológicos
Tipos de estudos epidemiológicosArquivo-FClinico
 

En vedette (6)

Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
 
Projeto De Informtica
Projeto De InformticaProjeto De Informtica
Projeto De Informtica
 
Modelo mapa de risco
Modelo mapa de  riscoModelo mapa de  risco
Modelo mapa de risco
 
Apostila java completo
Apostila java completoApostila java completo
Apostila java completo
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Tipos de estudos epidemiológicos
Tipos de estudos epidemiológicosTipos de estudos epidemiológicos
Tipos de estudos epidemiológicos
 

Similaire à SCJA

ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#biandamakengo08
 
Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )PeslPinguim
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0César Augusto Pessôa
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
 
Java Básico - Módulo 07: Introdução à programação orientada à objetos
Java Básico - Módulo 07: Introdução à programação orientada à objetos Java Básico - Módulo 07: Introdução à programação orientada à objetos
Java Básico - Módulo 07: Introdução à programação orientada à objetos Professor Samuel Ribeiro
 
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaJava - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaMoises Omena
 
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaConceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaWanderlei Silva do Carmo
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Natanael Fonseca
 
Linguagem de programação implementação de classes
Linguagem de programação   implementação de classesLinguagem de programação   implementação de classes
Linguagem de programação implementação de classesCarlos Melo
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Professor Samuel Ribeiro
 
Programação orientada a objetos – III
Programação orientada a objetos – IIIProgramação orientada a objetos – III
Programação orientada a objetos – IIIGabriel Faustino
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1Filipo Mór
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)Mario Sergio
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 

Similaire à SCJA (20)

Java7
Java7Java7
Java7
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
 
Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )
 
Aula02
Aula02Aula02
Aula02
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 
Java Básico - Módulo 07: Introdução à programação orientada à objetos
Java Básico - Módulo 07: Introdução à programação orientada à objetos Java Básico - Módulo 07: Introdução à programação orientada à objetos
Java Básico - Módulo 07: Introdução à programação orientada à objetos
 
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaJava - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
 
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaConceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Linguagem de programação implementação de classes
Linguagem de programação   implementação de classesLinguagem de programação   implementação de classes
Linguagem de programação implementação de classes
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
 
Programação orientada a objetos – III
Programação orientada a objetos – IIIProgramação orientada a objetos – III
Programação orientada a objetos – III
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
 
Aula4
Aula4Aula4
Aula4
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 

Plus de Rafael Sakurai

Inteligência artificial aplicada a jogos
Inteligência artificial aplicada a jogosInteligência artificial aplicada a jogos
Inteligência artificial aplicada a jogosRafael Sakurai
 
Semana FACET 2015 - Arquitetura de Micro Serviços
Semana FACET 2015 - Arquitetura de Micro ServiçosSemana FACET 2015 - Arquitetura de Micro Serviços
Semana FACET 2015 - Arquitetura de Micro ServiçosRafael Sakurai
 
Sestinfo 2013 - Arduino
Sestinfo 2013 - ArduinoSestinfo 2013 - Arduino
Sestinfo 2013 - ArduinoRafael Sakurai
 
PhoneGap - criando aplicações Android e iOS com HTML5
PhoneGap - criando aplicações Android e iOS com HTML5PhoneGap - criando aplicações Android e iOS com HTML5
PhoneGap - criando aplicações Android e iOS com HTML5Rafael Sakurai
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidRafael Sakurai
 

Plus de Rafael Sakurai (7)

Inteligência artificial aplicada a jogos
Inteligência artificial aplicada a jogosInteligência artificial aplicada a jogos
Inteligência artificial aplicada a jogos
 
Semana FACET 2015 - Arquitetura de Micro Serviços
Semana FACET 2015 - Arquitetura de Micro ServiçosSemana FACET 2015 - Arquitetura de Micro Serviços
Semana FACET 2015 - Arquitetura de Micro Serviços
 
Firefox OS
Firefox OSFirefox OS
Firefox OS
 
Sestinfo 2013 - Arduino
Sestinfo 2013 - ArduinoSestinfo 2013 - Arduino
Sestinfo 2013 - Arduino
 
PhoneGap - criando aplicações Android e iOS com HTML5
PhoneGap - criando aplicações Android e iOS com HTML5PhoneGap - criando aplicações Android e iOS com HTML5
PhoneGap - criando aplicações Android e iOS com HTML5
 
Html5 Sestinfo 2012
Html5 Sestinfo 2012Html5 Sestinfo 2012
Html5 Sestinfo 2012
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao Android
 

SCJA

  • 1. Guia de Estudos paraSun Certified Java Associate (SCJA) Prof. Rafael Guimarães Sakurai 12/2009 1
  • 2. Quem sou? Rafael Guimarães Sakurai (rafael.sakurai@metodista.br) Possui graduação em Ciência da Computação pela Universidade Metodista de São Paulo (2005), especialista em Engenharia de Componentes com Java Enterprise e Webservices pela Faculdade de Informática e Administração Paulista (2007). Atualmente é analista desenvolvedor de software da Virginia Surety e docente na Universidade Metodista de São Paulo. Tem experiência na área de Ciência da Computação, com ênfase em Linguagens de Programação. Possui as seguintes certificações: SCJA 1.0, SCJP 5.0, SCWCD 1.4 e SCSNI. 2 Guia de Estudos para SCJA
  • 3. Agenda 1º Dia – Apresentação do curso Conceitos basicos de Orientação a Objetos. 2º Dia – UML e implementação Java 3º Dia – Implementação Java (continuação) 4º Dia – Implementação de algoritmos Principios básicos de desenvolvimento Java 5º Dia – Plataforma Java e tecnologias de integração Tecnologia cliente 6º Dia – Tecnologia servidor e simulado 3 Guia de Estudos para SCJA
  • 4. Detalhes Número de Questões: 51 Score: 68% (35 de 51 questões) Tempo: 115 minutos 4 Guia de Estudos para SCJA
  • 5. Sun Academic Initiative Site (https://sailearningconnection.skillport.com) Vantagens: Cursos Materiais Simulados Desconto no voucher 5 Guia de Estudos para SCJA
  • 6. Objetivos do exame 1- Conceitos básicos Orientados a Objetos (OO) 2- Representação UML de conceitos OO 3- Implementação Java de conceitos OO 4- Projeto e implementação de algoritmos 5- Princípios básicos do desenvolvimento em Java 6- Plataforma Java e tecnologias de integração 7- Tecnologias de cliente 8- Tecnologias de servidor 6 Guia de Estudos para SCJA
  • 7. 1- Conceitos Básicos Orientados a Objetos 7
  • 8. 1.1- Descrever, comparar e contrastar primitivas (número inteiro, ponto flutuante, booleano e caractere), tipos de enumeração e objetos. 8
  • 9. Tipos Primitivos Os tipos primitivos são representações de dados/valores básicos. Todos são representados por letras minúsculas e estão divididos nos seguintes tipos: Número Inteiro Número com Ponto Flutuante Caractere Booleano 9 Guia de Estudos para SCJA
  • 10. Tipos Inteiros Representam números inteiros em forma decimal, hexadecimal ou octal. Recomendado quando o número é muito grande, capaz de armazenar 64 bits Tipo inteiro mais utilizado, capaz de armazenar 32 bits Valor numérico capaz de armazenar 16 bits Utilizado para representar números pequenos, no intervalo de -128 e 127, capaz de armazenar 8 bits 10 Guia de Estudos para SCJA
  • 11.
  • 15. long:1000, 21234300000, 5609800125811 11 Guia de Estudos para SCJA
  • 16.
  • 19. Tipo Caractere Representa um único caractere incluindo letras, números, caracteres especiais e outros, denominado char. Exemplos: char: a, b, c, 4, $, & 13 13 Guia de Estudos para SCJA
  • 20. Tipo Booleano Representa o valor lógico true(verdadeiro)oufalse(falso), denominado boolean. Exemplos: boolean:true, false 14 Guia de Estudos para SCJA
  • 21. Enumeração Tipo de classe com valores pré-definidos, ou seja, possui valores padrões previamente estabelecidos. Exemplo: public enumDiaSemana { SEGUNDA-FEIRA, TERÇA-FEIRA, QUARTA-FEIRA, QUINTA-FEIRA, SEXTA-FEIRA, SÁBADO, DOMINGO } 15 15 Guia de Estudos para SCJA
  • 22. Objeto Características + Ações = Objeto 16 Guia de Estudos para SCJA
  • 23. Objeto Um objeto é a representação de um conjunto de características e funcionalidades para representar algo do mundo real. Podemos por exemplo representar pessoas como objetos, onde cada pessoa terá suas características próprias como nome, data de nascimento, documento de identidade e outros. Também podemos representar as ações que uma objeto que é uma pessoa pode ter, como por exemplo andar, pensar, falar e outros. Na OO as características são chamados de atributos e as ações são chamadas de métodos, onde todos os objetos do mesmo tipo possuem os mesmos métodos, mas cada um pode ter seus atributos com valores diferentes (estado). 17 Guia de Estudos para SCJA
  • 24. Objeto A partir de um modelo ou forma que define os atributos e métodos dos objetos podemos criar vários objetos cada um com um estado diferente: Objetos com diferentes estados Modelo 18 Guia de Estudos para SCJA
  • 25. 1.2 - Descrever, comparar e contrastar classes concretas, classes abstratas e interfaces, e como a herança é aplicada a elas. 19
  • 26. Classe Uma Classe define quais as características (atributos) e ações (métodos) para representar as “coisas” do mundo real, podemos dizer que uma classe é um modelo ou forma que define como devem ser os objetos. Os atributos de uma classe podem ser de tipos primitivos, enumerações ou outro objeto. Os métodos de uma classe vão representar as ações que aquela classe pode ter, dependendo do estado dos atributos os métodos podem executar de formas diferentes. 20 Guia de Estudos para SCJA
  • 27.
  • 28. Exemplo:publicclass Aluno { public String nome; public String matricula; public Aluno() { } public Aluno(String _nome, String _matricula) { nome = _nome; matricula = _matricula; } } 21 Guia de Estudos para SCJA
  • 29.
  • 30. A partir das classes abstratas não podemos instanciar objetos, pois ela pode ter métodos que não estão implementados.
  • 31. Exemplo:publicabstractclass Pessoa { public String nome; public void dizerNome() { System.out.println("Meunome é:" + nome); } public void estudar(); } 22 Guia de Estudos para SCJA
  • 32.
  • 33. Exemplo:publicinterface Transporte { publicvoidentrarPessoa(Pessoa pessoa); public void sairPessoa(Pessoa pessoa); public void transportarPara(String localidade); } 23 Guia de Estudos para SCJA
  • 34. Interface 24 Guia de Estudos para SCJA
  • 35. Generalizando Interface 25 Guia de Estudos para SCJA
  • 36. Implementando mais de uma Interface 26 Guia de Estudos para SCJA
  • 37. Herança Visando a reutilização de código, a herança permite que classes herdem atributos e métodos de outras classes. É utilizada em objetos que possuem características e funcionalidades semelhantes. publicclass Pessoa { private String nome; public void setNome(String nome) { this.nome = nome;} public String getNome() { return this.nome; } } publicclass Programador extends Pessoa { publicvoiddizerProfissao() { return "Meu nome eh " + getNome() + " eu sou Programador." } } 27 Guia de Estudos para SCJA
  • 38. Herança 28 Guia de Estudos para SCJA
  • 39. 1.3 - Descrever, comparar e contrastar composições e associações (incluindo multiplicidade: um-para-um, um-para-vários e vários-para-vários) de classes, bem como a navegação de associações. 29
  • 40. Associação Associação é quando uma classe pode utilizar uma outra classe, por exemplo, um cliente possui um endereço. A associação define que uma classe está relacionada com outra classe, mas elas podem ser utilizadas independente. publicclass Cliente { public String nome; publicEnderecoendereco; } publicclassEndereco { public String estado; public String cidade; public String bairro; public String logradouro; } 30 30 Guia de Estudos para SCJA
  • 41. Composição Composição é quando uma classe depende de outra classe para poder existir, por exemplo, um estado possui varias cidades. Caso apaguem um estado do mapa, as cidades dele não devem continuar existindo. publicclass Cidade { public String nome; } publicclass Estado { public Cidade[] cidades; } 31 Guia de Estudos para SCJA
  • 42. Multiplicidade Um-para-um Um logradouro pode ter apenas um CEP. Um-para-vários Exemplo: Um carro tem quatro pneus. Vários-para-vários Um programador pode trabalhar em vários projetos, e um projeto pode ter vários programadores. 32 Guia de Estudos para SCJA
  • 43. Navegação Navegação informa qual a direção do relacionamento entre duas classes. Neste exemplo através da classe Produto podemos chegar até a classe Modelo. 33 Guia de Estudos para SCJA publicclass Modelo { public String nome; } publicclass Produto { public Modelo modelo; public ModelogetModelo() { return this.modelo; } }
  • 44. 1.4 - Descrever a ocultação de informações (usando métodos e atributos privados), o encapsulamento e a funcionalidade de exposição de objetos usando métodos públicos; e descrever as convenções de JavaBeans para os métodos setter e getter. 34
  • 45. Ocultação de informações Quando queremos restringir o acesso a atributos e métodos dentro de uma classe, podemos definir sua visibilidade como privada utilizando a palavra-chave private, desta forma somente dentro da própria classe podem ser alterados os valores de um atributo ou chamado um método. 35 Guia de Estudos para SCJA
  • 46. Encapsulamento Quando temos uma classe com seus atributos com visibilidade publica, esses atributos podem ser alterados a qualquer momento por qualquer outra classe. 36 Guia de Estudos para SCJA nome matricula
  • 47.
  • 48. Encapsulamento Definindo os atributos como privados e criando métodos públicos para manipulação desses atributos podemos então restringir a manipulação desorganizada. 38 Guia de Estudos para SCJA Método Privado Método Público nome matricula Método Público Método Privado
  • 49. Exemplo encapsulamento publicclass Aluno { private String nome; privateint matricula; publicvoidsetNome(String _nome) { nome = _nome; } public String getNome() { return nome; } publicvoidsetMatricula(int _matricula) { matricula = _matricula; } publicintgetMatricula() { return matricula; } } 39 Guia de Estudos para SCJA
  • 50. Convenções Javabeans As convenções Javabeans são boas práticas de programação que definem como devem ser criadas as classes, normalmente essas convenções são seguidas pelos desenvolvedores Java. Nomes de classes são escritos com a primeira letra de cada palavra em maiúsculo. Possuir um construtor padrão (default) Todos os atributos são privados (private) Os atributos são escritos com letras minúsculas, a menos que ele seja composto por mais de uma palavra, a primeira palavra é toda em minúscula e as demais começam com a primeira letra em maiúsculo e o restante da palavra em minúscula. Todos os atributos devem ser acessíveis através de métodos “get” e “set”. Nomes de métodos seguem o mesmo padrão de escrita que atributos. 40 Guia de Estudos para SCJA
  • 51. Convenções Javabeans Exemplo: Precisamos desenvolver uma classe para representar um produto que pode ter as informações nome, data de validade, preço e ativo. publicclass Produto { private String nome; private String marca; private Date dataValidade; privatedoublepreco; privateboolean ativo; publicvoidsetNome(String nome) { this.nome = nome; } public String getNome() { returnthis.nome; } publicvoidsetDataValidade(Date dataValidade) { this.dataValidade = dataValidade; } 41 Guia de Estudos para SCJA
  • 52. Convenções Javabeans public Date getDataValidade() { returnthis.dataValidade; } publicvoidsetPreco(doublepreco) { this.preco = preco; } publicdoublegetPreco() { returnthis.preco; } publicvoidsetAtivo(boolean ativo) { this.ativo = ativo; } publicbooleangetAtivo() { returnthis.ativo; } // Quando é boolean podemos usar get ou is publicbooleanisAtivo() { returnthis.ativo; } } 42 Guia de Estudos para SCJA
  • 53. 1.5 - DESCREVER O POLIMORFISMO CONFORME APLICADO A CLASSES E INTERFACES, BEM COMO DESCREVER E APLICAR O PRINCÍPIO "PROGRAMA PARA UMA INTERFACE". 43
  • 54. Polimorfismo O termo polimorfismo vem do grego que significa “muitas formas”. Na Orientação a Objetos o polimorfismo é a forma de representar um objeto de varias formas. Podemos aplicar o polimorfismo quando temos uma estrutura de herança de classes (subclasse e superclasse) ou com estrutura de implementação de interface. 44 Guia de Estudos para SCJA
  • 55. Polimorfismo Neste exemplo podemos representar o CarroVoador como um Aereo ou como um Terrestre, pois o CarroVoador segue essas interfaces e tem implementado as funcionalidades que estão definidos nelas. Da mesma forma podemos representar o CarroVoador como um Transporte. 45 Guia de Estudos para SCJA
  • 56. Programe para uma interface “Programe para uma interface” deve ser entendido como “Programe para um supertipo” dessa forma podemos: Generalizar o tipo de retorno de método Generalizar o tipo de um atributo Generalizar os parâmetros de método 46 Guia de Estudos para SCJA
  • 57. 2- Representação UML de Conceitos Orientados a Objetos 47
  • 58. UnifiedModelingLanguage (UML) Definição: “É uma família de notações gráficas, apoiada por um metamodelo único, que ajuda na descrição e no projeto de sistemas de software, particularmente daqueles construídos utilizando o estilo orientado a objetos.” Martin Fowler 48 Guia de Estudos para SCJA
  • 59. 2.1 - Reconhecer a representação UML de classes (incluindo atributos e operações, classes abstratas e interfaces), a representação UML de herança (implementação e interface) e a representação UML de modificadores da visibilidade dos membros da classe (-/privada e +/pública). 49
  • 60. Estrutura da Classe Uma classe em UML possui três partes: Nome da Classe Atributos Operações Podemos abreviar a declaração da classe, caso não influencie o entendimento do diagrama: 50 Guia de Estudos para SCJA
  • 61. Atributos Um atributo é formado por: visibilidade nome : tipo [multiplicidade] = valor inicial {propriedades} 51 Guia de Estudos para SCJA
  • 62. Operações Uma operação é formada por: visibilidade nome (parâmetros) : tipo de retorno {propriedades} O parâmetro de um método é formado por: nome : tipo [multiplicidade] = valor inicial 52 Guia de Estudos para SCJA
  • 63. Herança Utilizamos herança quando queremos declarar subclasses, permitindo reutilizar os códigos já declarados na superclasse. 53 Guia de Estudos para SCJA
  • 64. Classe Abstrata Utilizado para informar que uma classe não implementa todos os seus métodos. 54 Guia de Estudos para SCJA
  • 65. Interface Utilizamos interface para definir as operações básicas que uma classe de seu tipo precisa implementar. ou 55 Guia de Estudos para SCJA
  • 66. Interface Exemplo: 56 Guia de Estudos para SCJA
  • 67. Visibilidade Podemos definir as seguintes visibilidades em atributos e operações: -private ~ default #protected + public 57 Guia de Estudos para SCJA
  • 68. Comentário Os comentários ou notas são utilizados para adicionar mais informações ao diagrama. 58 Guia de Estudos para SCJA
  • 69. Pacote Utilizamos para organizar as classes: 59 Guia de Estudos para SCJA
  • 70. 2.2 - Reconhecer a representação UML de associações de classes, composições, indicadores de multiplicidade de associação e indicadores de navegação de associações. 60
  • 71. Associações Utilizado para representar o relacionamento entre classes, as associações podem ser: Associação Agregação Composição Classe de associação As classes que fazem parte de um relacionamento também são chamadas de TODO (responsável pelo relacionamento) e PARTE (usado pelo relacionamento). 61 Guia de Estudos para SCJA
  • 72. Associação Relacionamento simples entre duas classes: 62 Guia de Estudos para SCJA
  • 73. Agregação Informa que uma classe faz parte de outra classe, mas não de forma exclusiva. 63 Guia de Estudos para SCJA
  • 74. Composição Informa que uma classe faz parte de outra classe de forma exclusiva. 64 Guia de Estudos para SCJA
  • 75. Agregação x Composição A diferença entre ambos é: Agregação – se excluir a classe responsável pelo relacionamento, não deve excluir a classe que ele possui relacionamento. Composição – se excluir a classe responsável pelo relacionamento, então deve excluir a classe que ele possui relacionamento. 65 Guia de Estudos para SCJA
  • 76. Associação Podemos também ter uma associação para mesma classe: 66 Guia de Estudos para SCJA
  • 77. Navegabilidade Podemos informar qual a direção do relacionamento: 67 Guia de Estudos para SCJA
  • 78. Multiplicidade A multiplicidade é utilizada para definir a quantidade de objetos devem ser criados: 0 .. 1 (zero ou um) 1 (um) * (zero ou muitos) 68 Guia de Estudos para SCJA
  • 79. Dependência Utilizado para informar que uma classe depende de outra classe para executar alguma operação: Palavras - chave de dependência: <<call>> <<create>> <<dependency>> <<use>> 69 Guia de Estudos para SCJA
  • 80. Associação x Dependência A diferença básica entre ambos: Associação temos um atributo da classe relacionada. Dependência utilizamos a classe relacionada, para passar um parâmetro, chamar um método, criar um objeto, etc. 70 Guia de Estudos para SCJA
  • 81. Diagrama de Classes 71 Guia de Estudos para SCJA
  • 82. 3- Implementação Java de Conceitos Orientados a Objetos 72
  • 83.
  • 84. 1995 – Divulgação do Java 1.0 – SunWorld
  • 85.
  • 86. 2006 – Lançamento da versão 1.6 – Java 6 – Mustang
  • 87. JCP (Java CommunityProcess) – Diversas empresas responsáveis pelo Java.73 Guia de Estudos para SCJA
  • 88. A linguagem Java Os conceitos chaves da linguagem Java são: Programação Orientada a Objetos Independente de plataforma Seguro Distribuído Multi-thread O tema principal do Java é “escreva uma vez, rode em qualquer lugar” (writeonce, runanywhere). 74 Guia de Estudos para SCJA
  • 89. JRE x JDK Há dois principais produtos dentro da plataforma Java SE: - Java RuntimeEnvironment (JRE)‏ Fornece a Java Virtual Machine, bibliotecas Java e outros componentes para executar aplicações escritas em Java. - Java Development Kit (JDK) Contém tudo que tem na JRE, mais ferramentas adicionais para criar Java Archive (JAR) e desenvolver (compilar e depurar) aplicações feitas em Java. 75 Guia de Estudos para SCJA
  • 90. Java Virtual Machine (JVM) A Java Virtual Machine é uma maquina imaginaria que é implementada através da emulação em software. Existe uma JVM diferente para cada Sistema Operacional. Uma vez que sua aplicação é criada, a mesma pode ser executada em diversos Sistemas Operacionais sem precisar recompilar. 76 Guia de Estudos para SCJA .java .classbytecode JVM JVM JVM Linux Windows Outros
  • 91. Compilando e executando um arquivo java Fases da programação Java: Editor Java Compiler Java Interpreter PrimeiraClasse.class PrimeiraClasse.java 77 Guia de Estudos para SCJA
  • 92. Criando um arquivo .java Crie um arquivo com a extensão .java com o seguinte código: 78 /** * Exemplo de uma classe simples em Java. */ public class PrimeiraClasse { public static void main(String[] args) { System.out.println("Hello world !!!"); } } Guia de Estudos para SCJA
  • 93. Compilando um arquivo .java A aplicação javac é responsável por compilar o arquivo .java. Após a execução deste comando, um arquivo com a extensão .class contendo bytecode Java será criado em disco, com o seguinte nome: PrimeiraClasse.class. A aplicação java é utilizada para executar um arquivo .class. 79 Guia de Estudos para SCJA
  • 94. Comentário em Java // -> Comentário de uma única linha   /* Comentário longo com mais de uma linha */   /** *Javadoc * @author Rafael Guimarães Sakurai */ 80 Guia de Estudos para SCJA
  • 95. Comentário em Java 81 /** * Classe utilizada para demonstrar o uso de comentários. * * Depois que uma classe Java é compilada, os comentários não vão * para os códigos compilados .class, dessa forma os comentários * não interferem no tamanho final do projeto. * * @author Rafael Guimarães Sakurai */ public class ExemploComentario { public static void main(String[] args) { //Imprime uma mensagem para o usuario. System.out.println("Demonstrando o uso dos comentarios."); /* Podemos utilizar esta forma quando queremos escrever um comentário mais longo para exemplicar o código. */ } } Guia de Estudos para SCJA
  • 96. Palavras-chave da linguagem Java 82 Guia de Estudos para SCJA
  • 97. 3.1 - Desenvolver código que utilize primitivas, tipos de enumeração e referências a objetos, e reconhecer literais desses tipos. 83
  • 98. Tipos Primitivos Uma variável é a forma de representar valores primitivos ou objetos:   Variáveis primitivas: podem ser do tipo byte, short, int, long, float, double, char ou boolean. Variáveis de referência: usada para referenciar um objeto. Quando usamos uma variável de referencia definimos qual o tipo do objeto ou um subtipo do tipo do objeto (veremos isso mais para frente). 84 Guia de Estudos para SCJA
  • 99. Lista de Tipos Primitivos 85 Guia de Estudos para SCJA
  • 100. Tipos Inteiros (byte, short, int, long) Tipos inteiros trabalham apenas com números inteiros, positivos ou negativos. Os valores podem ser representados nas bases octal, decimal e hexadecimal. Inteiro em octal Qualquer valor escrito utilizando números de 0 a 7 começando com 0 é um valor na base octal, exemplo:   short s = 010; // Equivale ao valor 8 em decimal. int i = 025; // Equivale ao valor 21 em decimal. 86 Guia de Estudos para SCJA
  • 101. Tipos Inteiros (byte, short, int, long) Inteiro em decimal Qualquer valor escrito utilizando números de 0 a 9 é um valor decimal, este é o tipo de representação mais comum, pois é utilizada no dia a dia, exemplo: int i = 9; long b = 9871342132; 87 Guia de Estudos para SCJA
  • 102. Tipos Inteiros (byte, short, int, long) Inteiro em hexadecimal Qualquer valor escrito utilizando números de 0 a 9 e A a F começando com 0x ou 0X é um valor hexadecimal, exemplo:   long a = OxCAFE; // Equivale ao valor 51966 em decimal int b = 0X14a3; // Equivale ao valor 5283 em decimal 88 Guia de Estudos para SCJA
  • 103. Tipos Inteiros (byte, short, int, long) Quando um número é maior que o tamanho de um tipo inteiro precisamos especificar o tipo como um long, para isso devemos adicionar a letra l ou L depois do seu valor, exemplo: long a = 0Xcafel; long b = 0752L; long c = 987654321L; 89 Guia de Estudos para SCJA
  • 104. Exemplo tipo primitivo inteiro 90 /** * Exemplo de utilização dos tipos primitivos byte, short, int e long. */ public class ExemploTipoPrimitivo { public static void main(String[] args) { //Inicializando atributos primitivos com valores na base octal. byte a = 077; short b = 010; int c = 025; System.out.println(a); // Imprime 63 System.out.println(b); // Imprime 8 System.out.println(c); // Imprime 21 //Inicializando atributos primitivos com valores na base decimal. int d = 9; long e = 9871342132L; System.out.println(d); // Imprime 9 System.out.println(e); // Imprime 9871342132 Guia de Estudos para SCJA
  • 105. Exemplo tipo primitivo inteiro 91 //Inicializando atributos primitivos com valores na base hexadecimal. long f = 0XCAFE; long g = 0Xcafel; int h = 0X14a3; long i = 0752L; long j = 987654321L; System.out.println(f); // Imprime 51966 System.out.println(g); // Imprime 51966 System.out.println(h); // Imprime 5283 System.out.println(i); // Imprime 490 System.out.println(j); // Imprime 987654321 } } Guia de Estudos para SCJA
  • 106. Exemplo tipo primitivo inteiro Compilar e executar o arquivo ExemploTipoPrimitivo. java 92 Guia de Estudos para SCJA
  • 107. Tipos Ponto Flutuante (float e double) Tipos de ponto flutuante servem para representar números com casas decimais, tanto negativos quanto positivos. Todos números com ponto flutuante são por padrão do tipo double. float f = 10.99f; double b = 10.3D; double c = 10.3; // Erro de compilação, pois o padrão do valor é double. floaf c = 1.99; OBS: Números com ponto flutuante devem ser escritos com ponto final ( . ). 93 Guia de Estudos para SCJA
  • 108. Exemplo tipo primitivo inteiro com ponto flutuante 94 /** * Exemplo de utilização dos tipos primitivos float e double. */ public class ExemploTipoPrimitivo2 { public static void main(String[] args) { //Definindo explicitamente que o valor é float. float a = 10.99f; //Definindo explicitamente que o valor é double. double b = 10.3D; //Atribuindo o valor inteiro para um tipo double. double c = 5; //Atribuindo um valor double, por padrão todos números // com casas decimais são do tipo double. double d = 7.2; System.out.println(a); // Imprime 10.99 System.out.println(b); // Imprime 10.3 System.out.println(c); // Imprime 5.0 System.out.println(d); // Imprime 7.2 } } Guia de Estudos para SCJA
  • 109. Exemplo tipo primitivo inteiro com ponto flutuante Compilar e executar o arquivo ExemploTipoPrimitivo2. java 95 Guia de Estudos para SCJA
  • 110. Tipo caractere (char) O tipo caractere, como o próprio nome já diz, serve para representar um valor deste tipo. Sua inicialização permite 3 modelos: char a = ‘a’; //Inicialização usual com 1 caractere. char a = 97; //Inicialização com código ASCII. char u = ‘0025’; //Equivale ao caractere ‘%’ Os caracteres podem ser representados por números e possuem o mesmo tamanho de um atributo short. O unicode é no formato hexadecimal, portanto o exemplo anterior ‘0025’ equivale a 37 na base decimal. 96 Guia de Estudos para SCJA
  • 111. Exemplo tipo primitivo caractere 97 /** * Exemplo de utilização do tipo primitivo char. */ public class ExemploTipoPrimitivo3 { public static void main(String[] args) { //Definindo explicitamente um valor caracter. char a = 'a'; //Definindo explicitamente um valor numerico. char b = 97; //Definindo explicitamente um valor unicode. char c = '0025'; System.out.println(a); // Imprime a System.out.println(b); // Imprime a System.out.println(c); // Imprime % } } Guia de Estudos para SCJA
  • 112. Exemplo tipo primitivo caractere Compilar e executar o arquivo ExemploTipoPrimitivo3. java 98 Guia de Estudos para SCJA
  • 113. Tipo booleano (boolean) Tipo que representa valores lógicos true (verdadeiro) ou false (falso), exemplo: boolean a = true; boolean b = false; 99 Guia de Estudos para SCJA
  • 114. Casting 100 Guia de Estudos para SCJA
  • 115. Casting Para fazer um casting, basta sinalizar o tipo para o qual se deseja converter entre parênteses, da seguinte forma:   float f = (float) 5.0; Conversão do double 5.0 para float. int b = (int) 5.1987; Conversão de double para int.   float c = 100; Conversão de int para float é implícito, não precisa de casting.   int d = ‘d’; Conversão de char para int é implícito, não precisa de casting.  101 Guia de Estudos para SCJA
  • 116. Exemplo casting 102 /** * Exemplo de conversão de tipos primitivos utilizando casting. */ public class ExemploCasting { public static void main(String[] args) { //Casting feito implicitamente, pois o valor possui um // tamanho menor que o tipo da variável que irá recebe-lo. char a = 'a'; int b = 'b'; float c = 100; System.out.println(a); // Imprime a System.out.println(b); // Imprime 98 System.out.println(c); // Imprime 100.0 //Casting feito explicitamente, pois o valor possui um tamanho // maior que o tipo da variável que irá recebe-lo. int d = (int) 5.1987; int e = (char) (a + 5); char f = (char) 110.5; System.out.println(d); // Imprime 5 System.out.println(e); // Imprime 102 System.out.println(f); // Imprime n } } Guia de Estudos para SCJA
  • 117. Exemplo casting Compilar e executar o arquivo ExemploCasting.java 103 Guia de Estudos para SCJA
  • 118. Vetor (array) Segundo a definição mais clássica da informática, um vetor é uma estrutura de dados homogenia, ou seja, todos os elementos de um vetor são do mesmo tipo. A estrutura básica de um vetor é representada por seu nome e um índice, que deve ser utilizado toda a vez que se deseja acessar um determinado elemento dentro de sua estrutura. Todo vetor possui um tamanho fixo, ou seja, não é possível redimensionar um vetor ou adicionar a ele mais elementos do que este pode suportar. Em Java a posição inicial do vetor é definida pelo valor zero. 104 Guia de Estudos para SCJA
  • 119. Vetor (array) Um vetor é composto de três partes: Declaração Criação Inicialização Podemos também criar e inicializar o vetor da seguinte forma: 105 int[] valores; // ou int valores[]; String[] nomes; // ou String nomes[]; int[] valores = newint[100]; String[] nomes = new String[50]; valores[0] = 5; nomes[10] = "Rafael"; int[] valores = {2, 5, 4, 8, 5}; Guia de Estudos para SCJA
  • 120. Vetor (array) Exemplo de utilização de array: 106 publicclassExemploVetor { publicstaticvoidmain(String[] args) { int[] vetor = {2, 5, 4, 8, 5}; System.out.println("Elemento do indice 2 = " + vetor[2]); System.out.println("Elemento do indice 4 = " + vetor[4]); System.out.println("Percorrendo todos os elementos do vetor"); for(int i = 0; i < vetor.length; i++) { System.out.println("Indice[" + i + "]= " + vetor[i]); } } } Guia de Estudos para SCJA
  • 121. Vetor (array) Todo vetor em Java é um objeto, mesmo que ele possua apenas atributos primitivos. Quando os vetores são criados eles já são inicializado com os valores padrões para os tipos que eles guardam. O primeiro índice do vetor é sempre zero, logo, seu último elemento é sempre igual ao tamanho do vetor menos um. Se acessar uma posição do vetor que não existe será lançado uma java.lang.ArrayIndexOutOfBoundsException. 107 Guia de Estudos para SCJA
  • 122. Enumeration Enumeration ou enum é uma alternativa ao uso de valores constantes. O enum criado pode ser criado em um arquivo separado ou dentro de outra classe. Podem conter: Variáveis de instância, métodos e construtores. Problemas na utilização de constante: As constantes não oferecem segurança. Não há um domínio estabelecido. Fragilidade de modelo. Seus valores impressos são pouco informativos 108 Guia de Estudos para SCJA
  • 123. Enumeration Exemplo de utilização de constantes: 109 /** * Classe utilizada para demonstrar as fragilidades das contantes. */ public class ExemploUsarEnums { publicstatic final int CONCEITO_RUIM = 1; publicstatic final int CONCEITO_BOM = 2; publicstatic final int CONCEITO_OTIMO = 3; public void calcularAprovacao(int conceito) { if(conceito == CONCEITO_OTIMO) { System.out.println("Aprovado com louvor!"); } else if (conceito == CONCEITO_BOM) { System.out.println("Aprovado!"); } else if (conceito == CONCEITO_RUIM) { System.out.println("Reprovado!"); } } } Guia de Estudos para SCJA
  • 124. Enumeration Exemplo de criação de enum: 110 /** * Enum para conceitos de avaliação de disciplinas. */ public enum ConceitoEnum { RUIM, BOM, REGULAR, OTIMO; public void calcularAprovacao(ConceitosEnum conceito) { if(conceito == OTIMO) { System.out.println("Aprovado com louvor!"); } else if (conceito == REGULAR) { System.out.println("Regular!"); } else if (conceito == BOM) { System.out.println("Aprovado!"); } else if (conceito == RUIM) { System.out.println("Reprovado!"); } } } Guia de Estudos para SCJA
  • 125. Enumeration Exemplo de enum com atributo e construtor: 111 /** * Enum para conceitos de avaliação de disciplinas. */ public enumConceitoEnumComConstrutor { RUIM("Reprovado!"), BOM("Aprovado!"), REGULAR("Regular"), OTIMO("Aprovado com louvor"); private final String mensagem; //O construtor de um enum pode ser default ou private. privateConceitoEnumComConstrutor(String mensagem) { this.mensagem = mensagem; } public String calcularAprovacao() { return this.mensagem; } } Guia de Estudos para SCJA
  • 126. Enumeration Compilando e executando a classe PrincipalTesteEnum. java 112 /** * Classe para testar o uso de enum. */ public class PrincipalTesteEnum { public static void main(String[] args) { System.out.println("Conceito..:" + ConceitoEnumComConstrutor.OTIMO.calcularAprovacao(); } } Guia de Estudos para SCJA
  • 127. Outros informações das enums: Enumeration 113 publicclass PrincipalTesteEnum2 { publicstaticvoidmain(String[] args) { //Percorrendo todas as enums for(ConceitoEnumComConstrutor conceito : ConceitoEnumComConstrutor.values()) System.out.println(conceito); //Buscando um enum pelo seu nome. System.out.println(ConceitoEnumComConstrutor.valueOf("BOM")); //método name() que retorna o nome da propriaenum. System.out.println(ConceitoEnumComConstrutor.OTIMO.name()); //método ordinal() retorna a posição da ordem em que a enum foi declarada. System.out.println(ConceitoEnumComConstrutor.OTIMO.ordinal()); } } Guia de Estudos para SCJA
  • 128. Referência a objeto Como Java é uma linguagem orientada a objetos é muito comum declararmos atributos ou variáveis que possuem referência a objetos em memória. Exemplo: 114 Produto prod = new Produto(); Pessoa paulo = new Pessoa("Paulo"); String texto = new String("Explicação de referência de objeto"); int[] valores = new int[100]; Guia de Estudos para SCJA
  • 129. Referência a objeto 115 public class ExemploReferencia{ publicstaticvoidmain(String[] args) { Produto prod = new Produto(); prod.setNome("Duke"); prod.setPreco(75.90); Pessoa paulo = new Pessoa("Paulo"); paulo.setIdade(40); paulo.setCpf("111.111.111-11"); } } Heap 115 Guia de Estudos para SCJA
  • 130. 3.2 - Desenvolver código que declare classes concretas, classes abstratas e interfaces, código que ofereça suporte a herança de interface e implementação, código que declare métodos e atributos de instâncias e código que utilize modificadores de acesso Java: privados e públicos. 116
  • 131. Classe Concreta Nome da Classe Carro, Pessoa, ContaCorrente, CaixaCorreio Atributos idade, nome, listaMensagens, notaAluno Métodos getPessoa, consultarAluno, enviarMensagemEmail 117 Guia de Estudos para SCJA
  • 132. Classe Concreta 118 /** * Classe utilizada para demonstrar a estrutura de uma classe. */ public class NovaClasse { /* Declaração dos atributos da classe. */ public int atributo1; public float atributo2; public boolean atributo3; /* Declaração dos métodos da classe. */ public void metodo1() { //Comandos System.out.println("Chamando o metodo 1."); } public void metodo2() { //Comandos System.out.println("Chamando o metodo 2."); } } Guia de Estudos para SCJA
  • 133. Classe Concreta publicclass Livro { private String titulo; private String autor; privatedoublepreco; public Livro() { } publicvoidsetTitulo(String _titulo) { titulo = _titulo; } public String getTitulo() { return titulo; } publicvoidsetAutor(String _autor) { autor = _autor; } public String getAutor() { return autor; } publicvoidsetPreco(double _preco) { preco = _preco; } public String getPreco() { returnpreco; } } 119 Guia de Estudos para SCJA
  • 134. Atributo de instância Atributos de instância são “variáveis” declaradas a nível de classe, que são utilizados para representar as propriedades (estado) que o objeto desta classe pode ter. Por convenção, costuma-se escrever o atributo com letras minúsculas, a menos que ele seja composto por mais de uma palavra, a primeira palavra é toda em minúscula e as demais começam com a primeira letra em maiúsculo e o restante da palavra em minúscula. Exemplo: idade, nome, listaMensagens, notaAlunoTurma, etc 120 Guia de Estudos para SCJA
  • 135. Atributo de instância Exemplo de declaração de atributo: 121 /** * Classe utilizada para demonstrar a utilização de atributos. */ public class Atributo { /* Declaração dos atributos da classe. */ public int atributo1; public float atributo2; public boolean atributo3; } Guia de Estudos para SCJA
  • 136. Métodos São blocos de códigos que representam as funcionalidades (ações) que a classe apresentará. Por convenção, costuma-se escrever o método com letras minúsculas, a menos que ele seja composto por mais de uma palavra, a primeira palavra é toda em minúscula e as demais começam com a primeira letra em maiúsculo e o restante da palavra em minúscula. Exemplo: getPessoa, consultarDadosAluno, enviarMensagemEmail, etc 122 Guia de Estudos para SCJA
  • 137. Métodos Os métodos podem ou não retornar algum valor no final de sua execução, esta informação deve constar na assinatura do método. Quando não desejamos retornar valor devemos a palavra chave void. Podemos também informar o tipo de retorno que pode ser um tipo primitivo ou referencia de objeto, lembrando que quando informamos o tipo de retorno então é obrigatório que esse retorno aconteça. 123 Guia de Estudos para SCJA
  • 138. Métodos 124 /** * Classe utilizada para demonstrar o uso de métodos com retorno de valor. */ public class MetodoRetorno { public int atributo1; /** * Método utilizado para retornar o atributo1. * @return int com o valor do atributo1. */ public int metodo1() { System.out.println("Chamou o metodo 1."); return atributo1; } /** * Método que verificar se o atributo1 é maior ou igual a 0 (zero). * @return boolean informando se o atributo1 é positivo */ public boolean metodo2() { System.out.println("Chamou o metodo 2."); return atributo1 >= 0; } } Guia de Estudos para SCJA
  • 139. Métodos Os métodos também podem receber valores para serem utilizados durante sua execução, esses valores são chamados parâmetros. Exemplo: 125 /** * Classe utilizada para demonstrar o uso de métodos que recebem parâmetros. */ publicclassMetodoParametro { publicint atributo1; /** * Método utilizado para atribuir o valor do atributo1. */ publicvoid metodo1(int valor) { System.out.println("Chamando o metodo 1."); atributo1 = valor; System.out.println("O valor do atributo1 eh: " + atributo1); } Guia de Estudos para SCJA
  • 140. Métodos 126 /** * Método que recebe uma quantidade de parâmetros variados e imprime todos os * valores recebidos. Essa possibilidade de receber uma quantidade de * parâmetros variados é chamado de varargs e foi implementado a partir * da versão 5.0 do java. */ publicvoid metodo2(int... valores) { System.out.println("Chamando o metodo 2."); if(valores.length > 0) { /* Para cada argumento recebido como parâmetro, imprime seu valor. */ for(intcont = 0; cont < valores.length; cont++) { int valor = valores[cont]; System.out.print(valor + " "); } System.out.println(""); /* Este for faz a mesma coisa que o anterior, este novo tipo de for chamado foreach foi implementado a partir da versão 5.0 do java. */ for(int valor : valores) { System.out.print(valor + " "); } } } } Guia de Estudos para SCJA
  • 141. Métodos com passagem de parâmetro 127 Stack publicclassVendaLivro { publicstaticvoidmain(String[] args) { int quantidade = 3; Livro livro = new Livro(); livro.setTitulo("Java com Aveia"); livro.setAutor("Sakurai"); livro.setPreco(35.90); Comprovante c = new Comprovante(); c.emitir(quantidade, livro); } } Heap publicclass Comprovante { publicvoid emitir(int qtd, Livro l) { /* utiliza o qtd e o l para emitir comprovante. */ } } Guia de Estudos para SCJA
  • 142. Métodos com passagem de parâmetro 128 Stack publicclassVendaLivro { publicstaticvoidmain(String[] args) { int quantidade = 3; Livro livro = new Livro(); livro.setTitulo("Java com Aveia"); livro.setAutor("Sakurai"); livro.setPreco(35.90); Comprovante c = new Comprovante(); c.emitir(quantidade, livro); } } Heap publicclass Comprovante { publicvoid emitir(int qtd, Livro l) { /* utiliza o qtd e o l para emitir comprovante. */ } } Guia de Estudos para SCJA
  • 143. Métodos Para construirmos uma classe precisamos chamar um método construtor, exemplo: Livro livro = newLivro(); O método construtor é especial pois através dele é criado um objeto da classe. Um construtor tem a seguinte assinatura: visibilidade NomeClasse(parâmetros) Note que neste exemplo o método construtor Livro() não recebe nenhum parâmetro, também chamado de construtor padrão. Quando não declaramos nenhum construtor na classe, o compilador do Java adiciona um construtor padrão. 129 Guia de Estudos para SCJA
  • 144. Classe Abstrata Define um modelo (template) para representar entidades e conceitos abstratos. Utilizada como classe pai (base) para criação de outras classes. Pode ter métodos implementados de forma genérica Pode definir métodos abstratos que devem ser implementados pelas subclasses concretas. Em Java para criarmos uma classe abstrata utilizamos a palavra-chave abstract. 130 Guia de Estudos para SCJA
  • 145. Exemplo UML de classe abstrata 131 Guia de Estudos para SCJA
  • 146. Exemplo de classe Abstrata 132 /** * Classe abstrata que possui os métodos básicos para * as telas do computador de bordo de um veiculo. */ publicabstractclass Tela { private String titulo; publicvoidsetTitulo(String titulo) { this.titulo = titulo; } public abstract String obterInformacao(); publicvoid imprimir() { System.out.println(this.titulo); System.out.println("" + obterInformacao()); } } Guia de Estudos para SCJA
  • 147. Exemplo de classe Abstrata 133 /** * Tela que mostra a kilometragem percorrida por um veiculo. */ publicclassTelaKilometragemextends Tela { /* Atributo que guarda o valor da km atual do veiculo. */ int km = 0; /* Construtor que iniciliza o titulo da tela. */ publicTelaKilometragem() { /* Atribui o valor do titulo desta tela. */ super.setTitulo("Km Atual"); } /** * Implementa o método abstrato da classe Tela, * neste método buscamos a km atual do veiculo. * @return Texto com a km atual. */ @Override public String obterInformacao() { km += 10; return String.valueOf(km) + " km"; } } Guia de Estudos para SCJA
  • 148. Exemplo de classe Abstrata 134 /** * Classe utilizada para testar a Tela Kilometragem. */ public class TesteTelaKm { public static void main(String[] args) { TelaKilometragem tk = new TelaKilometragem(); tk.imprimir(); System.out.println("------------"); tk.imprimir(); } } Guia de Estudos para SCJA
  • 149. Exemplo de classe Abstrata Compilar os arquivos Tela.java, TelaKilometragem.java e TesteTelaKm e executar o arquivo TesteTelaKm.class. 135 Guia de Estudos para SCJA
  • 150. Interface A interface é utilizada para definir assinaturas de métodos que todas as classes que forem implementá-la devem seguir. Podemos associar uma interface a um contrato onde todas as classes que querem ter esse contrato precisam implementar seus métodos. Para criar uma interface em Java utilizamos a palavra-chave interface. 136 Guia de Estudos para SCJA
  • 151. Interface A interface pode: uma interface pode extender outra interface declarar atributos como constantes declarar assinatura de métodos públicos A interface não pode: implementar método declarar construtor extender classe implementar outra interface não pode ser final não pode ter métodos com visibilidade private, protected ou default (padrão) 137 Guia de Estudos para SCJA
  • 152. Exemplo de Interface 138 Guia de Estudos para SCJA
  • 153. Exemplo de Interface 139 /** * Classe utilizada para representar uma Conta bancaria. */ publicclass Conta { // Nome do proprietário da Conta. private String nomeProprietario; // Número da Conta. privateint numero; // Saldo da Conta. privatedouble saldo; public String getNomeProprietario() { returnnomeProprietario; } publicvoidsetNomeProprietario(String nomeProprietario) { this.nomeProprietario = nomeProprietario; } publicintgetNumero() { return numero; } publicvoidsetNumero(int numero) { this.numero = numero; } publicdoublegetSaldo() { return saldo; } publicvoidsetSaldo(double saldo) { this.saldo = saldo; } } Guia de Estudos para SCJA
  • 154. Exemplo de Interface 140 /** * Interface utilizada para representar os métodos mínimos que * os bancos precisam implementar. */ publicinterface Banco { public abstractvoidmanutencaoConta(Conta conta); public abstractboolean saque(Conta conta, double valor); public abstractboolean deposito(Conta conta, double valor); public abstractvoid extrato(Conta conta); } Guia de Estudos para SCJA
  • 155. Exemplo de Interface 141 /** * Classe utilizada para representar o Banco Sakurai */ public class BancoSakurai implements Banco { // Conta que representa o Banco Sakurai. private Conta contaBancoSakurai = null; /** * Construtor padrão da classe. * Cria uma conta para o banco sakurai. */ public BancoSakurai() { this.contaBancoSakurai = new Conta(); this.contaBancoSakurai.setNomeProprietario("Banco Sakurai"); this.contaBancoSakurai.setNumero(0); this.contaBancoSakurai.setSaldo(0d); } publicvoidmanutencaoConta(Conta conta) { booleantemSaldo = conta.getSaldo() >= 0.25; Guia de Estudos para SCJA
  • 156. Exemplo de Interface 142 //Verifica se tem saldo para realizar a manutenção da conta. if(temSaldo) { doublenovoSaldo = conta.getSaldo() - 0.25; conta.setSaldo(novoSaldo); //Deposita o dinheiro da manutenção na conta do banco sakurai. deposito(this.contaBancoSakurai, 0.25); } else { System.out.println("Não conseguiu cobrar a manutenção da conta " + conta.getNumero() + " !!!"); } } public boolean saque(Conta conta, double valor) { //Verifica se tem saldo suficiente para fazer o saque if(conta.getSaldo() >= valor) { //Realiza o saque na conta. double novoValor = conta.getSaldo() - valor; conta.setSaldo( novoValor ); System.out.println("Saque efetuado!!!"); //Toda vez que fizer um saque faz cobra a manutenção da conta. manutencaoConta(conta); return true; Guia de Estudos para SCJA
  • 157. Exemplo de Interface 143 } else { System.out.println("Não conseguiu fazer o saque!!!"); //Se não conseguir fazer o saque, mostra o extrato da conta. extrato(conta); returnfalse; } } public boolean deposito(Conta conta, double valor) { //Realiza o deposito na conta. double novoValor = conta.getSaldo() + valor; conta.setSaldo(novoValor); System.out.println("Deposito efetuado!!!"); return true; } public void extrato(Conta conta) { System.out.println(" -- BANCO SAKURAI -- "); System.out.println("-> EXTRATO CONTA"); System.out.println("Nome: " + conta.getNomeProprietario()); System.out.println("Numero: " + conta.getNumero()); System.out.println("Saldo: " + conta.getSaldo()); System.out.println("---------------------"); } Guia de Estudos para SCJA
  • 158. Exemplo de Interface 144 public boolean transferencia(Conta contaOrigem, Conta contaDestino, double valor) { boolean fezSaque = saque(contaOrigem, valor); //Verifica se conseguiu sacar dinheiro na conta de origem. if(fezSaque) { //Faz o deposito na conta de destino. deposito(contaDestino, valor); System.out.println("Transferencia efetuada."); return true; } else { System.out.println("Não conseguiu fazer a transferencia."); return false; } } } Guia de Estudos para SCJA
  • 159. Exemplo de Interface 145 /** * Classe utilizada para representar o Banco Cristiano. */ publicclassBancoCristianoimplements Banco { private Conta contaBancoCristiano = null; publicBancoCristiano() { this.contaBancoCristiano = new Conta(); this.contaBancoCristiano.setNomeProprietario("Banco Cristiano"); this.contaBancoCristiano.setNumero(0); this.contaBancoCristiano.setSaldo(0d); } publicvoidmanutencaoConta(Conta conta) { //Sempre executa o saque na conta bancaria. doublenovoSaldo = conta.getSaldo() - 0.01; conta.setSaldo(novoSaldo); //Deposita o dinheiro da manutenção na conta do Banco Cristiano. doublesaldoBanco = this.contaBancoCristiano.getSaldo() + 0.01; this.contaBancoCristiano.setSaldo(saldoBanco); } Guia de Estudos para SCJA
  • 160. Exemplo de Interface 146 publicboolean saque(Conta conta, double valor) { //Verifica se tem saldo suficiente para fazer o saque if(conta.getSaldo() >= valor) { //Realiza o saque na conta. doublenovoValor = conta.getSaldo() - valor; conta.setSaldo( novoValor ); System.out.println("Saque efetuado!!!"); //Toda vez que fizer um saque faz cobra a manutenção da conta. manutencaoConta(conta); returntrue; } else { System.out.println("Não conseguiu fazer o saque!!!"); //Se não conseguir fazer o saque, mostra o extrato da conta. extrato(conta); returnfalse; } } Guia de Estudos para SCJA
  • 161. Exemplo de Interface 147 publicboolean deposito(Conta conta, double valor) { //Realiza o deposito na conta. doublenovoValor = conta.getSaldo() + valor; conta.setSaldo(novoValor); System.out.println("Deposito efetuado!!!"); //Toda vez que fizer um deposito faz cobra a manutenção da conta. manutencaoConta(conta); returntrue; } publicvoid extrato(Conta conta) { System.out.println(" -- BANCO CRISTIANO -- "); System.out.println("-> EXTRATO CONTA"); System.out.println("Nome: " + conta.getNomeProprietario()); System.out.println("Numero: " + conta.getNumero()); System.out.println("Saldo: " + conta.getSaldo()); System.out.println("---------------------"); } } Guia de Estudos para SCJA
  • 162. Exemplo de Interface 148 /** * Classe utilizada para testar a interface Banco, e as * classes BancoCristiano e BancoSakurai. */ publicclassBancoTeste { publicstaticvoidmain(String[] args) { Banco bancoCristiano = newBancoCristiano(); Conta contaC = new Conta(); contaC.setNomeProprietario("Cristiano Camilo"); contaC.setNumero(1); contaC.setSaldo(1000); bancoCristiano.deposito(contaC, 150.50); bancoCristiano.saque(contaC, 500); bancoCristiano.extrato(contaC); Banco bancoSakurai = newBancoSakurai(); Conta contaS = new Conta(); contaS.setNomeProprietario("Rafael Sakurai"); contaS.setNumero(1); contaS.setSaldo(500); bancoSakurai.deposito(contaS, 40.99); bancoSakurai.saque(contaS, 300); bancoSakurai.extrato(contaS); } } Guia de Estudos para SCJA
  • 163. Exemplo de Interface 149 Guia de Estudos para SCJA
  • 164. Comparativo Classe Abstrata x Interface 150 Guia de Estudos para SCJA
  • 165. Herança Em Java, podemos criar classes que herdam atributos e métodos de outras classes, evitando reescrita de código. Este tipo de relacionamento é chamado de Herança. Para representarmos este tipo de relacionamento na linguagem, devemos utilizar a palavra reservada extends, de forma a apontar para qual classe a nossa nova classe deve herdar seus atributos e métodos. Utilizando herança podemos também guardar instâncias de objetos de subclasses em variáveis do tipo das superclasses. 151 Guia de Estudos para SCJA
  • 166. Herança Uma classe pode herdar apenas de uma classe (superclasse). Quando uma classe não define explicitamente que está herdando outra classe então esta classe é filha de java.lang.Object, ou seja, a classe Object é a classe pai de todas as classes. Por Object ser pai de todas as classes, todas as classes herdam os seguintes métodos dela: 152 Guia de Estudos para SCJA
  • 167. Herança Quando lidamos com classes que possuem a relação de herança, podemos fazer uso de duas palavras-chave que servem para identificar se estamos utilizando um método e ou atributo da classe atual ou de sua super classe, estes comandos são: thisDefine que o recurso pertence à classe atual. super Define que o recurso pertence à super classe. 153 Guia de Estudos para SCJA
  • 168. Herança Neste exemplo temos a superclasse Pessoa, e três subclasses Funcionario, Aluno e Coordenador. 154 Guia de Estudos para SCJA
  • 169. Herança 155 /** * Classe utilizada para representar a Pessoa. */ publicclass Pessoa { private String nome; privateint matricula; /** * Construtor que recebe o nome da pessoa. * @param nome */ public Pessoa(String nome, int matricula) { this.nome = nome; this.matricula = matricula; } publicintgetMatricula() { return matricula; } publicvoidsetMatricula(int matricula) { this.matricula = matricula; } public String getNome() { return nome; } publicvoidsetNome(String nome) { this.nome = nome; } } Guia de Estudos para SCJA
  • 170. Herança 156 /** * Classe utilizada para representar um Funcionario que é uma Pessoa. */ publicclassFuncionarioextends Pessoa { private String departamento; publicFuncionario(String nome, int matricula, String departamento) { super(nome, matricula); this.departamento = departamento; } public String getDepartamento() { return departamento; } publicvoidsetDepartamento(String departamento) { this.departamento = departamento; } } Guia de Estudos para SCJA
  • 171. Herança 157 /** * Classe utilizada para representar um Coordenador que é uma Pessoa. */ publicclass Coordenador extends Pessoa { private String cursoCoordenado; public Coordenador(String nome, int matricula, String cursoCoordenado) { super(nome, matricula); this.cursoCoordenado = cursoCoordenado; } public String getCursoCoordenado() { returncursoCoordenado; } publicvoidsetCursoCoordenado(String cursoCoordenado) { this.cursoCoordenado = cursoCoordenado; } } Guia de Estudos para SCJA
  • 172. Herança 158 /** * Classe utilizada para testar a Herança da classe Funcionario. */ publicclassTesteFuncionario { publicstaticvoidmain(String[] args) { /* Declarações comuns. */ Pessoa camilo = new Pessoa("Camilo", 123); Funcionariorafael = newFuncionario("Rafael", 111, "informatica"); /* Todo Funcionario é uma Pessoa. */ Pessoa sakurai = newFuncionario("Sakurai", 222, "telecomunicação"); /* Erro de compilação, porque nem toda Pessoa é um Funcionario. */ Funcionariocristiano = new Pessoa("Cristiano", 456); } } Guia de Estudos para SCJA
  • 173. Herança Com a declaração acima, temos as classe Funcionario e Coordenador como classes filha ou subclasses da classe paiPessoa. Com isso podemos dizer que as subclasses Funcionario e Coordenador herdam todos os atributos e métodos da sua superclasse Pessoa. Por isso lembre-se, o FuncionarioÉ UMAPessoa, pois é uma subclasse, logo apenas possui algumas características a mais do que Pessoa, porém podemos sempre manuseá-lo como uma Pessoa. 159 Guia de Estudos para SCJA
  • 174.
  • 175. Modificadores de acesso 161 Guia de Estudos para SCJA
  • 176. 3.3 - Desenvolver código que implemente associações de classes simples e código que implemente multiplicidade usando matrizes; e reconhecer código que implemente composições em oposição a associações simples e código que implemente corretamente a navegação de associações. 162
  • 177. Associação de classe simples Associação é quando uma classe possui um relacionamento com outra classe, exemplo: A classe Usuario possui um atributo chamado perfil que é do tipo da classe Perfil e um atributo chamado endereco que é do tipo da classe Endereco. 163 Guia de Estudos para SCJA
  • 178. A implementação em Java fica da seguinte forma: Associação de classe simples 164 publicclass Perfil { private String nome; } publicclassEndereco { private String estado; private String cidade; private String bairro; private String logradouro; private String cep; } publicclassUsuario{ private String nome; private String cpf; private String login; private String senha; private Perfil perfil; privateEnderecoendereco; } Guia de Estudos para SCJA
  • 179. Composição Uma composição é um relacionamento mais forte que a associação, pois uma classe depende da outra para existir, exemplo: A classe DetalheUsuario depende da classe Usuario para ser criada, sem a classe Usuario não tem porque ela existir. 165 Guia de Estudos para SCJA
  • 180. Composição A implementação em Java fica da seguinte forma: 166 publicclassUsuario{ private String nome; private String login; private String senha; private Perfil perfil; privateDetalheUsuario detalhe; } publicclassDetalheUsuario { private String endereco; private String telefone; private String email; } Guia de Estudos para SCJA
  • 181. Navegação A navegação informa a direção entre os relacionamentos. A partir da classe Venda podemos chegar nas classes Funcionario, Produto e Cliente. 167 Guia de Estudos para SCJA
  • 182. Navegação A implementação em Java fica da seguinte forma: 168 publicclassFuncionario { private String nome; } publicclass Cliente { private String nome; } publicclass Produto{ private String nome; privatedoublepreco; } publicclass Venda { private Cliente cliente; private Produto produto; privateFuncionariofuncionario; public Cliente getCliente() { returnthis.cliente; } public Produto getProduto() { returnthis.produto; } publicFuncionariogetFuncionario() { returnthis.funcionario; } } Guia de Estudos para SCJA
  • 183. Multiplicidade com matrizes Quando uma classe pode guardar mais de uma referencia para outra classe, podemos utilizar uma estrutura de vetor, matriz, lista e outros, exemplo: A classe Pagamento possui um conjunto da classe Servico, através do relacionamento da UML sabemos que é no mínimo 1 e não tem limite de quantidade máxima. 169 Guia de Estudos para SCJA
  • 184. Multiplicidade com matrizes A implementação em Java fica da seguinte forma: 170 publicclass Pagamento{ private Prestador prestador; privateServico[] servicos; privatelong numero; publicServico[] getServicos() { returnthis.servicos; } } publicclassServico { private String nome; privateBigDecimalpreco; privatechar status; } Guia de Estudos para SCJA
  • 185. 3.4 - Desenvolver código que utilize polimorfismo para classes e interfaces, bem como reconhecer código que utilize o princípio "programa para uma interface". 171
  • 186. Polimorfismo Polimorfismo é a capacidade de um objeto ser referenciado de diversas formas e com isso realizar as mesmas tarefas (ou chamadas de métodos) de diferentes formas. Durante a execução do programa, a JVM verifica qual a classe de origem do objeto e chama o método desta classe. 172 Guia de Estudos para SCJA
  • 187. Polimorfismo com herança 173 Guia de Estudos para SCJA
  • 188. Polimorfismo com herança 174 /** * Classe utilizada para representar uma Pessoa. */ publicclass Pessoa { private String nome; public String getNome() { return nome; } publicvoidsetNome(final String nome) { this.nome = nome; } } Guia de Estudos para SCJA
  • 189. Polimorfismo com herança 175 /** * Classe utilizada para representar uma Pessoa Fisica * que É UMA subclasse de Pessoa. */ publicclassPessoaFisicaextends Pessoa { private String cpf; public String getCpf() { returncpf; } publicvoidsetCpf(String cpf) { this.cpf = cpf; } public String getNome() { return "Pessoa Fisica: " + super.getNome() + " - CPF: " + this.getCpf(); } } Guia de Estudos para SCJA
  • 190. Polimorfismo com herança 176 /** * Classe utilizada para representar uma Pessoa Fisica * que É UMA subclasse de Pessoa. */ publicclassPessoaJuridicaextends Pessoa { private String cnpj; public String getCnpj() { returncnpj; } publicvoidsetCnpj(String cnpj) { this.cnpj = cnpj; } public String getNome() { return "Pessoa Juridica: " + super.getNome() + " - CNPJ: " + this.getCnpj(); } } Guia de Estudos para SCJA
  • 191. Polimorfismo com herança 177 /** * Classe utilizada para demonstrar o uso do polimorfismo, vamos criar um vetor * de Pessoa e adicionar nele objetos do tipo PessoaFisica e PessoaJuridica. */ publicclassTestePessoa { publicstaticvoidmain(String[] args) { PessoaFisicafisica = newPessoaFisica(); fisica.setNome("Cristiano"); fisica.setCpf("12345678901"); PessoaJuridicajuridica = newPessoaJuridica(); juridica.setNome("Rafael"); juridica.setCnpj("010101010101010101"); Pessoa[] pessoas = new Pessoa[2]; pessoas[0] = fisica; pessoas[1] = juridica; for(Pessoa pessoa : pessoas) { System.out.println(pessoa.getNome()); } } } Guia de Estudos para SCJA
  • 192. Polimorfismo com herança Durante o laço for, mesmo as variáveis sendo do tipo Pessoa, o método getNome() foi chamado da classe PessoaFisica e PessoaJuridica, porque durante a execução do programa, a JVM percebe de qual classe foi criada o objeto que está guardado na variável pessoa. 178 Guia de Estudos para SCJA
  • 193. Polimorfismo com Interface 179 Guia de Estudos para SCJA
  • 194. Polimorfismo com Interface 180 /** * Interface que deve ser implementada por todas as classes que devem * ser ordenadas. */ publicinterfaceComparavel { /** * Assinatura de método que toda classe que quer permitir * a comparação entre seus objetos precisa implementar. * * @param o - Objeto que será comparado. * @return 0 se os objetos forem iguais * > 0 se o objeto recebido é menor que o objeto que será comparado. * < 0 se o objeto recebido é maior que o objeto que será comparado. */ public abstract int comparar(Object o); } Guia de Estudos para SCJA
  • 195. Polimorfismo com Interface 181 /** * Classe utilizada para ordenar qualquer tipo de classe * que implementa a interface Comparavel. */ publicclass Ordenar { /** * Método que utiliza o algoritmo de bubblesort * para ordenar um vetor de objetos do tipo <code>Comparavel</code>. * @param objetos - Vetor de objetos que ordenados. */ publicvoid ordenar(Comparavel[] objetos) { for (int i = 0; i < objetos.length; i++) { for (int j = i + 1; j < objetos.length; j++) { /* Verifica se os objetos não estão na ordem. */ if(objetos[i].comparar(objetos[j]) > 0) { /* Troca os objetos de lugar no vetor. */ Comparaveltemp = objetos[i]; objetos[i] = objetos[j]; objetos[j] = temp; } } } } } Guia de Estudos para SCJA
  • 196. Polimorfismo com Interface 182 /** * Classe utilizada para representar um Livro, esta classe * implementa a interface Comparavel. */ publicclass Livro implementsComparavel { private String autor; private String titulo; public Livro(String autor, String titulo) { this.autor = autor; this.titulo = titulo; } public String getAutor() { return autor; } publicvoidsetAutor(String autor) { this.autor = autor; } public String getTitulo() { return titulo; } Guia de Estudos para SCJA
  • 197. Polimorfismo com Interface 183 public void setTitulo(String titulo) { this.titulo = titulo; } publicint comparar(Object o) { intcomparacao = 0; //Verifica se o objeto que vai comparar é do tipo Livro. if (o instanceof Livro) { Livro livro = (Livro) o; comparacao = this.getAutor().compareTo(livro.getAutor()); //Se os autores forem iguais, compara o titulo dos livros. if (comparacao == 0) { comparacao = this.getTitulo().compareTo(livro.getTitulo()); } } returncomparacao; } } Guia de Estudos para SCJA
  • 198. Polimorfismo com Interface 184 /** * Classe utilizada para testar a ordenação genérica. */ publicclassTestarOrdenacao { publicstaticvoidmain(String[] args) { /* Cria uma vetor de livros. */ Livro[] livros = new Livro[4]; livros[0] = new Livro("Sakurai", "Almoçando com Java"); livros[1] = new Livro("Cristiano", "Classes Java em fila indiana"); livros[2] = new Livro("Sakurai", "Java em todo lugar"); livros[3] = new Livro("Cristiano", "Viajando no Java"); /* Ordena os livros */ Ordenar o = new Ordenar(); o.ordenar(livros); /* Imprime os livros ordenados. */ for(intcont = 0; cont < livros.length; cont++) { System.out.println("Autor: " + livros[cont].getAutor()); System.out.println("Livro: " + livros[cont].getTitulo()); System.out.println("---------"); } } } Guia de Estudos para SCJA
  • 199. Polimorfismo Quando utilizamos polimorfismo estamos restringindo os métodos baseado no tipo de referencia do objeto, exemplo: O tipo de referencia do objeto é Comparavel e através dela podemos chamar apenas o método comparar(), não podemos chamar os métodos que foram declarados na classe Livro. 185 Comparavel livro = new Livro("Java com Aveia", "Rafael"); Livro onlyJava = new Livro("Only Java", "Sakurai"); livro.comparar(onlyJava); livro.getNome(); //Erro de compilação Guia de Estudos para SCJA
  • 200. DinamicBinding Mas porque quando chamamos o método comparar() da interface Comparavel é chamado o método comparar() da classe Livro? Em tempo de execução a JVM verifica qual o objeto está sendo referenciado e chama seu método, isto é chamado DinamicBinding. 186 Comparavel livro = new Livro("Java com Aveia", "Rafael"); Livro onlyJava = new Livro("Only Java", "Sakurai"); livro.comparar(onlyJava); Guia de Estudos para SCJA
  • 201. Casting de objeto Vimos anteriormente que uma Pessoa (superclasse) nem sempre É UMAPessoaFisica (subclasse), mas quando estamos trabalhando com uma superclasse e temos a certeza de qual o tipo de subclasse ele está representando podemos fazer o casting de objetos, para guardar o objeto em sua classe, funciona de forma similar ao casting de atributos primitivos. No exemplo abaixo vamos criar duas variáveis do tipo Pessoa com objetos do tipo PessoaFisica e PessoaJuridica, depois vamos também criar uma variável do tipo Object (que é a superclasse de todas as classes) e guardar nela um objeto do tipo String. 187 Guia de Estudos para SCJA
  • 202. Casting de objeto 188 /** * Classe utilizada para demonstrar o uso do polimorfismo, vamos criar duas * variáveis do tipo Pessoa e adicionar nele objetos do tipo PessoaFisica e * PessoaJuridica. */ publicclass TestePessoa4 { publicstaticvoidmain(String[] args) { Pessoa pessoa1 = newPessoaFisica(); pessoa1.setNome("Cristiano"); Pessoa pessoa2 = newPessoaJuridica(); pessoa2.setNome("Rafael"); PessoaFisicafisica = (PessoaFisica) pessoa1; fisica.setCpf(12345678901L); PessoaJuridicajuridica = (PessoaJuridica) pessoa2; juridica.setCnpj(1000100012345678L); System.out.println(fisica.getNome()); System.out.println(juridica.getNome()); Object objeto = "Programacao Orientada a Objetos"; String texto = (String) objeto; System.out.println(texto); } } Guia de Estudos para SCJA
  • 203. Casting de objeto Compilar e executar o arquivo TestePessoa4.java. 189 Guia de Estudos para SCJA
  • 204. Programe para uma interface Programando para implementação Programando para interface 190 OrdenarLivroordenadorDeLivros = new OrdenadorLivro(); Livro[] livros = new Livros[] { new Livro("Only Java", "Sakurai"), new Livro("Java com Aveia", "Rafael") }; ordenadorDeLivros.ordenarLivro(livros); OrdenarPessoaordenadorDePessoas = newOrdenarPessoa(); Pessoa[] pessoas = new Pessoa[] { newPessoaFisica("Sakurai"), newPessoaJuridica("Rafael") }; ordenadorDePessoas.ordenar(pessoas); Ordenar o = new Ordenar(); Livro[] livros = new Livros[] { new Livro("Only Java", "Sakurai"), new Livro("Java com Aveia", "Rafael") }; o.ordenar(livros); Pessoa[] pessoas = new Pessoa[] { new PessoaFisica("Sakurai"), new PessoaJuridica("Rafael") }; o.ordenar(pessoas); Guia de Estudos para SCJA
  • 205. 4- Projeto e Implementação de Algoritmos 191
  • 206. 4.1 - Descrever, comparar e contrastar estes três tipos de instruções fundamentais: atribuição, condicional e iteração; com base na descrição de um algoritmo, selecionar o tipo apropriado de instrução para projetar o algoritmo. 192
  • 207. Instruções fundamentais Quando queremos guardar o valor de um tipo primitivo ou uma referência para um objeto, podemos guardá-los em variáveis, isto também é chamado de atribuição. 193 Guia de Estudos para SCJA
  • 208. Instruções fundamentais Quando queremos executar um determinado conjunto de instruções, em uma determinada condição ou situação, podemos utilizar estruturas do tipo condicional. 194 Guia de Estudos para SCJA
  • 209. Instruções fundamentais Quando queremos executar um certo conjunto de instruções n vezes, durante uma determinada condição ou situação, podemos utilizar estruturas do tipo iteração. 195 Guia de Estudos para SCJA
  • 210. 4.2 - Com base em um algoritmo como pseudo-código, determinar o escopo correto de uma variável usada no algoritmo e desenvolver código para declarar variáveis em qualquer um dos seguintes escopos: variável de instância, parâmetro de método e variável local. 196
  • 211. Escopo de variável Variáveis de instânciasão criadas em nível de classe que podem ser utilizadas para guardar informações (estado) para cada objeto que estiver em memória. Este tipo de variável tem um escopo de vida igual a vida do objeto onde ele está referenciado. 197 Guia de Estudos para SCJA
  • 212.
  • 213. Escopo de variável Variável local é criada dentro de blocos de chave { }, este tipo de variável tem um escopo de vida limitado ao bloco.Estas variáveis são criadas para serem utilizadas para executar uma determinada instrução e depois são descartadas. 199 Guia de Estudos para SCJA
  • 214. 4.3 - Com base em um algoritmo como pseudo-código, desenvolver código de método que implemente o algoritmo usando instruções condicionais (if e switch), instruções de iteração (for, for-each, while e do-while), instruções de atribuição e instruções break e continue para controlar o fluxo dentro das instruções switch e de iteração. 200
  • 215. Instruções condicionais (if / else) A instrução condicionais if, é utilizada para executar alguns comandos apenas se sua condição for true (verdadeira). O else pode ou não acompanhar o if, mas o else não pode ser usado sozinho, e é utilizado para executar alguns comandos caso a condição do if for false (falso). 201 if (condição) { //Comandos executados caso a condição verdadeira. } if (condição) { //Comandos executados caso a condição verdadeira. } else { //Comandos executados caso a condição falsa. } Guia de Estudos para SCJA
  • 216. Instruções condicionais (if / else) Podemos também utilizar vários if / else aninhados: 202 if (condição1) { //Comandos executados caso a condição1 verdadeira. } else if (condição2) { //Comandos executados caso a condição2 verdadeira. } else if (condição3) { //Comandos executados caso a condição3 verdadeira. } else { //Comandos executados caso nenhuma das condições for verdadeira. } Guia de Estudos para SCJA
  • 217. Instruções condicionais (if / else) Exemplo: 203 /** * Exemplo de estrutura de controle IF. */ public class ExemploIf { public static void main(String[] args) { int idade = 15; if(idade >= 18) { System.out.println("Permissão para dirigir"); } else { System.out.println("Idade minima para dirigir eh 18 anos"); } } } Guia de Estudos para SCJA
  • 218. Instruções condicionais (switch) A instrução condicional switch é utilizada quando queremos testar se o valor de uma variável pode atender um determinado caso. 204 switch(variável) { case<possível valor da constante> : < instruções > break; case<possível valor da constante> : < instruções > break; default: < instruções > break; } Guia de Estudos para SCJA
  • 219. Instruções condicionais (switch) A instrução switch aceita apenas variáveis do tipo: byte, short, int, char e enumeração. Cada case é um caso onde os comandos dentro dele são executados se o valor constante dele for o mesmo que o valor da variável recebida no switch. O bloco de comandos default representa uma condição geral de execução caso nenhuma das anteriores tenha sido atendida, sendo a sua utilização também é opcional. O comando break é utilizado para bloquear a execução de blocos cases de forma desnecessária. 205 Guia de Estudos para SCJA
  • 220. Instruções condicionais (switch) 206 /** * Exemplo de estrutura de seleção SWITCH. */ public class ExemploSwitch { public static void main(String[] args) { char nota = 'D'; switch(nota) { case 'A': System.out.println("Aluno aprovado. Conceito excelente!"); break; case 'B': System.out.println("Aluno aprovado. Conceito bom!"); break; case 'C': System.out.println("Aluno aprovado. Conceito medio!"); break; default: System.out.println("Aluno reprovado!"); break; } } } Guia de Estudos para SCJA
  • 221. Instruções de iteração (for) Utilizamos a instrução for quando queremos executar um bloco de instruções n vezes. for(<inicialização>; <condição de execução>; <pós-instruções>) { << instruções >> } Utilizamos a área inicialização para criar variáveis ou atribuir valores para variáveis já declaradas, mas todas as variáveis precisam ser do mesmo tipo, está área é executada antes de começar a estrutura de repetição do for. Utilizamos a área condição de execução para definir a lógica de parada da estrutura de repetição for. Utilizamos a área pós-instruções para executar alguma ação que deve ocorrer cada vez que as instruções dentro for forem executados. 207 Guia de Estudos para SCJA
  • 222. Instruções de iteração (for) Exemplo1: 208 /** * Exemplo de estrutura de repetição FOR */ public class ExemploFor { public static void main(String[] args) { for(int i = 0; i <= 10; i++) { if(i % 2 == 0) { System.out.println(i + " e um numero par."); } else { System.out.println(i + " e um numero impar."); } } } } Guia de Estudos para SCJA
  • 223. Instruções de iteração (for) Exemplo2: 209 /** * Exemplo de estrutura de repetição FOR */ public class ExemploFor2 { public static void main(String[] args) { for(int i = 0, j = 10; i <= 10; i++, j--) { if(i == j) { System.out.println("i " + i + " eh igual a j " + j); } } } } Guia de Estudos para SCJA
  • 224. Instruções de iteração (for-each) Muitas vezes o for é utilizado para percorrer um array ou uma coleção de objetos, para facilitar seu uso foi adicionado na versão 5 do Java o for-each. 210 for(<Tipo> <identificador> : <expressão>) { <instruções> } Guia de Estudos para SCJA
  • 225. Instruções de iteração (for-each) 211 import java.util.ArrayList; import java.util.List; /** * Exemplo de estrutura de repetição For Each. */ public class ExemploForEach { public static void main(String[] args) { String[] nomes = {"Altrano", "Beltrano", "Ciclano", "Deltrano"}; //Percorre um array. for(String nome : nomes) { System.out.println(nome); } List<Integer> valores = new ArrayList<Integer>(); valores.add(100); valores.add(322); valores.add(57); //Percorre uma coleção. for(Integer numero : valores) { System.out.println(numero); } } } Guia de Estudos para SCJA
  • 226. Instruções de iteração (while) A instrução while executa um bloco de instruções enquanto uma determinada condição for verdadeira (true). 212 while(condição) { < instruções > } Guia de Estudos para SCJA
  • 227. Instruções de iteração (while) Exemplo: 213 /** * Exemplo de estrutura de repetição WHILE */ public class ExemploWhile { public static void main(String[] args) { int i = 0; while(i < 10) { System.out.println(++i); } } } Guia de Estudos para SCJA
  • 228. Instruções de iteração (do / while) A estrutura do / while tem seu bloco de instruções executados pelo menos uma vez, então se a condição ao final das instruções for verdadeira (true), então o bloco de instruções é executado novamente. 214 do { < instruções > } while(condição); Guia de Estudos para SCJA
  • 229. Instruções de iteração (do / while) Exemplo: 215 import java.util.Scanner; /** * Exemplo de estrutura de repetição DO / WHILE */ public class ExemploDoWhile { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); int opcao = 0; do { System.out.println("Escolha uma opcao:"); System.out.println("1 - Iniciar jogo"); System.out.println("2 - Ajuda"); System.out.println("3 - Sair"); System.out.println("OPCAO: "); opcao = entrada.nextInt(); } while (opcao != 3); } } Guia de Estudos para SCJA
  • 230. Instrução break O comando break é uma instrução de interrupção imediata de qualquer laço, seja ele qual for e independente de sua condição de parada ter sido atendida. 216 /** * Exemplo do comando break. */ public class ExemploBreak { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.println("Digite um numero de 1 a 9 exceto o 5:"); int numero = entrada.nextInt(); System.out.println("Contando de 1 ate o numero que voce digitou... "); for(int cont = 1; cont <= numero; cont++) { if(numero == 5 || numero < 1 || numero > 9) { System.out.println("Um numero invalido foi digitado!!!"); break; } System.out.println(cont + " "); } } } Guia de Estudos para SCJA
  • 231. Instrução continue O comando continue faz com que o laço salte para sua próxima iteração. Este comando pode ser utilizado com qualquer laço. 217 /** * Exemplo do comando continue. */ public class ExemploContinue { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.println("Digite um numero de 1 a 9: (saltaremos o 5)"); int numero = entrada.nextInt(); System.out.println("Contando de 1 ate o numero que voce digitou..."); for(int cont = 0; cont <= numero; cont++) { if(cont == 5) { System.out.println("# PULANDO O 5 #"); continue; } System.out.println(cont + " "); } } } Guia de Estudos para SCJA
  • 232. 4.4 - Com base em um algoritmo como pseudo-código, desenvolver código que aplique corretamente os operadores apropriados, incluindo operadores de atribuição (limitados a: =, +=, -=), operadores aritméticos (limitados a: +, -, *, /, %, ++, --), operadores relacionais (limitados a: <, <=, >, >=, ==, !=) e operadores lógicos (limitados a: !, &&, ||) para produzir o resultado desejado. Além disso, escrever código que determine a igualdade de dois objetos ou duas primitivas. 218
  • 233. Operadores de atribuição Símbolo = é chamado de atribuição, utilizado para atribuir o valor de um operando a uma variável. 219 /** * Classe utilizada para demonstrar o uso do operador de atribuição ( = ). */ public class OperadorAtribuicao { public static void main(String[] args) { int x; x = 25; System.out.println(x); } } Guia de Estudos para SCJA
  • 234. Operadores de atribuição Símbolo += é utilizado para atribuir a uma variável o valor desta variável somada ao valor de um operando. 220 /** * Classe utilizada para demonstrar o uso do operador de atribuição * junto com o operador de adição ( += ). */ public class OperadorAtribuicaoAdicao { public static void main(String[] args) { int x = 4; x += 2; System.out.println(x); } } Guia de Estudos para SCJA
  • 235. Operadores de atribuição Símbolo -= é utilizado para atribuir a uma variável o valor desta variável subtraindo o valor de um operando. 221 /** * Classe utilizada para demonstrar o uso do operador de atribuição * junto com o operador de subtração ( -= ). */ public class OperadorAtribuicaoSubtracao { public static void main(String[] args) { int x = 4; x -= 2; System.out.println(x); } } Guia de Estudos para SCJA
  • 236. Operadores relacionais Símbolo > é chamado de maior que. <operando1> > <operando2>   Retorna true se o valor do operando1 for maior que o valor do operando2, caso contrario retorna false. 222 /** * Classe utilizada para demonstrar o uso do operador * relacional maior que ( > ). */ public class OperadorMaiorQue { public static void main(String[] args) { int a = 5; int b = 3; System.out.println(a > b); } } Guia de Estudos para SCJA
  • 237. Operadores relacionais Símbolo < é chamado de menor que. <operando1> < <operando2> Retorna true se o valor do operando1 for menor que o valor do operando2, caso contrario retorna false. 223 /** * Classe utilizada para demonstrar o uso do operador relacional menor que ( < ). */ public class OperadorMenorQue { public static void main(String[] args) { int a = 5; int b = 3; System.out.println(a < b); } } Guia de Estudos para SCJA
  • 238. Operadores relacionais Símbolo >= é chamado de maior ou igual que. <operando1> >= <operando2> Retorna true se o valor do operando1 for maior ou igual que o valor do operando2, caso contrario retorna false. 224 /** * Classe utilizada para demonstrar o uso do operador * relacional maior ou igual que ( >= ). */ public class OperadorMaiorIgualQue { public static void main(String[] args) { int a = 5; int b = 3; System.out.println(a >= b); int c = 5; System.out.println(a >= c); } } Guia de Estudos para SCJA
  • 239. Operadores relacionais Símbolo <= é chamado de menor ou igual que. <operando1> <= <operando2>  Retorna true se o valor do operando1 for menor ou igual que o valor do operando2, caso contrario retorna false. 225 /** * Classe utilizada para demonstrar o uso do operador * relacional menor ou igual que ( <= ). */ public class OperadorMenorIgualQue { public static void main(String[] args) { int a = 5; int b = 5; System.out.println(a <= b); } } Guia de Estudos para SCJA
  • 240. Operadores relacionais Símbolo != é chamado de diferente. <operando1> != <operando2>   Retorna true se o valor do o