Orientação a Objectos

Alice Cabral

Aula 1

04/05

Orientação a Objectos

Historico

• A orientação a objectos (OO) foi concebida na década de 70. • Origem na linguagem SIMULA-67(decada de 60 – Noruega), que já implementava alguns conceitos da OO. • SIMULA-68 foi a primeira linguagem a suportar os conceitos da OO. • Smaltalk, criada pela Xerox, popularizou e incentivou a OO. • Outras linguagens:
– C++  1980 na Bell Laboratories por Bjarne Stroustrup – Java (Oak)  1991 na Sun Microsystems por James Gosling … Object Pascal(Delphi), C#, …

Aula 1

04/05

Programação Estruturada

• As técnicas de programação tradicionais, como por exemplo a “decomposição funcional”, leva o desenvolvedor a decompor o sistema em partes menores (funções), criando um emaranhado de inúmeras funções que chamam umas às outras. • Geralmente não há separação de conceitos e responsabilidades, causando dependências enormes no sistema, dificultando futuras manutenções no código do programa. • Não existe muito reaproveitamento de código, ao contrário, muitas vezes se tem muito código duplicado.

• A OO permite criar programas “componentizados”. • A OO é um mecanismo moderno que ajuda a definir a estrutura de programas baseada nos conceitos do mundo real. sejam eles reais ou abstractos. por meio de mensagens. ou Programação Orientada a Objectos (POO ou OOP). . eleva a programação e o desenvolvimento de sistemas para um novo patamar.Aula 1 04/05 Programação Orientada por Objectos • O paradigma da Orientação a Objectos. separando as partes do sistema por responsabilidades e fazendo com que essas partes se comuniquem entre si. • Essas partes do sistemas são chamadas de OBJECTOS.

9. 8. mas os aspectos necessários à sua execução.Aula 1 04/05 Programação Orientada por Objectos Vantagens 1. Redução das linhas de código programadas Separação de responsabilidades Representação de Objectos do mundo real  estrutura mais próxima da aplicação Alta flexibilidade funcional  maior absorção de mudanças Desenvolvimento mais rápido – – Construção a partir de objectos padrões Reutilização de modelos corporativos – – Fácil criação de Protoótipos aumento de produtividade 6. O mesmo modelo pode então ser usado para tarefas similares (reusabilidade de projeto) “Reusabilidade”  maior produtividade e qualidade – – Superior modularidade => menor iteração Mais fácil depurar e isolar erros . Sistemas são “montagens” de código previamente testado Menos erros e menor manutenção Maior uniformidade entre sistemas diferentes  interfaces. 7. 3. interoperabilidade Projecto OO não modela uma tarefa. 4. 2. 5.

Aula 1 04/05 Orientação à Objectos • • • • • • • • A OO introduz e enfatiza os seguintes conceitos: Objecto Mensagem Classe Abstracção Encapsulamento Herança Polimorfismo .

O que é um Objecto? • Coisas do mundo real: mesas. mudar a localização . animais • Objectos têm propriedade • Mesa – Feita de madeira – Tem uma altura – Tem uma localização • É possível exercer ações sobre objectos – Criar. destruir. papéis.

O que é um Objecto? • Os objectos do mundo real têm duas características em comum: ESTADO e COMPORTAMENTO. cor de cabelo. cor da pele. • Comportamento O comportamento são as acções que aquele objecto pode exercer ou executar. Por exemplo. uma pessoa pode: andar. . uma pessoa tem: idade. pular. falar. • Estado O estado de um objecto revela seus dados importantes. ouvir. altura. Por exemplo. peso.

OP2 e OP3 .O que é um Objecto? • Objeto é um software packet contendo uma coleção de dados e um conjunto de procedures que são o único meio de acesso aos dados • Os dados compõem o ESTADO do objeto • As procedures formam a INTERFACE do objeto e definem seu COMPORTAMENTO OP1 INTERFACE OP2 OP3 ESTADO Implementação de OP1.

Objecto • Um objecto de software mantém seu estado em uma ou mais de suas variáveis. Ele implementa seu comportamento através de seus métodos. Método é o mesmo que função ou procedimento. • Por definição: Um objecto é um pedaço de software que possui variáveis (estado) e métodos (comportamento). .

Cada objecto activo no sistema em particular também é chamado de instância. As diferentes instâncias possuem seu próprio estado. O exemplo abaixo mostra várias instâncias de pessoas.Objecto • Um sistema pode conter um ou inúmeros objectos activos. .

também possui seus métodos (comportamento) que operam sobre o próprio estado. cada pessoa vai fazer uma determinada força dependendo da sua idade. A ideia é que cada objecto seja responsável por seus dados (estado) e seja capaz de realizar as próprias operações que lhe foram atribuídas (comportamento). para pular. .Objecto Cada instância de pessoa possui um estado diferente em particular. Em outras palavras. Porém. cada instância. altura e peso. como visto na última figura. além do estado. por exemplo.

assim como os objectos do mundo real. venda. • Os objectos de software. • Cada objecto deve ser conhecido. nota fiscal). também possuem estado e comportamento. . quanto conceitos abstractos (conta corrente. livro. os objectos do mundo real são modelados e representados no mundo computacional. pessoa jurídica). dentro do sistema. ou seja. • Na Orientação a Objectos. por meio de objectos de software. bem definido e ter seu limite e um significado dentro do sistema.Objecto • Esses objectos podem ser tanto objectos concretos (carro.

Para ter algum sentido e valor esses objectos precisam interagir e comunicar-se entre si. Os objectos se comunicam por meio de mensagens. Então.Objecto Mensagem Um objecto por si só não significa muito em um sistema. . se A envia uma mensagem para B. podemos entender como o objecto A executando um método do objecto B. Enviar uma mensagem significa executar um método.

Objecto Mensagem As mensagens são compostas por três partes: • Objecto a quem a mensagem é endereçada • Nome do método a ser chamado • Parâmetros que o método recebe .

Acesso aos Dados Tradicional Local : string Altura : int Procedure ... .

Lift .Acesso aos dados do Objecto Move MoveTo Destroy Local : string Métodos (de Acesso) Mensagens Load Variáveis : Dados Protegidos Altura : int ...

O que é Object-Oriented Software? • Software organizado como uma coleção de objetos interdependentes cada um fornecendo um serviço específico através de sua interface • Objetos são entidades comuns do domínio da aplicação • Sistemas modelam diretamente a interação entre estes objetos no ambiente computacional .

Object Terminology • Cada tecnologia cria um novo vocabulário Method Abstraction Message Object Instance Polymorphism Class Encapsulation Inheritance .

Classes Classes Tipos Objetos Variáveis • Descrição abstrata das características de objetos similares • Compartilhamento de estrutura e comportamento • Objetos = Instâncias de classes • Variáveis & Métodos .

. Cada carro pode ter uma cor diferentes. combustível) e comportamento (ligar. Por exemplo: seu carro é um dos muitos carros existentes no mundo. • A partir dessas semelhanças. potência do motor. mudar marcha) em comum. • Usando a terminologia OO. • Os carros. possuem estado (cor. em geral. • O estado de cada carro é independente e pode ser diferente do estado dos outros carros.Classes • No mundo real frequentemente percebemos vários objectos de um mesmo tipo. definindo um modelo único com características iguais para todos os carros a serem produzidos. acelerar. dizemos que um carro em particular é uma instância da classe de objectos conhecida como carros. os fabricantes de veículos tiram vantagem disso para padronizar a construção de carros de um mesmo tipo. por exemplo.

Esse modelo é chamado de CLASSE. que compartilham características em comum.Classes • Na Orientação a Objectos também é possível ter vários objectos do mesmo tipo. também é possível criar modelos para esses objectos. • Por definição: Uma classe é um modelo (protótipo) que define as variáveis (estado) e os métodos (comportamento) comuns a todos os objectos do mesmo tipo. . As classes são tipos que podem ser criados. • Tirando vantagem dessa semelhança entre alguns objectos.

Os objectos são criados a partir de suas classes. OBS: Comummente fazem confusão entre classes e objectos. A cada objecto criado o sistema aloca memória para o novo objecto e suas variáveis. com estado próprio.Classes Na classe são definidas as variáveis e implementados os métodos. Lembre-se que classe define as características comuns e os objectos são instâncias dessas classes. .

Encapsulamento • “Encapsular. • Vantagens: – Facilita a incorporação de mudanças limitando-as a uma ou poucas classes – Abstrai clientes da representação interna . como objectos que possam alterar os dados de outros objectos indevidamente. • O encapsulamento ajuda a prevenir o problema de interferência externa indevida sobre os dados de um objecto. t. Incluir ou encerrar em uma cápsula”  Restringir o acesso aos dados apenas através de seus métodos • Esta protecção consiste em se usar modificadores de acesso mais restritivos sobre os atributos definidos na classe e fornecendo métodos que alteram os valores destes atributos de alguma forma. v.

Encapsulamento Exemplo: saldo da conta bancária • O saldo certamente não pode ser alterado ou manipulado directamente. • A alteração directa do saldo causaria um problema de cálculos e inconsistência de dados. como métodos que fazem lançamentos de débitos e créditos. mas sim através de métodos adequados para isso. . que fornecem métodos adequados para operar sobre os dados dos objectos daquela classe. • Justamente por isso devemos criar classes bem encapsuladas. • O uso de encapsulamento também evita que um programa torne-se tão interdependente que uma pequena mudança tenha grandes efeitos colaterais.

Herança
• Classes podem ser definidas em termos de outras • Herança é o mecanismo que permite que classes com características comuns sejam herdadas. • Compartilhamento de código • Reuso de métodos e variáveis das superclasses para as subclasses • Permite redefinição de métodos e variáveis
SUPER

SUB

SUB

SUB

Herança
• Com a herança é possível criar classes derivadas (subclasses) a partir de classes bases (superclasses). As subclasses são mais especializadas do que as suas superclasses, mais genéricas. • As subclasses herdam todas as características de suas superclasses, como suas variáveis e métodos.

Herança
• Sintaxe da criação de Classe class NomeDaClasseASerCriada extends NomeDaClasseASerHerdada

• Java permite que uma classe herde apenas as caractéristicas de uma única classe, ou seja, JAVA não permite herança multipla.

Herança .

m. adj. s. multiforme • Esconde implementações de uma operação com uma interface comum • Simplifica o programa e o torna mais claro • É responsabilidade do objeto que recebe a mensagem de executar a operação de modo adequado a sua classe .Polimorfismo • Polimorfismo. qualidade de possuir múltiplas formas. polimorfo.

Polimorfismo • Permite programar no geral e não no específico • Permite escrever programas que processam objectos que partilham a mesma superclasse em uma hierarquia de classes como se todas fossem objectos da superclasse. .

Classes (abstract) • Define a estrutura sem fornecer uma implementação completa de cada método. • Os métodos abstract devem ser implementados pela subclasse. • Uma classe abstract não pode ser instanciada • Qualquer subclasse de uma classe abstract deve implementar todos os métodos abstract ou ser também uma classe abstract .

println(“Método callme de B”).callme().out. }} classe Abstract class Abstract { public static void main (String args[]) { A a = new B().metoo().out. }} . }} classe B class B extends A { void callme() { System.Classes (abstract) classe A class A { abstract void callme().println(“Método callme de A”). a. a. void metoo() { System.

. Imposto de Renda – etc. . ContraCheques – Taxas.. Folha de pagamento: – Funcionários. etc) • Modelo resultante pode ser entendido e criticado por leigos em informática • Exemplo.Análise Orientada a Objetos • Análise = Modelagem Orientada a Objetos • Resulta um modelo com objetos do domínio do problema (SEMANTIC OBJECTS) • Não considera objetos do domínio da solução (como estruturas de dados.

Estruturas de Dados. • Inclusão de novos objetos (IMPLEMENTATION OBJECTS) • Exemplo: Interface. etc . Utilitários.Projeto Orientado a Objetos • Tradução de objetos do domínio para o ambiente de software • Semantic Objects serão implementados como Application Objects.

Passos da Modelagem OO • • • • • Encontrar os objetos Organizar os objetos Descrever como eles iteragem Definir as operações dos objetos Definir os objetos internamente .

Conta de Poupança – Banco. Funcionário – etc . os objetos são encontrados • Seleção de objetos relevantes. essenciais e estáveis • Exemplo. Conta Corrente.Encontrando os Objetos • Entidades do domínio da aplicação • Substantivos presentes nos requisitos do sistema • Bom começo: aprendendo-se a terminologia básica do problema. Aplicação Bancária: – Cliente.

POUPANÇA FUNCIONÁRIO SALÁRIO ADMISSÃO .Organizando os Objetos • Classificação = encontrar similaridade entre objetos (classes) • Objetivos – Definir uma hierarquia – Evitar duplicações de métodos e variáveis • Exemplo: PESSOA NOME CPF CLIENTE CONTA C.

Interação entre Objetos • Como cada objeto se encaixa no sistema • Simulação de cenários típicos podem ajudar • Descrever o que outros objetos esperam de tal objeto => definição da interface • Exemplo: Objeto ContaCorrente – – – – Cliente pode fazer depósitos e retiradas Cliente pode solicitar saldo. extrato Cliente pode solicitar talões de cheques A Conta pode ser bloqueada .

... . Responsibilities Manter Balanço Efetuar Lançamentos Controlar Retiradas .CRC Cards Class ContaCorrente Collaborators Taxas Bancárias ..

Descrever Operações • Seus nomes são extraídos da interface • Objetivo – Descrever exatamente o que faz cada operação – Descrever do que precisa cada operação » » » » Checagem de Erro Segurança Parâmetros Retorno .

. ..Descrição Interna dos Objetos • • • • Definir a informação que cada objeto deve manter Variáveis Ponteiros para outros Objetos Exemplo: CONTA CORRENTE SALDO LANÇAMENTOS LIMITE DE CRÉDITO .

Construção de Programas Hoje • Programas Pequenos – Uma única ou poucas procedures – Geralmente uma única pessoa – Comunicação Fácil e Direta • Programas Extensos – Numerosas procedures – Dezenas de pessoas – Comunicação se torna caótica • Programação Modular – Programas quebrados em componentes menores – Diminui Interação entre as partes => Menor comunicação .

Add Record Edit Rec Delete Rec .Construção de Programas • Programação Estruturada – Decomposição Funcional – Modelagem Top-Down – Desenvolvimento Cascata Analysis Design MAIN Implement Read Process Print ...

Decomposição Funcional • Qualidade de um projeto é indicado nas fases de manutenção e evolução • Durante a evolução as funções são as partes mais voláteis • Um sistema bem aceito sempre será extendido pelo usuário .

• Não leva em conta a natureza evolucionária de sistemas grandes • Caracteriza os sistemas como tendo uma função maior • Negligencia os dados • Não promove reusabilidade .Modelagem Top-Down • Disciplina lógica e bem organizada para lidar com complexidade de problemas... mas.

Desenvolvimento em Cascata • Adequada quando há um entendimento completo do sistema sendo modelado • Assume um desenvolvimento uniforme dos passos de elaboração • Não acomoda desenvolvimento evolucionário por prototipação • Usuário entra em contato apenas no último estágio => qualquer mudança requer grandes revisões .

Ciclo de Vida Orientado a Objetos • • • • Modelagem Orientada aos Dados Não há uma função principal Permite desenvolvimento incremental Permite prototipagem .

Custo-Benefício  Desenvolvimento mais rápido – Reusabilidade – Prototipação  Maior qualidade de software – Maior modularidade – Programas construídos de partes testadas  Facilidade de manutenção  Redução de Custos – Reuso de classes já construídas ou compradas  Adaptabilidade .

Construção da própria Biblioteca de Classes Reusáveis .Custo-Benefício  Maturidade da Tecnologia  Necessidade de Padrões – Bancos de Dados. Bancos de Dados. Ferramentas. Linguagens. Classes Comercializadas  Ferramentas  Eficiência  Pessoal Qualificado  Custo da Conversão – Treinamento. Softwares.

} } .out.Programa em Java class HelloWord{ public static void main(String args[]) { System.println(“Hello. World!”).

} } • Maiúsculas e minúsculas fazem diferença • Classes em arquivos de mesmo nome ex: HelloWorld.java .Programa em Java class HelloWorld{ public static void main(String args[]) { System.out.println(“Hello. World!”).

java • Gera o arquivo HelloWorld.Programa em Java • Byte compilador de Java C:###BOT_TEXT###gt; javac HelloWord. World! C:###BOT_TEXT###gt; .class • Interpretador de Java C:###BOT_TEXT###gt; java HelloWord Hello.

.Programa em Java class HelloWorld{ public static void main(String argv[]) { System.out.println(“Hello. } } . de nome HelloWorld.class define uma classe. World!”).

out.println(“Hello.Programa em Java class HelloWorld{ public static void main(String argv[]) { System. World!”). } } • public é um modificador de acesso • Indica que esta função (main) pode ser chamada por outras classes e objetos .

World!”).println(“Hello.out.Programa em Java class HelloWorld{ public static void main(String argv[]) { System. } } • static indica que a função main pode ser utilizada sem que um objeto desta classe seja criado .

out.Programa em Java class HelloWorld{ public static void main(String argv[]) { System.println(“Hello. esta função não retorna qualquer valor . ou seja. World!”). } } • void especifica um tipo vazio.

println(“Hello. } } • A função main apenas indica onde o programa deve começar • Se esta função não existir ou estiver em mais de uma classe ? .out.Programa em Java class HelloWorld{ public static void main(String argv[]) { System. World!”).

Programa em Java class HelloWorld{ public static void main(String args[]) { System. World!”).println(“Hello. } } • Parâmetros da função • Devem ser separados por “.out.” • Se não houver parâmetros: main() .

Programa em Java class HelloWorld { public static void main(String args[]) { System.out. World!”).println(“Hello.out • Por enquanto apenas use como o puts de C ou o writeln de Pascal . } } • Indica a chamada da função println de System.

World!”).Comentários em Java class HelloWord{ // este comentario acaba no fim da linha public static void main(String args[]) { System. } } .println(“Hello.out.

out.println(“Hello. } } . World!”).Comentários em Java class HelloWord{ /* este comentario acaba aqui -> */ public static void main(String args[]) { System.

Comentários em Java class HelloWord{ /* * Mas este formato e’ melhor! */ /* Este formato tambem e’ utilizado */ } .

Comentários em Java class HelloWord{ /** * este comentario serve para * documentacao automatica */ } .

Toda vez que necessite usar de uma variável você precisa declará-la e só então poderá atribuir valores a mesma. Depois do primeiro caracter pode-se colocar qualquer letra ou número. tipo e valor. . String nome. um sublinhado ( _ ). boolean existe.Variáveis e tipos de dados • Variáveis são alocações de memória nas quais podemos guardar dados. ou um cifrão ($). Elas não podem começar com um número. Elas têm um nome. Os nomes de variáveis podem começar com uma letra. • Declarando variáveis As declarações de variáveis consistem de um tipo e um nome de variável: como segue o exemplo: int idade.

648 até 2.Variáveis e tipos de dados • Tipos de variáveis Toda variável deve possuir um tipo.767 int 32 bits -2.147.647 long 64 bits -9223372036854775808 até 9223372036854775807 Existem dois tipos de números de ponto-flutuante: float ( 32 bits. caracteres e booleanos (verdadeiro ou falso).147. Os tipos que uma variável pode assumir uma das três “coisas” a seguir: Uma das oito primitivas básicas de tipos de dados O nome de uma classe ou interface Um Array Veremos mais sobre o uso de arrays e classes mais a frente.768 até 32.483. precisão simples) e double (64 bits. Os oito tipos de dados básicos são: inteiros.483. Tipos Inteiros: Tipo Tamanho Alcance byte 8 bits -128 até 127 short 16 bits -32. . precisão dupla). números de ponto-flutuante.

Variáveis e tipos de dados • Atribuições a variáveis Após declarada uma variável a atribuição é feita simplesmente usando o operador „=‟: idade = 18. existe = true. • Caracteres especiais Caracter \n \t \b \r \f \ \’ \” \ddd \xdd Significado Nova Linha Tab Backspace Retorno do Carro “Formfeed” (avança página na impressora) Barra invertida Apóstrofe Aspas Octal Hexadecimal .

Expressões e operadores
•Operadores Aritméticos

Operador + * / %

Significado soma subtração multiplicação divisão módulo

Exemplo 3+4 5-7 5*5 14 / 7 20 % 7

Expressões e operadores

Exemplo Aritmético: class ArithmeticTest { public static void main ( Strings args[] ) { short x = 6; int y = 4; float a = 12.5f; float b = 7f; System.out.println ( “x é “ + x + “, y é “ + y ); System.out.println ( “x + y = “ + (x + y) ); System.out.println ( “x - y = “ + (x - y) ); System.out.println ( “x / y = “ + (x / y) ); System.out.println ( “x % y = “ + ( x % y ) ); System.out.println ( “a é “ + a + “, b é “ + b ); System.out.println ( “ a / b = “ + ( a / b ) ); } }

A saída do programa é : x é 6, y é 4 x + y = 10 x-y=2 x/y=1 x%y=2 a é 12.5, b é 7 a / b = 1.78571

Expressões e operadores
• Mais sobre atribuições Variáveis podem atribuidas em forma de expressões como: int x, y, z; x = y = z = 0; No exemplo as três variáveis recebem o valor 0; • Operadores de Atribuição:

Expressão x += y x -= y x *= y x /= y

Significado x=x+y x=x-y x=x*y x=x/y

y recebe o valor de x antes de x ser incrementado. . pois existe uma diferença entre prefixo e sufixo. Quando se usa os operadores ( x++ ou x-. y = --x. As duas expressões dão resultados diferentes. y recebe o valor incrementado de x.).Expressões e operadores • Incrementos e decrementos Como no C e no C++ o Java também possui incrementadores e decrementadores : y = x++. e usando o prefixo ( ++x ou –x ) acontece o contrario.

Operador == != < > <= >= Significado Igual Diferente ( Não igual) Menor que Maior que Menor ou igual Maior ou igual Exemplo x == 3 x != 3 x<3 x>3 x <= 3 x >= 3 .Expressões e operadores • Operadores Relacionais Java possui várias expressões para testar igualdade e magnitude. Todas as expressões retornam um valor booleano (true ou false).

Expressões e operadores • Operadores lógicos Operador && || ! & | ^ << >> >>> x <<= y x >>= y x >>>= y x &= y x |= y x ^= y Significado Operação lógica E (AND) Operação lógica OU (OR) Negação lógica Comparação bit-a-bit E (AND) Comparação bit-a-bit OU (OR) Comparação bit-a-bit OU-Exclusivo (XOR) Deslocamento a esquerda Deslocamento a direita Deslocamento a direita com preenchimento de zeros Complemento bit-a-bit Atribuição com deslocamento a esquerda ( x = x << y ) Atribuição com deslocamento a direita ( x = x >> y ) Atribuição com deslocamento a direita e com preenchimento de zeros ( x = x >>> y ) atribuição AND ( x = x & y ) atribuição OR ( x = x | y ) atribuição XOR ( x = x ^ y ) .

in ).7: Adicao. // soma os números 24 25 System.print( " Entre com o segundo número: " ). // lê o segundo número fornecido pelo usuário 22 23 soma = num1 + num2.printf( "Soma é %d\n".out. // lê primeiro o número fornecido pelo usuário 19 20 System. // segundo número a adicionar 15 int soma. // exibe a soma 26 27 } // fim do método principal 28 29 } // fim da classe Adicao . // programa utiliza a classe Scanner 4 5 public class Adicao 6{ 7 // método principal inicia a execução do aplicativo Java 8 public static void main( String args[] ) 9 { 10 // cria Scanner para obter entrada a partir da janela de comando 11 Scanner input = new Scanner( System. // soma de num1 e num2 16 17 System.Programa usando API 1 // Fig.Scanner. 3 import java.print( "Entre com o primeiro número: " ).util. // prompt 18 num1 = input.java 2 // Programa de adição que exibe a soma de dois números.out. 2. 12 13 int num1.nextInt().out. // primeiro número a somar 14 int num2. // prompt 21 num2 = input. soma ).nextInt().

Scanner. Isso implica que na fase de edição ao salvar o ficheiro deve salva-lo com o nome Adicao. • Linha 5 public class Adicao começa a declaração da classe Adicao.util .java.util. Colectivamente. Indica que o exemplo usa a classe Scanner predefinida do Java do pacote Java. // programa utiliza a classe Scanner é uma declaração import que ajuda o compilador a identificar ou localizar as classes predeifidas do Java. pacotes do Java são chamados de bibliotecas de classes Java ou Java Application Programming Interface (API). . Essas classes são agrupadas em pacotes – chamados de colecções de classes.Programa usando API • Linha 3 import java.

in – objecto de entrada padrão. System.0/docs/api/ http://java. Essa expressão cria um objecto Scanner que lê o tipo de dados digitado pelo usuário. na sua declaração com o resultado da expressão new Scanner( System. http://java.Programa usando API • Linha 11 Scanner input = new Scanner( System.nextInt().// lê primeiro o número fornecido pelo usuário utiliza o método nextInt do valor de input do objecto Scanner para obter o um inteiro digitado pelo usuário.jsp/ . O sinal de igual (=) indica que a variável Scanner input deve ser inicializada.com/j2se/5.in ). Uma variável deve ter um nome e um tipo logo o tipo da variável input é do tipo Scanner.sun. • Linha 18 num1 = input.in ).sun.com/j2se/5. É uma declaração de variável que especifica o nome e o tipo de uma variável (input) Que é utilizada nesse programa.0/download.

intruções de seleção(3 tipos) e instruções de repetição. .Aula7 24/05 Estruturas de Controle O Java contem tipos de estruturas de controle ou instruções de controle: a instrução de sequencia.

o computador executa as instruções Java uma depois da outra na ordem em que elas são escritas. A menos que instruido de outra forma.Aula7 24/05 Estruturas de Controle Estrutura de sequencia em JAVA A estrutura de sequencia em Java esta incorporada ao Java. .

Aula7 24/05 Estruturas de Controle Estrutura de seleção em JAVA • A instrução de uma única seleção if • A instrução de seleção dupla if…else • A estrutura de seleção multipla switch .

Aula7 24/05 Estruturas de Controle Estrutura de seleção if • A instrução de uma única seleção if Ex: Se a nota de um aluno for >= 11 imprima ‘Aprovado’ if (studentGrade >= 11) System. Imprime „Aprovado‟ .println(“Aprovado”).out.

] if-else ..else • A instrução de seleção dupla if…else If (expressão booleana) declaração1. [else delaração2.Aula7 24/05 Estruturas de Controle Estrutura de seleção if..

else • A instrução de seleção dupla if…else Ex: Pseudocodigo Se a nota do aluno é >= 11 imprime „ Aprovado‟ Senão imprime „Reprovado‟ JAVA if (studentGrade >= 11) System.out.println(“Reprovado”).out. .Aula7 24/05 Estruturas de Controle Estrutura de seleção if... else System.println(“Aprovado”).

out. Imprime „Reprovado‟ Imprime „Aprovado‟ .out.println(“Aprovado”)..println(“Reprovado”).Aula7 24/05 Estruturas de Controle Estrutura de seleção if.. else System.else • A instrução de seleção dupla if…else Ex: if (studentGrade >= 11) System.

Esse único operador ternário do java – significa que ele recebe três operandos.. Juntos. .out. • Operador condicional (?:) O Java permite o operador condicional (?:) que pode ser utilizado no lugar de uma instrução if. Ex: System. os os operandos e o simbolo ?: formam uma expressão condicional..println( studentGrade >= 11 ? “Aprovado” : “Reprovado”)....else permite que o programador especifique uma acção a realizar quando a condição é verdadeira e uma ação diferente quando a condição é falsa.else.else • A instrução de seleção dupla if…else A instrução if..Aula7 24/05 Estruturas de Controle Estrutura de seleção if.

} .println(“Oral”). else System.else • A instrução de seleção dupla if…else aninhadas Ex: if (studentGrade >= 11) System..out.println(“Aprovado”).println(“Reprovado”). lse { if ( studentGrade < 11 ) || ( studentGrade >= 7.out.5 ) System.out..Aula7 24/05 Estruturas de Controle Estrutura de seleção if.

case • A estrutura de seleção multipla switch switch switch (expressão) { case valor1.. break. [default: declaracao. declaracao. break. declaracao. case valor2..] } . break.Aula7 24/05 Estruturas de Controle Estrutura de seleção switch.

Aula7 24/05 Estruturas de Controle Estrutura de seleção switch.case • A estrutura de seleção multipla switch case a Ação(ões) do case a break Case b Ação(ões) do case b break case z Ação(ões) default Ação(ões) do case z break ...

break.Aula7 24/05 Estruturas de Controle Estrutura de seleção swhitch.case • A estrutura de seleção multipla switch int mês = 4. case 3: case 4: case 5: estação = “cacimbo”. break. switch(mês) { case 12: case 1: case 2: estação = “Verão”. break. } .. default: estação = “Desconhecida”.. String estação.

O incremento(ou decremento) pelo qual a variável de controle é modificada a cada passagem pelo loop(também conhecido como cada iteração do loop) 4. A condição de continuação do loop que determina se o loop deve continuar . O valor inicial da variável de controle 3. Uma variável de controle(ou contador de loop) 2.Aula7 31/05 Estruturas de Controle Estrutura de repetição em JAVA • Príncipios básicos de repetição controlado por contador 1.

} . incremento.Aula7 31/05 Estruturas de Controle Estrutura de repetição while • A instrução de repetição while Uma instrução de repetição(também chamada de instrução de loop ou simplesmente loop) permite ao programador especificar que um programa deve repetir uma acção enquanto alguma condição permanecer verdadeira. Ex: Pseudocódigo Enquanto houver mais itens em minha lista de compras comprar o próximo item e riscá-lo da minha lista Sintaxe inicialização. { instrução. While(condição de continuação).

Aula7 31/05 Estruturas de Controle Estrutura de repetição while • A instrução de repetição while Class WhileDemo// imprime senhas de entrada { public static void main(String args[]) { int n = 0. while (n > = 100) { System.out. } } } . n--.“ + n).println(“Senha .

// gera a saída de um caractere de nova linha }//fim do main 18 }// fim da classe WhileCounter .1 whileCounter.//declarção e inicialização de variável 9 10 while(counter <= 10)//condição de continuação do loop 11 { 12 System.Aula7 31/05 Estruturas de Controle Estrutura de repetição while 1 // Fig. 5.println(“%d “.out.println( ). 13 14 ++couter.out. counter ). //incrementa a variável de controle por 1 }// fim do while 15 16 17 System.java 2 //Repetição controlada por contador com uma instrução de repetição while 3 4 public class WhileCounter 5 { 6 public static void main(string args[]) 7 { 8 int counter = 1.

Aula7 31/05 Estruturas de Controle Estrutura de repetição while agregação [counter <= 10] [counter >10] Determina se o loop deve continuar Exibe o valor do contador .

Aula7 31/05 Estruturas de Controle Estrutura de repetição for • A instrução de repetição for Uma instrução de repetição for. condição de continuação.) instrução. incremento. que especifica os detalhes da repetição controlada por contador em uma única linha de código. Sintaxe for (inicialização. .

couter++) 11 System. 5.// gera a saída de um caractere de nova linha 14 }//fim do main 15 }// fim da classe ForCounter .2 ForCounter. counter ). 9 //condição de continuação do loop e incremento 10 for(int counter = 1.java 2 //Repetição controlada por contador com uma instrução de repetição for 3 4 public class ForCounter 5 { 6 public static void main(string args[]) 7 { 8 //cabeçalho da instrução for inclui inicialização.out. 12 13 System.println( ).Aula7 31/05 Estruturas de Controle Estrutura de repetição for 1 // Fig.counter <= 10.out.println(“%d “.

out.println(“%d “. .Aula7 31/05 Estruturas de Controle Estrutura de repetição for Inicializa variável de controle Int counter = 1 [Contador <= 10] Exibe o valor do contador Inicializa variável de controle couter++ [Contador > 10] Determina se o loop deve continuar System. counter ).

Sintaxe do { instrução. Em while.while Uma instrução de repetição do. antes de executar o corpo do loop. Se a condição for falsa.while testa a condição de continuação loop depois de executar o corpo do loop..Aula7 31/05 Estruturas de Controle Estrutura de repetição do.. o corpo nunca executa. portanto.while termina a execução continua com a próxima instrução na sequência. o corpo sempre executa pelo menos uma vez.. . }while (condição). o programa testa a condição de continuação do loop no começo do loop.. é semelhante à instrução while.. A instrução do..... Quando uma instrução do.while.while • A instrução de repetição do..

while 15 16 System.// gera a saída de um caractere de nova linha 17 }//fim do main 18 }// fim da classe DoWhileTest ...while 3 4 public class DoWhileTest 5 { 6 public static void main(string args[]) 7 { 8 int counter = 1. 13 ++couter..Aula7 31/05 Estruturas de Controle Estrutura de repetição do.. //incrementa a variável de controle por 1 14 } while(counter <= 10)//fim da instrução do..out. 5..//inicialização o contador 9 10 do 11 { 12 System. counter ).while 1 // Fig.println( ).println(“%d “.out.7 DoWhileTest.java 2 //instrução de repetição do.

Exibe o valor do contador ++counter Exibe o valor do contador Determine se o loop deve continuar [contador <=10] [contador >10] .Aula7 31/05 Estruturas de Controle Estrutura de repetição do..while System.println(“%d “. counter )..out.

A execução continua com a primeira instrução depois da instrução de controle. do.while ou switch. ocasiona sua saídaimediata dessa instrução.. quando executada em um while. for.Aula7 07/06 Estruturas de Controle Estrutura de seleção em JAVA • A instrução break A instrução break. ..

out. 18 }// fim de main 19 }// fim da classe BreakTest 1 2 3 4 Sai do loop e o count = 5 . 15 } 16 17 System.12: BreakTest.printf(“%d “. // termina o loop 13 14 System.printf(“\n Sai do loop e o count = %d”. 5. count). cout++) 10 { 11 if (count = = 5 ) // se a contagem for 5 12 break.java 2 // A instrução break sai de uma instrução for 3 public class BreakTest 4 { 5 public static void main (String args[ ]) 6 { 7 int count.Aula7 07/06 Estruturas de Controle Estrutura de seleção em JAVA • A instrução break 1 // Fig. 8 9 for(int count = 1. counter ).count <= 10.out.

do. for. quando executada em um while. Em uma instrução for. a expressão incremento é executada. Em instruções while e do. então o programa avalia o teste de condição do loop. pula as instruçãoes restantes no corpo do loop e prossegue com a próxima iteração do loop... o programa avalia o teste de continuação do loop imediatamente depois que a instrução continue é executada. .while.Aula7 07/06 Estruturas de Controle Estrutura de seleção em JAVA • A instrução continue A instrução continue..while..

8 9 for(int count = 1.12: BreakTest.out.out.Aula7 07/06 Estruturas de Controle Estrutura de seleção em JAVA • A instrução continue 1 // Fig. 15 } 16 17 System. count). cout++) 10 { 11 if (count = = 5 ) // se a contagem for 5 12 continue.java 2 // A instrução break sai de uma instrução for 3 public class BreakTest 4 { 5 public static void main (String args[ ]) 6 { 7 int count. 5. // termina o loop 13 14 System.printf(“\n Usa o continue para pular o 5 = %d”. 18 }// fim de main 19 }// fim da classe BreakTest 1 2 3 4 6 7 8 9 10 Usa o continue para pular o 5 .printf(“%d “.count <= 10. counter ).

Aula7 07/06 Variáveis de Instância .

Aula7 07/06 Declaração de Método com parâmetro .