SCJA

21,541 views

Published on

Curso preparatório para a certificação SCJA.

Published in: Technology, Education
7 Comments
39 Likes
Statistics
Notes
No Downloads
Views
Total views
21,541
On SlideShare
0
From Embeds
0
Number of Embeds
5,271
Actions
Shares
0
Downloads
283
Comments
7
Likes
39
Embeds 0
No embeds

No notes for slide

SCJA

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

×