Вы находитесь на странице: 1из 105

Orientao a Objectos

Alice Cabral

Aula 1

04/05

Orientao a Objectos

Historico

A orientao a objectos (OO) foi concebida na dcada 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

Programao Estruturada

As tcnicas de programao tradicionais, como por exemplo a decomposio funcional, leva o desenvolvedor a decompor o sistema em partes menores (funes), criando um emaranhado de inmeras funes que chamam umas s outras. Geralmente no h separao de conceitos e responsabilidades, causando dependncias enormes no sistema, dificultando futuras manutenes no cdigo do programa. No existe muito reaproveitamento de cdigo, ao contrrio, muitas vezes se tem muito cdigo duplicado.

Aula 1

04/05

Programao Orientada por Objectos

O paradigma da Orientao a Objectos, ou Programao Orientada a Objectos (POO ou OOP), eleva a programao e o desenvolvimento de sistemas para um novo patamar. A OO um mecanismo moderno que ajuda a definir a estrutura de programas baseada nos conceitos do mundo real, sejam eles reais ou abstractos. A OO permite criar programas componentizados, separando as partes do sistema por responsabilidades e fazendo com que essas partes se comuniquem entre si, por meio de mensagens. Essas partes do sistemas so chamadas de OBJECTOS.

Aula 1

04/05

Programao Orientada por Objectos

Vantagens
1. 2. 3. 4. 5. Reduo das linhas de cdigo programadas Separao de responsabilidades Representao de Objectos do mundo real estrutura mais prxima da aplicao Alta flexibilidade funcional maior absoro de mudanas Desenvolvimento mais rpido
Construo a partir de objectos padres Reutilizao de modelos corporativos

Fcil criao de Prototipos


aumento de produtividade

6. 7. 8. 9.

Sistemas so montagens de cdigo previamente testado Menos erros e menor manuteno Maior uniformidade entre sistemas diferentes interfaces, interoperabilidade Projecto OO no modela uma tarefa, mas os aspectos necessrios sua execuo. O mesmo modelo pode ento ser usado para tarefas similares (reusabilidade de projeto) Reusabilidade maior produtividade e qualidade
Superior modularidade => menor iterao Mais fcil depurar e isolar erros

Aula 1

04/05

Orientao Objectos

A OO introduz e enfatiza os seguintes conceitos: Objecto Mensagem Classe Abstraco Encapsulamento Herana Polimorfismo

O que um Objecto?
Coisas do mundo real: mesas, papis, animais Objectos tm propriedade Mesa
Feita de madeira Tem uma altura Tem uma localizao

possvel exercer aes sobre objectos


Criar, destruir, mudar a localizao

O que um Objecto?
Os objectos do mundo real tm duas caractersticas em comum: ESTADO e COMPORTAMENTO. Estado O estado de um objecto revela seus dados importantes. Por exemplo, uma pessoa tem: idade, peso, altura, cor de cabelo, cor da pele. Comportamento O comportamento so as aces que aquele objecto pode exercer ou executar. Por exemplo, uma pessoa pode: andar, falar, ouvir, pular.

O que um Objecto?
Objeto um software packet contendo uma coleo de dados e um conjunto de procedures que so o nico meio de acesso aos dados Os dados compem o ESTADO do objeto As procedures formam a INTERFACE do objeto e definem seu COMPORTAMENTO

OP1 INTERFACE OP2 OP3

ESTADO Implementao de OP1, OP2 e OP3

Objecto
Um objecto de software mantm seu estado em uma ou mais de suas variveis. Ele implementa seu comportamento atravs de seus mtodos. Mtodo o mesmo que funo ou procedimento. Por definio: Um objecto um pedao de software que possui variveis (estado) e mtodos (comportamento).

Objecto
Um sistema pode conter um ou inmeros objectos activos. Cada objecto activo no sistema em particular tambm chamado de instncia. As diferentes instncias possuem seu prprio estado. O exemplo abaixo mostra vrias instncias de pessoas.

Objecto
Cada instncia de pessoa possui um estado diferente em particular, como visto na ltima figura. Porm, cada instncia, alm do estado, tambm possui seus mtodos (comportamento) que operam sobre o prprio estado. Em outras palavras, para pular, cada pessoa vai fazer uma determinada fora dependendo da sua idade, altura e peso, por exemplo. A ideia que cada objecto seja responsvel por seus dados (estado) e seja capaz de realizar as prprias operaes que lhe foram atribudas (comportamento).

Objecto
Esses objectos podem ser tanto objectos concretos (carro, livro, nota fiscal), quanto conceitos abstractos (conta corrente, venda, pessoa jurdica). Na Orientao a Objectos, os objectos do mundo real so modelados e representados no mundo computacional, ou seja, dentro do sistema, por meio de objectos de software. Cada objecto deve ser conhecido, bem definido e ter seu limite e um significado dentro do sistema. Os objectos de software, assim como os objectos do mundo real, tambm possuem estado e comportamento.

Objecto
Mensagem

Um objecto por si s no significa muito em um sistema. Para ter algum sentido e valor esses objectos precisam interagir e comunicar-se entre si. Os objectos se comunicam por meio de mensagens.

Enviar uma mensagem significa executar um mtodo. Ento, se A envia uma mensagem para B, podemos entender como o objecto A executando um mtodo do objecto B.

Objecto
Mensagem

As mensagens so compostas por trs partes: Objecto a quem a mensagem endereada Nome do mtodo a ser chamado Parmetros que o mtodo recebe

Acesso aos Dados Tradicional

Local : string Altura : int Procedure ...

Acesso aos dados do Objecto

Move

MoveTo

Destroy

Local : string Mtodos (de Acesso) Mensagens Load Variveis : Dados Protegidos Altura : int ... Lift

O que Object-Oriented Software?

Software organizado como uma coleo de objetos interdependentes cada um fornecendo um servio especfico atravs de sua interface Objetos so entidades comuns do domnio da aplicao Sistemas modelam diretamente a interao entre estes objetos no ambiente computacional

Object Terminology
Cada tecnologia cria um novo vocabulrio
Method Abstraction Message Object

Instance
Polymorphism

Class

Encapsulation Inheritance

Classes
Classes Tipos Objetos Variveis

Descrio abstrata das caractersticas de objetos similares Compartilhamento de estrutura e comportamento Objetos = Instncias de classes Variveis & Mtodos

Classes
No mundo real frequentemente percebemos vrios objectos de um mesmo tipo. Por exemplo: seu carro um dos muitos carros existentes no mundo. Usando a terminologia OO, dizemos que um carro em particular uma instncia da classe de objectos conhecida como carros. Os carros, em geral, possuem estado (cor, potncia do motor, combustvel) e comportamento (ligar, acelerar, mudar marcha) em comum. O estado de cada carro independente e pode ser diferente do estado dos outros carros. Cada carro pode ter uma cor diferentes, por exemplo. A partir dessas semelhanas, os fabricantes de veculos tiram vantagem disso para padronizar a construo de carros de um mesmo tipo, definindo um modelo nico com caractersticas iguais para todos os carros a serem produzidos.

Classes
Na Orientao a Objectos tambm possvel ter vrios objectos do mesmo tipo, que compartilham caractersticas em comum. Tirando vantagem dessa semelhana entre alguns objectos, tambm possvel criar modelos para esses objectos. Esse modelo chamado de CLASSE. As classes so tipos que podem ser criados. Por definio: Uma classe um modelo (prottipo) que define as variveis (estado) e os mtodos (comportamento) comuns a todos os objectos do mesmo tipo.

Classes
Na classe so definidas as variveis e implementados os mtodos. Os objectos so criados a partir de suas classes. A cada objecto criado o sistema aloca memria para o novo objecto e suas variveis.

OBS: Comummente fazem confuso entre classes e objectos. Lembre-se que classe define as caractersticas comuns e os objectos so instncias dessas classes, com estado prprio.

Encapsulamento
Encapsular, v. t. Incluir ou encerrar em uma cpsula Restringir o acesso aos dados apenas atravs de seus mtodos Esta proteco consiste em se usar modificadores de acesso mais restritivos sobre os atributos definidos na classe e fornecendo mtodos que alteram os valores destes atributos de alguma forma. O encapsulamento ajuda a prevenir o problema de interferncia externa indevida sobre os dados de um objecto, como objectos que possam alterar os dados de outros objectos indevidamente. Vantagens:
Facilita a incorporao de mudanas limitando-as a uma ou poucas classes Abstrai clientes da representao interna

Encapsulamento
Exemplo: saldo da conta bancria

O saldo certamente no pode ser alterado ou manipulado directamente, mas sim atravs de mtodos adequados para isso, como mtodos que fazem lanamentos de dbitos e crditos. A alterao directa do saldo causaria um problema de clculos e inconsistncia de dados. Justamente por isso devemos criar classes bem encapsuladas, que fornecem mtodos adequados para operar sobre os dados dos objectos daquela classe. O uso de encapsulamento tambm evita que um programa torne-se to interdependente que uma pequena mudana tenha grandes efeitos colaterais.

Herana
Classes podem ser definidas em termos de outras Herana o mecanismo que permite que classes com caractersticas comuns sejam herdadas. Compartilhamento de cdigo Reuso de mtodos e variveis das superclasses para as subclasses Permite redefinio de mtodos e variveis
SUPER

SUB

SUB

SUB

Herana
Com a herana possvel criar classes derivadas (subclasses) a partir de classes bases (superclasses). As subclasses so mais especializadas do que as suas superclasses, mais genricas. As subclasses herdam todas as caractersticas de suas superclasses, como suas variveis e mtodos.

Herana
Sintaxe da criao de Classe class NomeDaClasseASerCriada extends NomeDaClasseASerHerdada

Java permite que uma classe herde apenas as caractristicas de uma nica classe, ou seja, JAVA no permite herana multipla.

Herana

Polimorfismo
Polimorfismo, s. m. qualidade de possuir mltiplas formas, adj. polimorfo, multiforme Esconde implementaes de uma operao com uma interface comum Simplifica o programa e o torna mais claro responsabilidade do objeto que recebe a mensagem de executar a operao de modo adequado a sua classe

Polimorfismo
Permite programar no geral e no no especfico 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 implementao completa de cada mtodo.
Os mtodos abstract devem ser implementados pela subclasse. Uma classe abstract no pode ser instanciada Qualquer subclasse de uma classe abstract deve implementar todos os mtodos abstract ou ser tambm uma classe abstract

Classes (abstract)
classe A
class A { abstract void callme(); void metoo() { System.out.println(Mtodo callme de A); }}

classe B
class B extends A { void callme() {

System.out.println(Mtodo callme de B); }}

classe Abstract

class Abstract { public static void main (String args[]) { A a = new B(); a.callme(); a.metoo(); }}

Anlise Orientada a Objetos


Anlise = Modelagem Orientada a Objetos Resulta um modelo com objetos do domnio do problema (SEMANTIC OBJECTS) No considera objetos do domnio da soluo (como estruturas de dados, etc) Modelo resultante pode ser entendido e criticado por leigos em informtica Exemplo, Folha de pagamento:
Funcionrios, ContraCheques Taxas, Imposto de Renda etc...

Projeto Orientado a Objetos


Traduo de objetos do domnio para o ambiente de software Semantic Objects sero implementados como Application Objects. Incluso de novos objetos (IMPLEMENTATION OBJECTS) Exemplo: Interface, Utilitrios, Estruturas de Dados, etc

Passos da Modelagem OO

Encontrar os objetos Organizar os objetos Descrever como eles iteragem Definir as operaes dos objetos Definir os objetos internamente

Encontrando os Objetos
Entidades do domnio da aplicao Substantivos presentes nos requisitos do sistema Bom comeo: aprendendo-se a terminologia bsica do problema, os objetos so encontrados Seleo de objetos relevantes, essenciais e estveis Exemplo, Aplicao Bancria:
Cliente, Conta Corrente, Conta de Poupana Banco, Funcionrio etc

Organizando os Objetos
Classificao = encontrar similaridade entre objetos (classes) Objetivos
Definir uma hierarquia Evitar duplicaes de mtodos e variveis

Exemplo:
PESSOA NOME CPF

CLIENTE CONTA C. POUPANA

FUNCIONRIO SALRIO ADMISSO

Interao entre Objetos


Como cada objeto se encaixa no sistema Simulao de cenrios tpicos podem ajudar Descrever o que outros objetos esperam de tal objeto => definio da interface Exemplo: Objeto ContaCorrente
Cliente pode fazer depsitos e retiradas Cliente pode solicitar saldo, extrato Cliente pode solicitar tales de cheques A Conta pode ser bloqueada

CRC Cards
Class
ContaCorrente

Collaborators
Taxas Bancrias ...

Responsibilities
Manter Balano Efetuar Lanamentos Controlar Retiradas ...

Descrever Operaes
Seus nomes so extrados da interface Objetivo
Descrever exatamente o que faz cada operao Descrever do que precisa cada operao

Checagem de Erro Segurana Parmetros Retorno

Descrio Interna dos Objetos


Definir a informao que cada objeto deve manter Variveis Ponteiros para outros Objetos Exemplo:
CONTA CORRENTE SALDO LANAMENTOS LIMITE DE CRDITO ...

Construo de Programas Hoje


Programas Pequenos
Uma nica ou poucas procedures Geralmente uma nica pessoa Comunicao Fcil e Direta

Programas Extensos
Numerosas procedures Dezenas de pessoas Comunicao se torna catica

Programao Modular
Programas quebrados em componentes menores Diminui Interao entre as partes => Menor comunicao

Construo de Programas

Programao Estruturada
Decomposio Funcional Modelagem Top-Down Desenvolvimento Cascata

Analysis

Design

MAIN

Implement

Read

Process

Print

...

Add Record

Edit Rec

Delete Rec

Decomposio Funcional

Qualidade de um projeto indicado nas fases de manuteno e evoluo Durante a evoluo as funes so as partes mais volteis Um sistema bem aceito sempre ser extendido pelo usurio

Modelagem Top-Down
Disciplina lgica e bem organizada para lidar com complexidade de problemas, mas... No leva em conta a natureza evolucionria de sistemas grandes Caracteriza os sistemas como tendo uma funo maior Negligencia os dados No promove reusabilidade

Desenvolvimento em Cascata
Adequada quando h um entendimento completo do sistema sendo modelado Assume um desenvolvimento uniforme dos passos de elaborao No acomoda desenvolvimento evolucionrio por prototipao Usurio entra em contato apenas no ltimo estgio => qualquer mudana requer grandes revises

Ciclo de Vida Orientado a Objetos


Modelagem Orientada aos Dados No h uma funo principal Permite desenvolvimento incremental Permite prototipagem

Custo-Benefcio
Desenvolvimento mais rpido
Reusabilidade Prototipao

Maior qualidade de software


Maior modularidade Programas construdos de partes testadas

Facilidade de manuteno Reduo de Custos


Reuso de classes j construdas ou compradas

Adaptabilidade

Custo-Benefcio
Maturidade da Tecnologia Necessidade de Padres
Bancos de Dados, Classes Comercializadas

Ferramentas Eficincia Pessoal Qualificado Custo da Converso


Treinamento, Softwares, Bancos de Dados, Linguagens, Ferramentas, Construo da prpria Biblioteca de Classes Reusveis

Programa em Java

class HelloWord{

public static void main(String args[]) {


System.out.println(Hello, World!);

}
}

Programa em Java
class HelloWorld{ public static void main(String args[]) {

System.out.println(Hello, World!);
}

}
Maisculas e minsculas fazem diferena Classes em arquivos de mesmo nome ex: HelloWorld.java

Programa em Java
Byte compilador de Java C:\> javac HelloWord.java

Gera o arquivo HelloWorld.class


Interpretador de Java

C:\> java HelloWord


Hello, World!

C:\>

Programa em Java
class HelloWorld{ public static void main(String argv[]) {

System.out.println(Hello, World!);
}

}
- class define uma classe, de nome HelloWorld.

Programa em Java
class HelloWorld{ public static void main(String argv[]) {

System.out.println(Hello, World!);
}

}
public um modificador de acesso Indica que esta funo (main) pode ser chamada por outras classes e objetos

Programa em Java
class HelloWorld{ public static void main(String argv[]) {

System.out.println(Hello, World!);
}

}
static indica que a funo main pode ser utilizada sem que um objeto desta classe seja criado

Programa em Java
class HelloWorld{ public static void main(String argv[]) {

System.out.println(Hello, World!);
}

}
void especifica um tipo vazio, ou seja, esta funo no retorna qualquer valor

Programa em Java
class HelloWorld{
public static void main(String argv[]) {

System.out.println(Hello, World!);
} } A funo main apenas indica onde o programa deve comear

Se esta funo no existir ou estiver em mais de uma classe ?

Programa em Java
class HelloWorld{
public static void main(String args[]) {

System.out.println(Hello, World!);
} } Parmetros da funo Devem ser separados por ; Se no houver parmetros: main()

Programa em Java
class HelloWorld {
public static void main(String args[]) {

System.out.println(Hello, World!);
} } Indica a chamada da funo println de System.out

Por enquanto apenas use como o puts de C ou o writeln de Pascal

Comentrios em Java
class HelloWord{ // este comentario acaba no fim da linha public static void main(String args[]) { System.out.println(Hello, World!); } }

Comentrios em Java
class HelloWord{ /* este comentario acaba aqui -> */ public static void main(String args[]) { System.out.println(Hello, World!); }

Comentrios em Java
class HelloWord{ /*

* Mas este formato e melhor!


*/ /* Este formato tambem e utilizado */

Comentrios em Java
class HelloWord{ /** * este comentario serve para * documentacao automatica */ }

Variveis e tipos de dados


Variveis so alocaes de memria nas quais podemos guardar dados. Elas tm um nome, tipo e valor. Toda vez que necessite usar de uma varivel voc precisa declar-la e s ento poder atribuir valores a mesma.

Declarando variveis
As declaraes de variveis consistem de um tipo e um nome de varivel: como segue o exemplo: int idade; String nome; boolean existe; Os nomes de variveis podem comear com uma letra, um sublinhado ( _ ), ou um cifro ($). Elas no podem comear com um nmero. Depois do primeiro caracter pode-se colocar qualquer letra ou nmero.

Variveis e tipos de dados


Tipos de variveis Toda varivel deve possuir um tipo. Os tipos que uma varivel pode assumir uma das trs coisas a seguir: Uma das oito primitivas bsicas 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. Os oito tipos de dados bsicos so: inteiros, nmeros de ponto-flutuante, caracteres e booleanos (verdadeiro ou falso). Tipos Inteiros: Tipo Tamanho Alcance byte 8 bits -128 at 127 short 16 bits -32.768 at 32.767 int 32 bits -2.147.483.648 at 2.147.483.647 long 64 bits -9223372036854775808 at 9223372036854775807 Existem dois tipos de nmeros de ponto-flutuante: float ( 32 bits, preciso simples) e double (64 bits, preciso dupla).

Variveis e tipos de dados


Atribuies a variveis Aps declarada uma varivel a atribuio 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 (avana pgina na impressora) Barra invertida Apstrofe Aspas Octal Hexadecimal

Expresses e operadores
Operadores Aritmticos

Operador + * / %

Significado soma subtrao multiplicao diviso mdulo

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

Expresses e operadores

Exemplo Aritmtico: 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 sada 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

Expresses e operadores
Mais sobre atribuies Variveis podem atribuidas em forma de expresses como: int x, y, z; x = y = z = 0; No exemplo as trs variveis recebem o valor 0; Operadores de Atribuio:

Expresso x += y x -= y x *= y x /= y

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

Expresses e operadores
Incrementos e decrementos Como no C e no C++ o Java tambm possui incrementadores e decrementadores : y = x++; y = --x; As duas expresses do resultados diferentes, pois existe uma diferena entre prefixo e sufixo. Quando se usa os operadores ( x++ ou x-- ), y recebe o valor de x antes de x ser incrementado, e usando o prefixo ( ++x ou x ) acontece o contrario, y recebe o valor incrementado de x.

Expresses e operadores
Operadores Relacionais
Java possui vrias expresses para testar igualdade e magnitude. Todas as expresses retornam um valor booleano (true ou false).

Operador == != < > <= >=

Significado Igual Diferente ( No igual) Menor que Maior que Menor ou igual Maior ou igual

Exemplo x == 3 x != 3 x<3 x>3 x <= 3 x >= 3

Expresses e operadores
Operadores lgicos
Operador && || ! & | ^ << >> >>> x <<= y x >>= y x >>>= y x &= y x |= y x ^= y Significado Operao lgica E (AND) Operao lgica OU (OR) Negao lgica Comparao bit-a-bit E (AND) Comparao bit-a-bit OU (OR) Comparao bit-a-bit OU-Exclusivo (XOR) Deslocamento a esquerda Deslocamento a direita Deslocamento a direita com preenchimento de zeros Complemento bit-a-bit Atribuio com deslocamento a esquerda ( x = x << y ) Atribuio com deslocamento a direita ( x = x >> y ) Atribuio com deslocamento a direita e com preenchimento de zeros ( x = x >>> y ) atribuio AND ( x = x & y ) atribuio OR ( x = x | y ) atribuio XOR ( x = x ^ y )

Programa usando API

1 // Fig. 2.7: Adicao.java 2 // Programa de adio que exibe a soma de dois nmeros. 3 import java.util.Scanner; // programa utiliza a classe Scanner 4 5 public class Adicao 6{ 7 // mtodo principal inicia a execuo 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.in ); 12 13 int num1; // primeiro nmero a somar 14 int num2; // segundo nmero a adicionar 15 int soma; // soma de num1 e num2 16 17 System.out.print( "Entre com o primeiro nmero: " ); // prompt 18 num1 = input.nextInt(); // l primeiro o nmero fornecido pelo usurio 19 20 System.out.print( " Entre com o segundo nmero: " ); // prompt 21 num2 = input.nextInt(); // l o segundo nmero fornecido pelo usurio 22 23 soma = num1 + num2; // soma os nmeros 24 25 System.out.printf( "Soma %d\n", soma ); // exibe a soma 26 27 } // fim do mtodo principal 28 29 } // fim da classe Adicao

Programa usando API


Linha 3 import java.util.Scanner; // programa utiliza a classe Scanner uma declarao import que ajuda o compilador a identificar ou localizar as classes predeifidas do Java. Indica que o exemplo usa a classe Scanner predefinida do Java do pacote Java.util . Essas classes so agrupadas em pacotes chamados de coleces de classes. Colectivamente, pacotes do Java so chamados de bibliotecas de classes Java ou Java Application Programming Interface (API). Linha 5 public class Adicao comea a declarao da classe Adicao. Isso implica que na fase de edio ao salvar o ficheiro deve salva-lo com o nome Adicao.java.

Programa usando API


Linha 11 Scanner input = new Scanner( System.in ); uma declarao de varivel que especifica o nome e o tipo de uma varivel (input) Que utilizada nesse programa. Uma varivel deve ter um nome e um tipo logo o tipo da varivel input do tipo Scanner. O sinal de igual (=) indica que a varivel Scanner input deve ser inicializada, na sua declarao com o resultado da expresso new Scanner( System.in ). Essa expresso cria um objecto Scanner que l o tipo de dados digitado pelo usurio. System.in objecto de entrada padro. Linha 18 num1 = input.nextInt();// l primeiro o nmero fornecido pelo usurio utiliza o mtodo nextInt do valor de input do objecto Scanner para obter o um inteiro digitado pelo usurio. http://java.sun.com/j2se/5.0/docs/api/ http://java.sun.com/j2se/5.0/download.jsp/

Aula7

24/05

Estruturas de Controle

O Java contem tipos de estruturas de controle ou instrues de controle: a instruo de sequencia, intrues de seleo(3 tipos) e instrues de repetio.

Aula7

24/05

Estruturas de Controle

Estrutura de sequencia em JAVA A estrutura de sequencia em Java esta incorporada ao Java. A menos que instruido de outra forma, o computador executa as instrues Java uma depois da outra na ordem em que elas so escritas.

Aula7

24/05

Estruturas de Controle

Estrutura de seleo em JAVA A instruo de uma nica seleo if A instruo de seleo dupla ifelse A estrutura de seleo multipla switch

Aula7

24/05

Estruturas de Controle

Estrutura de seleo if A instruo de uma nica seleo if Ex:


Se a nota de um aluno for >= 11 imprima Aprovado if (studentGrade >= 11) System.out.println(Aprovado);
Imprime Aprovado

Aula7

24/05

Estruturas de Controle

Estrutura de seleo if...else A instruo de seleo dupla ifelse If (expresso booleana) declarao1; [else delarao2;]

if-else

Aula7

24/05

Estruturas de Controle

Estrutura de seleo if...else


A instruo de seleo dupla ifelse Ex: Pseudocodigo Se a nota do aluno >= 11 imprime Aprovado Seno imprime Reprovado JAVA if (studentGrade >= 11) System.out.println(Aprovado); else System.out.println(Reprovado);

Aula7

24/05

Estruturas de Controle

Estrutura de seleo if...else A instruo de seleo dupla ifelse Ex:


if (studentGrade >= 11) System.out.println(Aprovado); else System.out.println(Reprovado);

Imprime Reprovado

Imprime Aprovado

Aula7

24/05

Estruturas de Controle

Estrutura de seleo if...else A instruo de seleo dupla ifelse


A instruo if...else permite que o programador especifique uma aco a realizar quando a condio verdadeira e uma ao diferente quando a condio falsa.

Operador condicional (?:)


O Java permite o operador condicional (?:) que pode ser utilizado no lugar de uma instruo if...else. Esse nico operador ternrio do java significa que ele recebe trs operandos. Juntos, os os operandos e o simbolo ?: formam uma expresso condicional. Ex:
System.out.println( studentGrade >= 11 ? Aprovado : Reprovado);

Aula7

24/05

Estruturas de Controle

Estrutura de seleo if...else A instruo de seleo dupla ifelse aninhadas Ex:


if (studentGrade >= 11) System.out.println(Aprovado); lse { if ( studentGrade < 11 ) || ( studentGrade >= 7,5 ) System.out.println(Oral); else System.out.println(Reprovado); }

Aula7

24/05

Estruturas de Controle

Estrutura de seleo switch...case A estrutura de seleo multipla switch

switch

switch (expresso) { case valor1; declaracao; break; case valor2; declaracao; break; [default: declaracao; break;] }

Aula7

24/05

Estruturas de Controle

Estrutura de seleo switch...case A estrutura de seleo multipla switch


case a
Ao(es) do case a break

Case b

Ao(es) do case b

break

case z
Ao(es) default

Ao(es) do case z

break

Aula7

24/05

Estruturas de Controle

Estrutura de seleo swhitch...case A estrutura de seleo multipla switch


int ms = 4; String estao; switch(ms) { case 12: case 1: case 2: estao = Vero; break; case 3: case 4: case 5: estao = cacimbo; break; default: estao = Desconhecida; break; }

Aula7

31/05

Estruturas de Controle

Estrutura de repetio em JAVA Prncipios bsicos de repetio controlado por contador

1. Uma varivel de controle(ou contador de loop) 2. O valor inicial da varivel de controle 3. O incremento(ou decremento) pelo qual a varivel de controle modificada a cada passagem pelo loop(tambm conhecido como cada iterao do loop) 4. A condio de continuao do loop que determina se o loop deve continuar

Aula7

31/05

Estruturas de Controle

Estrutura de repetio while


A instruo de repetio while
Uma instruo de repetio(tambm chamada de instruo de loop ou simplesmente loop) permite ao programador especificar que um programa deve repetir uma aco enquanto alguma condio permanecer verdadeira. Ex: Pseudocdigo Enquanto houver mais itens em minha lista de compras comprar o prximo item e risc-lo da minha lista

Sintaxe
inicializao; While(condio de continuao); { instruo; incremento; }

Aula7

31/05

Estruturas de Controle

Estrutura de repetio while A instruo de repetio while


Class WhileDemo// imprime senhas de entrada { public static void main(String args[]) { int n = 0; while (n > = 100) { System.out.println(Senha - + n); n--; } } }

Aula7

31/05

Estruturas de Controle

Estrutura de repetio while


1 // Fig. 5.1 whileCounter.java 2 //Repetio controlada por contador com uma instruo de repetio while 3 4 public class WhileCounter 5 { 6 public static void main(string args[]) 7 { 8 int counter = 1;//declaro e inicializao de varivel 9 10 while(counter <= 10)//condio de continuao do loop 11 { 12 System.out.println(%d , counter ); 13 14 ++couter; //incrementa a varivel de controle por 1 }// fim do while

15
16 17 System.out.println( );// gera a sada de um caractere de nova linha }//fim do main

18 }// fim da classe WhileCounter

Aula7

31/05

Estruturas de Controle

Estrutura de repetio while

agregao

[counter <= 10] [counter >10] Determina se o loop deve continuar

Exibe o valor do contador

Aula7

31/05

Estruturas de Controle

Estrutura de repetio for A instruo de repetio for


Uma instruo de repetio for, que especifica os detalhes da repetio controlada por contador em uma nica linha de cdigo.

Sintaxe
for (inicializao; condio de continuao; incremento;) instruo;

Aula7

31/05

Estruturas de Controle

Estrutura de repetio for


1 // Fig. 5.2 ForCounter.java 2 //Repetio controlada por contador com uma instruo de repetio for 3 4 public class ForCounter 5 { 6 public static void main(string args[]) 7 { 8 //cabealho da instruo for inclui inicializao, 9 //condio de continuao do loop e incremento 10 for(int counter = 1;counter <= 10; couter++) 11 System.out.println(%d , counter ); 12 13 System.out.println( );// gera a sada de um caractere de nova linha 14 }//fim do main 15 }// fim da classe ForCounter

Aula7

31/05

Estruturas de Controle

Estrutura de repetio for

Inicializa varivel de controle

Int counter = 1

[Contador <= 10]

Exibe o valor do contador

Inicializa varivel de controle couter++

[Contador > 10]

Determina se o loop deve continuar

System.out.println(%d , counter );

Aula7

31/05

Estruturas de Controle

Estrutura de repetio do...while


A instruo de repetio do...while
Uma instruo de repetio do...while, semelhante instruo while. Em while, o programa testa a condio de continuao do loop no comeo do loop, antes de executar o corpo do loop. Se a condio for falsa, o corpo nunca executa. A instruo do...while testa a condio de continuao loop depois de executar o corpo do loop; portanto, o corpo sempre executa pelo menos uma vez. Quando uma instruo do...while termina a execuo continua com a prxima instruo na sequncia.

Sintaxe
do { instruo; }while (condio);

Aula7

31/05

Estruturas de Controle

Estrutura de repetio do...while


1 // Fig. 5.7 DoWhileTest.java 2 //instruo de repetio do...while 3 4 public class DoWhileTest 5 { 6 public static void main(string args[]) 7 { 8 int counter = 1;//inicializao o contador 9 10 do 11 { 12 System.out.println(%d , counter ); 13 ++couter; //incrementa a varivel de controle por 1 14 } while(counter <= 10)//fim da instruo do...while 15 16 System.out.println( );// gera a sada de um caractere de nova linha 17 }//fim do main 18 }// fim da classe DoWhileTest

Aula7

31/05

Estruturas de Controle

Estrutura de repetio do...while

System.out.println(%d , counter );

Exibe o valor do contador

++counter

Exibe o valor do contador

Determine se o loop deve continuar

[contador <=10] [contador >10]

Aula7

07/06

Estruturas de Controle

Estrutura de seleo em JAVA A instruo break


A instruo break, quando executada em um while, for, do...while ou switch, ocasiona sua sadaimediata dessa instruo. A execuo continua com a primeira instruo depois da instruo de controle.

Aula7

07/06

Estruturas de Controle

Estrutura de seleo em JAVA


A instruo break
1 // Fig. 5.12: BreakTest.java 2 // A instruo break sai de uma instruo for 3 public class BreakTest 4 { 5 public static void main (String args[ ]) 6 { 7 int count; 8 9 for(int count = 1;count <= 10; cout++) 10 { 11 if (count = = 5 ) // se a contagem for 5 12 break; // termina o loop 13 14 System.out.printf(%d , counter ); 15 } 16 17 System.out.printf(\n Sai do loop e o count = %d, count); 18 }// fim de main 19 }// fim da classe BreakTest

1 2 3 4

Sai do loop e o count = 5

Aula7

07/06

Estruturas de Controle

Estrutura de seleo em JAVA A instruo continue


A instruo continue, quando executada em um while, for, do...while, pula as instruoes restantes no corpo do loop e prossegue com a prxima iterao do loop. Em instrues while e do...while, o programa avalia o teste de continuao do loop imediatamente depois que a instruo continue executada. Em uma instruo for, a expresso incremento executada, ento o programa avalia o teste de condio do loop.

Aula7

07/06

Estruturas de Controle

Estrutura de seleo em JAVA


A instruo continue
1 // Fig. 5.12: BreakTest.java 2 // A instruo break sai de uma instruo for 3 public class BreakTest 4 { 5 public static void main (String args[ ]) 6 { 7 int count; 8 9 for(int count = 1;count <= 10; cout++) 10 { 11 if (count = = 5 ) // se a contagem for 5 12 continue; // termina o loop 13 14 System.out.printf(%d , counter ); 15 } 16 17 System.out.printf(\n Usa o continue para pular o 5 = %d, count); 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

Aula7

07/06

Variveis de Instncia

Aula7

07/06

Declarao de Mtodo com parmetro

Вам также может понравиться