Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SCJA

22,010 views

Published on

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

Published in: Technology, Education

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

×