SlideShare uma empresa Scribd logo
1 de 24
Aula 9 Operação toString Classes, instâncias e objectos Leituras com Scanner
Da aula anterior… Classes e instâncias Instanciação Membros Funções vs. procedimentos Tipos de referência vs. tipos de valor Tipos primitivos vs. restante tipos (em Java) Igualdade vs. identidade Cadeias de caracteres com a classe String 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 2
OperaçãotoString Disponível em todas as classes Java Devolve representação textual (String) da instância a que se aplica Definição por omissão é pouco interessante Necessário sobrepor nosso próprio método 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 3
Operação toString: exemplo publicclassRational { privatefinalintnumerator; privatefinalintdenominator;     … @Override publicStringtoString() { returnnumerator + "/" + denominator;     }     … } Rational myRational = new Rational(1, 4); String myRationalAsString =  myRational.toString(); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 4 myRational myRationalAsString Deixamos claro que queremos que este método se sobreponha ao método por omissão. numerator = 1 denominator = 4 “1/4”
toString e System.out.print* Métodos System.out.print* invocam toString automaticamente Exemplo Rational myRational = new Rational(1, 4); System.out.println(myRational); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 5 _ 1/4 _
toString e concatenação Operador + com String e referência para instância de classe: operação toString invocada automaticamente Exemplo Rational r1 = new Rational(1, 4); Rational r2 = new Rational(1, 2); Rational r3 = r1.multipliedBy(r2); String string = r1 + " × " + r2 + " = " + r3; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 6 r1 r2 r3 string 1/4 1/2 1/8 “1/4 × 1/2 = 1/8”
Classes: instâncias e objectos Classe é “molde” para construção de instâncias/objectos com características determinadas Classe de valor Igualdade é relevante Identidade irrelevante Resultado da construção: instância Exemplo: Rational Classe de referência Identidade é relevante Igualdade pouco importante Resultado da construção: objecto Exemplo: Pessoa 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 7
Classe Person publicclassPerson { privateStringname; privatedoubleheight; publicPerson(finalStringname, finaldoubleheight) { this.name=name; this.height= height;    } publicStringgetName() { returnname;    } publicdoublegetHeight() { returnheight;    } publicbooleanisTall() { return 1.8 <= getHeight();    } @Override publicStringtoString() { returngetName() + " (" + getHeight() + ")";    } } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 8
Exemplar concreto que obedece ao “molde” (classe) Exemplo Person luke = new Person("Luke", 1.81); booleanisTall = luke.isTall(); doubleheight = luke.getHeight(); String asString = luke.toString(); Instância/objecto 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 9 luke isTall height asString 1,81 m verdadeiro 1,81 Luke name = “Luke” height = 1,81 “Luke (1,81)”
Matrizes de (referências para) objectos É possível ter matrizes de referências para objectos de uma classe Exemplo Person[] daltons = new Person[4]; daltons[0] = new Person("Averell", 2.1); daltons[1] = new Person("William", 1.9); daltons[2] = new Person("Jack", 1.7); daltons[3] = new Person("Joe", 1.5); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 10 Averell 2,10 m Avarell William Jack Jack William Joe 1,70 m daltons null null null null 1,90 m Joe 0 1 2 3 1,70 m
Matrizes de (referências para) objectos booleanjoeIsTall = daltons[3].isTall(); Stringname = daltons[1].getName(); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 11 Averell 2,10 m Jack joeIsTall name William falso 1,70 m daltons 1,90 m Joe 0 1 2 3 “William” 1,70 m
Uma classe com um conjunto publicclass Gang { privateStringname; privateSet<Person> members; privatePersonlider; public Gang(finalStringname) { this.name=name; this.members= newHashSet<Person>(); this.lider = null;     } publicvoidadd(finalPersonnewMember) { members.add(newMember);     } publicvoidsetLiderTo(finalPersonnewLider) { members.add(newLider); lider = newLider;     } publicStringtoString() {  return"Gang {Name: " + name + ", Members: " + members +  ", Lider: " + lider + "}";     }     … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 12 Conjunto de Person. Os conjuntos não permitem membros repetidos. Hã? A ver mais tarde. 
Uma classe com um conjunto Person averell = new Person("Averell", 2.1); Person william = new Person("William", 1.9); Person jack = new Person("Jack", 1.7); Person joe = new Person("Joe", 1.5); Gang daltons = new Gang("Dalton"); daltons.add(averell); daltons.add(william); daltons.add(jack); daltons.add(joe); daltons.setLiderTo(joe); out.println(daltons); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 13 _ Gang {Name: Dalton, Members: [Joe (1.5), Avarell (2.1), Jack (1.7), William (1.9)], Lider: Joe (1.5)} _
Uma classe com um conjunto publicclass Gang { privateStringname; privateSet<Person> members; privatePersonlider;     … publicdoubleaverageHeight() { doublesumOfHeights = 0.0; for (Person member : members) sumOfHeights += member.getHeight();         return sumOfHeights / members.size();     }     … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 14 Este ciclo atribui sucessivamente a member todas as referências guardadas nos itens da colecção members (que neste caso é um conjunto).
Uma classe com um conjunto Person averell = new Person("Averell", 2.1); Person william = new Person("William", 1.9); Person jack = new Person("Jack", 1.7); Person joe = new Person("Joe", 1.5); Gang daltons = new Gang("Dalton"); daltons.add(averell); daltons.add(william); daltons.add(jack); daltons.add(joe); daltons.setLiderTo(joe); out.println(daltons.averageHeight()); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 15 _ 1.7999999999999998 _
Uma classe com um conjunto publicclass Gang { privateStringname; privateSet<Person> members; privatePersonlider;     … public Person shorterMember() { if (members.size() == 0) thrownewIllegalStateException("Illegal…"); doublesmallerHeight = Double.POSITIVE_INFINITY;         Person shorterMember = null; for (Person member : members) if (member.getHeight() < smallerHeight) { smallerHeight = member.getHeight(); shorterMember = member;             } returnshorterMember;      }     … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 16
Uma classe com um conjunto Person averell = new Person("Averell", 2.1); Person william = new Person("William", 1.9); Person jack = new Person("Jack", 1.7); Person joe = new Person("Joe", 1.5); Gang daltons = new Gang("Dalton"); daltons.add(averell); daltons.add(william); daltons.add(jack); daltons.add(joe); daltons.setLiderTo(joe); out.println(daltons.shorterMember()); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 17 _ Joe (1.5) _
Classe Scanner Simplifica leitura de texto a partir de teclado (interacção com o utilizador) cadeia de caracteres (instância de String) arquivo … Nome completo: java.util.Scanner Usar apenas Scanner implica importjava.util.Scanner; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 18
Importação e instanciação de Scanner Usa-se declaração de importação Declaração de importação antes das restantes definições importjava.util.Scanner; publicclassSomeClass {    … publicstatic voidmain(final String[] args) { Scannerscanner = newScanner(…);       …       }    … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 19 Construção de um novo Scanner.
Classe Scanner: leitura de linha do teclado Construtor com java.lang.System.in para ler do teclado Operação nextLine bloqueia até próximo <enter> devolve texto introduzido até <enter> Exemplo Scanner inputScanner = new Scanner(System.in); Stringline =     inputScanner.nextLine(); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 20
Classe Scanner: leitura de palavras de uma cadeia String sentence = "one two    three four   five  "; Scanner stringScanner = new Scanner(sentence); intnumberOfWords = 0; String invertedSentence = ""; while (scanner.hasNext()) {     String word = scanner.next(); invertedSentence = word + " " + invertedSentence; numberOfWords++; } out.println("Read " + numberOfWords + " words."); out.println("Inverted sentence: " + invertedSentence); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 21 _ Read 5 words. _ Read 5 words. Invertedsentence: fivefourthreetwoone _
A reter Classes Operação toString Objectos vs. instâncias Classes de valor vs. classes de referência Classes como moldes Instanciação Exemplos Conjuntos, colecções e ciclo for-each Leituras com Scanner 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 22
A ler... Capítulos 8 e 9 do livro: Y. Daniel Liang, Introduction to Java Programming, 8.ª edição, Prentice-Hall, 2010. ISBN: 978-0-13-213080-6 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 23
Sumário Operação toString Classes, instâncias e objectos Leituras com Scanner 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 24

Mais conteúdo relacionado

Mais procurados

Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Luciano Ramalho
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compactoLuciano Ramalho
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecasMaurício Linhares
 
Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Luciano Ramalho
 
Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.pptEmerson Cardoso
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordidaLuciano Ramalho
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: SincronizadoresHelder da Rocha
 
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...Manuel Menezes de Sequeira
 
Semana 8: Classes e instâncias, cadeias de caracteres
Semana  8: Classes e instâncias, cadeias de caracteresSemana  8: Classes e instâncias, cadeias de caracteres
Semana 8: Classes e instâncias, cadeias de caracteresManuel Menezes de Sequeira
 
04 modelagem classes
04 modelagem classes04 modelagem classes
04 modelagem classesjosejunior89
 
Código limpo e eficiente com JavaScript
Código limpo e eficiente com JavaScriptCódigo limpo e eficiente com JavaScript
Código limpo e eficiente com JavaScriptRodrigo Vieira
 
Passagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e OraclePassagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e OracleAndré Reis
 
Project coin pequenas mudanças grandes facilidades
Project coin pequenas mudanças grandes facilidadesProject coin pequenas mudanças grandes facilidades
Project coin pequenas mudanças grandes facilidadesMarcelo de Castro
 

Mais procurados (19)

Java 13
Java 13Java 13
Java 13
 
Java6
Java6Java6
Java6
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecas
 
Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011
 
Programação Orientada por Objectos - Aula 6
Programação Orientada por Objectos - Aula 6Programação Orientada por Objectos - Aula 6
Programação Orientada por Objectos - Aula 6
 
Java aprendendo linguagem.ppt
Java aprendendo linguagem.pptJava aprendendo linguagem.ppt
Java aprendendo linguagem.ppt
 
Javascript
JavascriptJavascript
Javascript
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: Sincronizadores
 
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
 
Semana 8: Classes e instâncias, cadeias de caracteres
Semana  8: Classes e instâncias, cadeias de caracteresSemana  8: Classes e instâncias, cadeias de caracteres
Semana 8: Classes e instâncias, cadeias de caracteres
 
04 modelagem classes
04 modelagem classes04 modelagem classes
04 modelagem classes
 
Código limpo e eficiente com JavaScript
Código limpo e eficiente com JavaScriptCódigo limpo e eficiente com JavaScript
Código limpo e eficiente com JavaScript
 
Passagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e OraclePassagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e Oracle
 
Java 07
Java 07Java 07
Java 07
 
Project coin pequenas mudanças grandes facilidades
Project coin pequenas mudanças grandes facilidadesProject coin pequenas mudanças grandes facilidades
Project coin pequenas mudanças grandes facilidades
 

Semelhante a Classe Scanner e toString

Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacoteManuel Menezes de Sequeira
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#Felipe Pimentel
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java Manuel Menezes de Sequeira
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosMoises Omena
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)Armando Daniel
 
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasManuel Menezes de Sequeira
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03thomasdacosta
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Natanael Fonseca
 
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)Manuel Menezes de Sequeira
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Rogério Moraes de Carvalho
 

Semelhante a Classe Scanner e toString (20)

Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#
 
Aula5
Aula5Aula5
Aula5
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java
 
A linguagem java
A linguagem javaA linguagem java
A linguagem java
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a Objetos
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
 
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
 
Programação Orientada por Objectos - Aula 3
Programação Orientada por Objectos - Aula 3Programação Orientada por Objectos - Aula 3
Programação Orientada por Objectos - Aula 3
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Apostila Oracle
Apostila OracleApostila Oracle
Apostila Oracle
 
POO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em JavaPOO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em Java
 
Java para iniciantes
Java para iniciantesJava para iniciantes
Java para iniciantes
 
Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03Programação Estruturada 2 - Aula 03
Programação Estruturada 2 - Aula 03
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
 
Kotlin first
Kotlin firstKotlin first
Kotlin first
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
 

Mais de Manuel Menezes de Sequeira

14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...Manuel Menezes de Sequeira
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...Manuel Menezes de Sequeira
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...Manuel Menezes de Sequeira
 
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...Manuel Menezes de Sequeira
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...Manuel Menezes de Sequeira
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...Manuel Menezes de Sequeira
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...Manuel Menezes de Sequeira
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...Manuel Menezes de Sequeira
 
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...Manuel Menezes de Sequeira
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...Manuel Menezes de Sequeira
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemasManuel Menezes de Sequeira
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaManuel Menezes de Sequeira
 
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
Semana  1: Programação como arte de resolver problemas, algoritmos e problema...Semana  1: Programação como arte de resolver problemas, algoritmos e problema...
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...Manuel Menezes de Sequeira
 
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...Manuel Menezes de Sequeira
 
Introdução à programação orientada para aspectos
Introdução à programação orientada para aspectosIntrodução à programação orientada para aspectos
Introdução à programação orientada para aspectosManuel Menezes de Sequeira
 
Eng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoEng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoManuel Menezes de Sequeira
 

Mais de Manuel Menezes de Sequeira (20)

14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
 
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
 
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
 
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
 
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
 
Semana 2: Funções e listas, variáveis
Semana  2: Funções e listas, variáveisSemana  2: Funções e listas, variáveis
Semana 2: Funções e listas, variáveis
 
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
Semana  1: Programação como arte de resolver problemas, algoritmos e problema...Semana  1: Programação como arte de resolver problemas, algoritmos e problema...
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
 
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
 
Eng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de softwareEng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de software
 
Introdução à programação orientada para aspectos
Introdução à programação orientada para aspectosIntrodução à programação orientada para aspectos
Introdução à programação orientada para aspectos
 
Eng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoEng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validação
 

Classe Scanner e toString

  • 1. Aula 9 Operação toString Classes, instâncias e objectos Leituras com Scanner
  • 2. Da aula anterior… Classes e instâncias Instanciação Membros Funções vs. procedimentos Tipos de referência vs. tipos de valor Tipos primitivos vs. restante tipos (em Java) Igualdade vs. identidade Cadeias de caracteres com a classe String 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 2
  • 3. OperaçãotoString Disponível em todas as classes Java Devolve representação textual (String) da instância a que se aplica Definição por omissão é pouco interessante Necessário sobrepor nosso próprio método 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 3
  • 4. Operação toString: exemplo publicclassRational { privatefinalintnumerator; privatefinalintdenominator; … @Override publicStringtoString() { returnnumerator + "/" + denominator; } … } Rational myRational = new Rational(1, 4); String myRationalAsString = myRational.toString(); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 4 myRational myRationalAsString Deixamos claro que queremos que este método se sobreponha ao método por omissão. numerator = 1 denominator = 4 “1/4”
  • 5. toString e System.out.print* Métodos System.out.print* invocam toString automaticamente Exemplo Rational myRational = new Rational(1, 4); System.out.println(myRational); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 5 _ 1/4 _
  • 6. toString e concatenação Operador + com String e referência para instância de classe: operação toString invocada automaticamente Exemplo Rational r1 = new Rational(1, 4); Rational r2 = new Rational(1, 2); Rational r3 = r1.multipliedBy(r2); String string = r1 + " × " + r2 + " = " + r3; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 6 r1 r2 r3 string 1/4 1/2 1/8 “1/4 × 1/2 = 1/8”
  • 7. Classes: instâncias e objectos Classe é “molde” para construção de instâncias/objectos com características determinadas Classe de valor Igualdade é relevante Identidade irrelevante Resultado da construção: instância Exemplo: Rational Classe de referência Identidade é relevante Igualdade pouco importante Resultado da construção: objecto Exemplo: Pessoa 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 7
  • 8. Classe Person publicclassPerson { privateStringname; privatedoubleheight; publicPerson(finalStringname, finaldoubleheight) { this.name=name; this.height= height; } publicStringgetName() { returnname; } publicdoublegetHeight() { returnheight; } publicbooleanisTall() { return 1.8 <= getHeight(); } @Override publicStringtoString() { returngetName() + " (" + getHeight() + ")"; } } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 8
  • 9. Exemplar concreto que obedece ao “molde” (classe) Exemplo Person luke = new Person("Luke", 1.81); booleanisTall = luke.isTall(); doubleheight = luke.getHeight(); String asString = luke.toString(); Instância/objecto 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 9 luke isTall height asString 1,81 m verdadeiro 1,81 Luke name = “Luke” height = 1,81 “Luke (1,81)”
  • 10. Matrizes de (referências para) objectos É possível ter matrizes de referências para objectos de uma classe Exemplo Person[] daltons = new Person[4]; daltons[0] = new Person("Averell", 2.1); daltons[1] = new Person("William", 1.9); daltons[2] = new Person("Jack", 1.7); daltons[3] = new Person("Joe", 1.5); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 10 Averell 2,10 m Avarell William Jack Jack William Joe 1,70 m daltons null null null null 1,90 m Joe 0 1 2 3 1,70 m
  • 11. Matrizes de (referências para) objectos booleanjoeIsTall = daltons[3].isTall(); Stringname = daltons[1].getName(); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 11 Averell 2,10 m Jack joeIsTall name William falso 1,70 m daltons 1,90 m Joe 0 1 2 3 “William” 1,70 m
  • 12. Uma classe com um conjunto publicclass Gang { privateStringname; privateSet<Person> members; privatePersonlider; public Gang(finalStringname) { this.name=name; this.members= newHashSet<Person>(); this.lider = null; } publicvoidadd(finalPersonnewMember) { members.add(newMember); } publicvoidsetLiderTo(finalPersonnewLider) { members.add(newLider); lider = newLider; } publicStringtoString() { return"Gang {Name: " + name + ", Members: " + members + ", Lider: " + lider + "}"; } … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 12 Conjunto de Person. Os conjuntos não permitem membros repetidos. Hã? A ver mais tarde. 
  • 13. Uma classe com um conjunto Person averell = new Person("Averell", 2.1); Person william = new Person("William", 1.9); Person jack = new Person("Jack", 1.7); Person joe = new Person("Joe", 1.5); Gang daltons = new Gang("Dalton"); daltons.add(averell); daltons.add(william); daltons.add(jack); daltons.add(joe); daltons.setLiderTo(joe); out.println(daltons); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 13 _ Gang {Name: Dalton, Members: [Joe (1.5), Avarell (2.1), Jack (1.7), William (1.9)], Lider: Joe (1.5)} _
  • 14. Uma classe com um conjunto publicclass Gang { privateStringname; privateSet<Person> members; privatePersonlider; … publicdoubleaverageHeight() { doublesumOfHeights = 0.0; for (Person member : members) sumOfHeights += member.getHeight(); return sumOfHeights / members.size(); } … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 14 Este ciclo atribui sucessivamente a member todas as referências guardadas nos itens da colecção members (que neste caso é um conjunto).
  • 15. Uma classe com um conjunto Person averell = new Person("Averell", 2.1); Person william = new Person("William", 1.9); Person jack = new Person("Jack", 1.7); Person joe = new Person("Joe", 1.5); Gang daltons = new Gang("Dalton"); daltons.add(averell); daltons.add(william); daltons.add(jack); daltons.add(joe); daltons.setLiderTo(joe); out.println(daltons.averageHeight()); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 15 _ 1.7999999999999998 _
  • 16. Uma classe com um conjunto publicclass Gang { privateStringname; privateSet<Person> members; privatePersonlider; … public Person shorterMember() { if (members.size() == 0) thrownewIllegalStateException("Illegal…"); doublesmallerHeight = Double.POSITIVE_INFINITY; Person shorterMember = null; for (Person member : members) if (member.getHeight() < smallerHeight) { smallerHeight = member.getHeight(); shorterMember = member; } returnshorterMember; } … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 16
  • 17. Uma classe com um conjunto Person averell = new Person("Averell", 2.1); Person william = new Person("William", 1.9); Person jack = new Person("Jack", 1.7); Person joe = new Person("Joe", 1.5); Gang daltons = new Gang("Dalton"); daltons.add(averell); daltons.add(william); daltons.add(jack); daltons.add(joe); daltons.setLiderTo(joe); out.println(daltons.shorterMember()); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 17 _ Joe (1.5) _
  • 18. Classe Scanner Simplifica leitura de texto a partir de teclado (interacção com o utilizador) cadeia de caracteres (instância de String) arquivo … Nome completo: java.util.Scanner Usar apenas Scanner implica importjava.util.Scanner; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 18
  • 19. Importação e instanciação de Scanner Usa-se declaração de importação Declaração de importação antes das restantes definições importjava.util.Scanner; publicclassSomeClass { … publicstatic voidmain(final String[] args) { Scannerscanner = newScanner(…); … } … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 19 Construção de um novo Scanner.
  • 20. Classe Scanner: leitura de linha do teclado Construtor com java.lang.System.in para ler do teclado Operação nextLine bloqueia até próximo <enter> devolve texto introduzido até <enter> Exemplo Scanner inputScanner = new Scanner(System.in); Stringline = inputScanner.nextLine(); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 20
  • 21. Classe Scanner: leitura de palavras de uma cadeia String sentence = "one two three four five "; Scanner stringScanner = new Scanner(sentence); intnumberOfWords = 0; String invertedSentence = ""; while (scanner.hasNext()) { String word = scanner.next(); invertedSentence = word + " " + invertedSentence; numberOfWords++; } out.println("Read " + numberOfWords + " words."); out.println("Inverted sentence: " + invertedSentence); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 21 _ Read 5 words. _ Read 5 words. Invertedsentence: fivefourthreetwoone _
  • 22. A reter Classes Operação toString Objectos vs. instâncias Classes de valor vs. classes de referência Classes como moldes Instanciação Exemplos Conjuntos, colecções e ciclo for-each Leituras com Scanner 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 22
  • 23. A ler... Capítulos 8 e 9 do livro: Y. Daniel Liang, Introduction to Java Programming, 8.ª edição, Prentice-Hall, 2010. ISBN: 978-0-13-213080-6 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 23
  • 24. Sumário Operação toString Classes, instâncias e objectos Leituras com Scanner 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 24