Comportamento mais sofisticado

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

Palestras, oficinas e outras atividades
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Interação entre objetos
ADT – Arvore Binária de Pesquisa
Orientação a Objetos: Encapsulamento e Classificação
While While Condição // comandos End While. Exemplos While Var contador As Integer contador = 0 While (contador < 10) contador += 1 console.ConsoleWrite(contador)
Listas Encadeadas Circulares Listas Duplamente Encadeadas
Listas Encadeadas Circulares Listas Duplamente Encadeadas
2008 LCG/UFRJ. All rights reserved. 1 Standard Template Library STL Claudio Esperança Paulo Roma Cavalcanti.
Prof. José Fernando Rodrigues Júnior Pacotes Material original: Profa. Elaine Parros Machado de Sousa SCC Bancos de Dados e Suas Aplicações.
Ronaldo Celso Messias Correia
Técnicas e Projeto de Sistemas
FORTRAN 90 Denise Yumi Takamura.
SQL Procedural Junho/2006.
Críticas sobre Extreme Programming Francisco Hillesheim.
Treinamento GP3 USP – GEFIM Abril de 2004 Alcides Pietro, PMP.
Prof. Dr. Helder Anibal Hermini
Arquiteturas de 4, 3, 2, 1 e 0 endereços.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço Collector Treinamento no GRADEp Serviço Collector CollectorDemo e.
Classes Internas e Anônimas
Mais sobre classes Baseada no Livro: Deitel&Deitel - C++ How To program Cap. 7 Prentice Hall 1994 SCE 213 Programação Orientada a Objetos, ICMC - USP 2.
O Fluxo de Testes © Alexandre Vasconcelos
Planejando seu site Objetivos Abordagem Sílvia Dota.
Página de entrada A página de entrada, ou a index, representa um convite para o seu site.
CT-300 – Seminário de Tese 1/25 Um Framework Padrão para Simulação de Modelos de Robôs Móveis de Robôs Móveis Juliano A. Pereira Prof. Carlos H. C. Ribeiro.
ITA - Instituto Tecnológico de Aeronáutica Aula #1.1 – Tutorial de Web Services utilizando o NetBeans 5.5 Disciplina: CE 262 – Ontologias e Web Semântica.
1 Definição de Dicionário Dicionário é um sistema de informações: Equivalente a um conjunto de elementos não repetidos Equivalente a um conjunto de elementos.
Capítulo I – Conceitos Primários 1.1 – Estrutura de um computador 1.2 – Informações manipuladas por um computador 1.3 – Evolução das linguagens de programação.
Business Process Management e Workflow - jBPM Aluno: Filipe Ferraz Salgado Orientador: Francisco Reverbel Novembro 2006.
TE 043 CIRCUITOS DE RÁDIO-FREQÜÊNCIA
Desempenho A rápida taxa de melhoria na tecnologia de computadores veio em decorrência de dois fatores: avanços na tecnologia utilizada na construção.
Laboratório de Programação Prof. Oscar Luiz Monteiro de Farias
Tecnologia para Web JavaScript Enrique Pimentel Leite de Oliveira
Recursividade Estrutura de Dados.
Marco Antonio Montebello Júnior
Entendendo as definições de classe
The Data Warehouse Toolkit
Frações Professor: Graciano Pianezzer Beletti.
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes.
Programação Concorrente com Thread Java
Introdução Ciência da Computação estudo de algoritmos –ÊNFASE ao estudo de DADOS armazenamento manipulação refinamento (a partir de dados cru) estrutura.
1 Seja o resultado de um experimento aleatório. Suponha que uma forma de onda é associada a cada resultado.A coleção de tais formas de ondas formam um.
Classes e objetos Arrays e Sobrecarga
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação JAVA
Provas de Concursos Anteriores
Linguagens de Programação
Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos.
MECÂNICA - DINÂMICA Cinemática de uma Partícula Cap Exercícios.
1 António Arnaut Duarte. 2 Sumário: primeiros passos;primeiros passos formatar fundo;formatar fundo configurar apresentação;configurar apresentação animação.
MINISTÉRIO DO PLANEJAMENTO Projeto de Lei Orçamentária 2011 Ministro Paulo Bernardo Silva Brasília, novembro de 2010.
MINISTÉRIO DO PLANEJAMENTO Projeto de Lei Orçamentária 2010 Ministro Paulo Bernardo Silva Brasília, 31 de agosto de 2009.
Principais operações em Listas TPA Listas Simples Inserção no Final 1.void insereNofinalDaLista(Lista *l, Elemento e){ 2.Lista paux,p; 3. p.
É u m e l e m e n t o f u n d a m e n t a l
EXERCÍCIOS PARA GUARDA-REDES
Análise Sintática – Parte 1
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Os métodos equals() e hashCode()
Preleções Científicas Universidade Estadual do Ceará Pró-Reitoria de Extensão Integrais Múltiplas e Integrais de Volume Ministrante: Prof. K. David Sabóia.
CALENDÁRIO SEXY Ele & Ela. CALENDÁRIO SEXY Ele & Ela.
Java Generics Adeline de Sousa Silva.
ArrayList e Genéricos Profs. PROG2 - UNISINOS.
Tipos Especiais de Listas
Alisson Rafael Appio SOP aplicado em um jogo tipo de corrida usando a arquitetura cliente e servidor Alisson Rafael Appio
Rio Verde - Goiás - Brasil
GINÁSTICA LABORAL UM NOVO CAMINHO.
Coleções em Java - Parte 2
COMPORTAMENTO SOFISTICADO Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)
Transcrição da apresentação:

Comportamento mais sofisticado Utilizando classes de biblioteca para implementar uma funcionalidade mais avançada 1.0

Principais conceitos a serem abordados Utilizando classes de biblioteca Lendo a documentação Escrevendo a documentação © 2004 by Pearson Education

A biblioteca da classe Java Milhares de classes Milhares de métodos Muitas classes úteis que tornam a vida muito mais fácil Um programador Java competente precisa ser capaz de trabalhar com bibliotecas © 2004 by Pearson Education

Trabalhando com a biblioteca Você deve: conhecer algumas classes importantes pelo nome; e saber como descobrir outras classes. Lembre-se: precisamos conhecer apenas a interface, não a implementação. © 2004 by Pearson Education

Um sistema de suporte técnico (TechSupport) Um sistema de diálogos textuais. Idéia do projeto baseada no ‘Eliza’, desenvolvido por Joseph Weizenbaum (MIT, anos 60). Explore… © 2004 by Pearson Education

Estrutura do loop principal boolean finished = false; while(!finished) { faz algo if(condição de saída) { concluída = true; } else { faz alguma outra coisa © 2004 by Pearson Education

Corpo do loop principal String input = reader.getInput(); ... String response = responder.generateResponse(); System.out.println(resposta); © 2004 by Pearson Education

A condição de saída De onde ‘startsWith’ vem? String input = reader.getInput(); if(input.startsWith("bye")) { finished = true; } De onde ‘startsWith’ vem? O que ele é? O que ele faz? Como podemos descobrir isso? © 2004 by Pearson Education

Lendo a documentação da classe Documentação das bibliotecas Java no formato HTML. Legível em um navegador Web. API da classe: “Application Programming Interface”. Descrição da interface para todas as classes de biblioteca. © 2004 by Pearson Education

Interfaces versus implementação (1) A documentação inclui: o nome da classe; uma descrição geral da classe; uma lista dos construtores e métodos; valores de retorno e parâmetros para construtores e métodos; e uma descrição do propósito de cada construtor e método. a interface da classe © 2004 by Pearson Education

Interfaces versus implementação (2) A documentação não inclui: campos privados (a maioria dos campos é privada); métodos privados; e o corpo (código-fonte) de cada método. a implementação da classe © 2004 by Pearson Education

Utilizando métodos de classe de biblioteca Classes da biblioteca devem ser importadas utilizando uma instrução import (exceto classes do java.lang). Elas podem então ser utilizadas como classes do projeto atual. © 2004 by Pearson Education

Pacotes e importação Classes são organizadas em pacotes. Classes únicas podem ser importadas: import java.util.ArrayList; Pacotes completos podem ser importados: import java.util.*; © 2004 by Pearson Education

Nota : Igualdade entre strings if(input == "bye") { testa a identidade ... } if(input.equals("bye")) { testa a igualdade Strings devem (quase) sempre ser comparadas com .equals if desired, include more detailed discussion of identity vs equality here. (That's the next 5 slides, up to "Identity vs equality (Strings)". Skip these if this is not needed now. © 2004 by Pearson Education

Identidade versus igualdade (1) Outros objetos (não-string) : :Person :Person “Fred” “Jill” == is not true here (of course) person1 person2 person1 == person2 ? © 2004 by Pearson Education

Identidade versus igualdade (2) Outros objetos (não-string) : :Person :Person “Fred” “Fred” == is still not true here (different objects, == tests identity) person1 person2 person1 == person2 ? © 2004 by Pearson Education

Identidade versus igualdade (3) Outros objetos(não-string) : :Person :Person “Fred” “Fred” == is true now (same object) person1 person2 person1 == person2 ? © 2004 by Pearson Education

Identidade versus igualdade (Strings) (1) String input = reader.getInput(); if(input == "bye") { ... } == testa a identidade :String :String == ? "bye" "bye" == is still not true here (different objects, == tests identity) input  (pode ser) false! © 2004 by Pearson Education

Identidade versus igualdade (Strings) (2) String input = reader.getInput(); if(input.equals("bye")) { ... } equals testa a igualdade :String :String ? equals "bye" "bye" == is still not true here (different objects, == tests identity) input  true! © 2004 by Pearson Education

Utilizando Random A classe da biblioteca Random pode ser utilizada para gerar números aleatórios. import java.util.Random; ... Random randomGenerator = new Random(); int index1 = randomGenerator.nextInt(); int index2 = randomGenerator.nextInt(100); © 2004 by Pearson Education

Gerando respostas aleatórias public Responder() { randomGenerator = new Random(); responses = new ArrayList(); fillResponses(); } public String generateResponse() int index = randomGenerator.nextInt(responses.size()); retorna (String) responses.get(index); public void fillResponses() ... © 2004 by Pearson Education

Maps Maps são coleções que armazenam pares como entradas. Pares consistem em uma chave e em um valor. Pesquisam palavras fornecendo uma chave e recuperando um valor. Um exemplo: uma lista telefônica. © 2004 by Pearson Education

Utilizando maps (1) Um map com strings como chaves e valores :HashMap "Charles Nguyen" "(531) 9392 4587" "Lisa Jones" "(402) 4536 4674" "William H. Smith" "(998) 5488 0123" © 2004 by Pearson Education

Utilizando maps (2) HashMap phoneBook = new HashMap(); phoneBook.put("Charles Nguyen", "(531) 9392 4587"); phoneBook.put("Lisa Jones", "(402) 4536 4674"); phoneBook.put("William H. Smith", "(998) 5488 0123"); String number = (String)phoneBook.get("Lisa Jones"); System.out.println(number); © 2004 by Pearson Education

Utilizando conjuntos Compare isso com o código de ArrayList! import java.util.HashSet; import java.util.Iterator; ... HashSet mySet = new HashSet(); mySet.add("one"); mySet.add("two"); mySet.add("three"); Iterator it = mySet.iterator(); while(it.hasNext()) { chame it.next() para obter o próximo objeto faça algo com esse objeto } Compare isso com o código de ArrayList! © 2004 by Pearson Education

Tokenizando strings public HashSet getInput() { System.out.print("> "); String inputLine = readInputLine().trim().toLowerCase(); StringTokenizer tokenizer = new StringTokenizer(inputLine); HashSet words = new HashSet(); while(tokenizer.hasMoreTokens()) { words.add(tokenizer.nextToken()); } return words; © 2004 by Pearson Education

Escrevendo a documentação da classe Suas classes devem ser documentadas da mesma maneira como as classes da biblioteca. Outras pessoas devem ser capazes de utilizar sua classe sem ler a implementação. Torne sua classe uma ‘classe de biblioteca’! © 2004 by Pearson Education

Elementos da documentação (1) A documentação de uma classe deve incluir: o nome da classe; um comentário descrevendo o propósito geral e as características da classe; um número da versão; o nome do autor (ou autores); e a documentação para cada construtor e cada método. © 2004 by Pearson Education

Elementos da documentação (2) A documentação de cada construtor e método deve incluir: o nome do método; o tipo de retorno; o nome e os tipos de parâmetros; uma descrição do propósito e da função do método; uma descrição de cada parâmetro; e uma descrição do valor retornado. © 2004 by Pearson Education

javadoc (1) Comentário da classe : /** * A classe Responder representa um objeto gerador * de respostas. Ele é utilizado para gerar uma * resposta automática. * * @author Michael Kölling e David J. Barnes * @version 1.0 (1.Feb.2002) */ © 2004 by Pearson Education

javadoc (2) Comentário do método: /** * Lê uma linha de texto da entrada-padrão (o terminal * de texto) e a retorna como um conjunto de palavras. * * @param prompt Um prompt para imprimir na tela. * @return Um conjunto de strings, em que cada string * é uma das palavras digitadas pelo usuário. */ public HashSet getInput(String prompt) { ... } © 2004 by Pearson Education

Público versus privado Atributos públicos (campos, construtores, métodos) são acessíveis a outras classes. Campos não devem ser públicos. Atributos privados são acessíveis apenas dentro da mesma classe. Somente os métodos concebidos para outras classes devem ser públicos. © 2004 by Pearson Education

Ocultamento de informações Dados que pertencem a um objeto são ocultados de outros objetos. Sabem o que um objeto pode fazer, não como ele faz isso. Ocultamento de informações aumenta o nível de independência. Independência dos módulos é importante para grandes sistemas e para manutenção. © 2004 by Pearson Education

Variáveis de classes © 2004 by Pearson Education é instância de...

Constantes private: modificador de acesso, como de costume private static final int gravity = 3; private: modificador de acesso, como de costume static: variável de classe final: constante © 2004 by Pearson Education

Revisão Java tem uma extensa biblioteca de classes. Um bom programador precisa conhecer a biblioteca. A documentação informa o que precisamos saber para utilizar uma classe (interface). A implementação é ocultada (ocultamento de informações). Documentamos nossas classes para que a interface possa ser lida por si própria (comentários de classe, comentários de método). © 2004 by Pearson Education