Your SlideShare is downloading. ×
0
Operação toString
Classes, instâncias e objectos
Leituras com Scanner
 Classes e instâncias
 Instanciação
 Membros
 Funções vs. procedimentos
 Tipos de referência vs. tipos de valor
 Tip...
 Disponível em todas as classes Java
 Devolve representação textual (String) da
instância a que se aplica
 Definição po...
public class Rational {
private final int numerator;
private final int denominator;
public Rational(final int numerator, f...
 Métodos System.out.print* invocam toString
automaticamente
 Exemplo
Rational myRational = new Rational(1, 4);
out.print...
public class Rational {
private final int numerator;
private final int denominator;
…
@Override
public String toString() {...
 Métodos System.out.print* invocam toString
automaticamente
 Exemplo
Rational myRational = new Rational(1, 4);
out.print...
 Operador + com String e referência para instância de classe:
operação toString invocada automaticamente
 Exemplo
final ...
 Classe é «molde» para construção de instâncias/objectos com
características determinadas
 Classe de igualdade ou classe...
public class Person {
private String name;
private double height;
public Person(final String name, final double height) {
...
 Exemplar concreto que obedece ao “molde” (classe)
 Exemplo
final Person luke = new Person("Luke", 1.81);
final boolean ...
 É possível ter arrays de referências para objectos de
uma classe
 Exemplo
final Person[] daltons = new Person[4];
dalto...
final boolean joeIsTall = daltons[3].isTall();
final String name = daltons[1].getName();
2013/2014 Fundamentos de Programa...
public class Gang {
private String name;
private Set<Person> members;
private Person lider;
public Gang(final String name)...
final Person averell = new Person("Averell", 2.1);
final Person william = new Person("William", 1.9);
final Person jack = ...
public class Gang {
private String name;
private Set<Person> members;
private Person lider;
…
public double averageHeight(...
final Person averell = new Person("Averell", 2.1);
final Person william = new Person("William", 1.9);
final Person jack = ...
public class Gang {
private String name;
private Set<Person> members;
private Person lider;
…
public Person shortestMember...
final Person averell = new Person("Averell", 2.1);
final Person william = new Person("William", 1.9);
final Person jack = ...
 Simplifica leitura de texto a partir de
 teclado (interacção com o utilizador)
 cadeia de caracteres (instância de Str...
 Usa-se declaração de
importação
 Declaração de
importação antes das
restantes definições
import java.util.Scanner;
publ...
 Construtor com java.lang.System.in para ler do teclado
 Operação nextLine
 bloqueia até próximo <enter>
 devolve text...
final String sentence = "one two three four five ";
int numberOfWords = 0;
String invertedSentence = "";
final Scanner sen...
 Classes
 Operação toString
 Objectos vs. instâncias
 Classes de valor vs. classes de referência
 Classes como moldes...
 Operação toString
 Classes, instâncias e objectos
 Leituras com Scanner
2013/2014 Fundamentos de Programação 25
Upcoming SlideShare
Loading in...5
×

9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação

907

Published on

Fundamentos da Programação 9:
• Operação toString()
• Classes, instâncias e objectos
• Leituras com Scanner

Apresentação 9 da unidade curricular de Fundamentos de Programação da Universidade Europeia. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI do ISCTE-IUL, incluindo Luís Nunes, Ricardo Ribeiro, André Santos e o próprio Manuel Menezes de Sequeira.

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
907
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
28
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação"

  1. 1. Operação toString Classes, instâncias e objectos Leituras com Scanner
  2. 2.  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 2013/2014 Fundamentos de Programação 2
  3. 3.  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 2013/2014 Fundamentos de Programação 3
  4. 4. public class Rational { private final int numerator; private final int denominator; public Rational(final int numerator, final int denominator) { this.numerator = numerator; this.denominator = denominator; } … } … final Rational myRational = new Rational(1, 4); final String myRationalAsString = myRational.toString(); out.println(myRationalAsString); 2013/2014 Fundamentos de Programação 4 myRational numerator = 1 denominator = 4 myRationalAsString «Rational@75da931b» Nome da classeCódigo de hash em hexadecimal
  5. 5.  Métodos System.out.print* invocam toString automaticamente  Exemplo Rational myRational = new Rational(1, 4); out.println(myRational); 2013/2014 Fundamentos de Programação 5 _Rational@75da931b _
  6. 6. public class Rational { private final int numerator; private final int denominator; … @Override public String toString() { return numerator + "/" + denominator; } … } Rational myRational = new Rational(1, 4); String myRationalAsString = myRational.toString(); 2013/2014 Fundamentos de Programação 6 myRational numerator = 1 denominator = 4 myRationalAsString «1/4» Deixamos claro que queremos que este método se sobreponha ao método por omissão.
  7. 7.  Métodos System.out.print* invocam toString automaticamente  Exemplo Rational myRational = new Rational(1, 4); out.println(myRational); 2013/2014 Fundamentos de Programação 7 _1/4 _
  8. 8.  Operador + com String e referência para instância de classe: operação toString invocada automaticamente  Exemplo final Rational r1 = new Rational(1, 4); final Rational r2 = new Rational(1, 2); final Rational r3 = r1.multipliedBy(r2); final String string = r1 + " × " + r2 + " = " + r3; 2013/2014 Fundamentos de Programação 8 r1 1/4 r2 1/2 r3 1/8 string “1/4 × 1/2 = 1/8”
  9. 9.  Classe é «molde» para construção de instâncias/objectos com características determinadas  Classe de igualdade ou classe de valor  Igualdade é relevante  Identidade irrelevante  Resultado da construção: instância  Exemplo: Rational  Classe de identidade ou classe de referência  Identidade é relevante  Igualdade pouco importante  Resultado da construção: objecto  Exemplo: Person 2013/2014 Fundamentos de Programação 9
  10. 10. public class Person { private String name; private double height; public Person(final String name, final double height) { this.name = name; this.height = height; } public String getName() { return name; } public double getHeight() { return height; } public boolean isTall() { return 1.8 <= getHeight(); } @Override public String toString() { return getName() + " (" + getHeight() + ")"; } } 2013/2014 Fundamentos de Programação 10
  11. 11.  Exemplar concreto que obedece ao “molde” (classe)  Exemplo final Person luke = new Person("Luke", 1.81); final boolean isTall = luke.isTall(); final double height = luke.getHeight(); final String asString = luke.toString(); 2013/2014 Fundamentos de Programação 11 luke name = «Luke» height = 1,81 verdadeiro isTall 1,81 height asString «Luke (1,81)» 1,81m Luke
  12. 12.  É possível ter arrays de referências para objectos de uma classe  Exemplo final 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); 2013/2014 Fundamentos de Programação 12 Joe Jack William Avarell 2,10m Averell 1,90m William 1,70m Jack 1,50m Joe daltons null 0 1 2 3 null null null
  13. 13. final boolean joeIsTall = daltons[3].isTall(); final String name = daltons[1].getName(); 2013/2014 Fundamentos de Programação 13 falso joeIsTall name “William” 2,10m Averell 1,90m William 1,70m Jack 1,50m Joe daltons 0 1 2 3
  14. 14. public class Gang { private String name; private Set<Person> members; private Person lider; public Gang(final String name) { this.name = name; this.members = new HashSet<Person>(); this.lider = null; } public void add(final Person newMember) { members.add(newMember); } public void setLiderTo(final Person newLider) { members.add(newLider); lider = newLider; } @Override public String toString() { return "Gang {Name: " + name + ", Members: " + members + ", Lider: " + lider + "}"; } … } 2013/2014 Fundamentos de Programação 14 Conjunto de Person.Os conjuntos não permitem membros repetidos. Hã? A ver mais tarde. 
  15. 15. final Person averell = new Person("Averell", 2.1); final Person william = new Person("William", 1.9); final Person jack = new Person("Jack", 1.7); final Person joe = new Person("Joe", 1.5); final Gang daltons = new Gang("Dalton"); daltons.add(averell); daltons.add(william); daltons.add(jack); daltons.add(joe); daltons.setLiderTo(joe); out.println(daltons); 2013/2014 Fundamentos de Programação 15 _Gang {Name: Dalton, Members: [Joe (1.5), Avarell (2.1), Jack (1.7), William (1.9)], Lider: Joe (1.5)} _
  16. 16. public class Gang { private String name; private Set<Person> members; private Person lider; … public double averageHeight() { double sumOfHeights = 0.0; for (Person member : members) sumOfHeights += member.getHeight(); return sumOfHeights / members.size(); } … } 2013/2014 Fundamentos de Programação 16 Este ciclo coloca sucessivamente em member todas as referências guardadas nos itens da colecção members (que neste caso é um conjunto).
  17. 17. final Person averell = new Person("Averell", 2.1); final Person william = new Person("William", 1.9); final Person jack = new Person("Jack", 1.7); final Person joe = new Person("Joe", 1.5); final Gang daltons = new Gang("Dalton"); daltons.add(averell); daltons.add(william); daltons.add(jack); daltons.add(joe); daltons.setLiderTo(joe); out.println(daltons.averageHeight()); 2013/2014 Fundamentos de Programação 17 _1.7999999999999998 _
  18. 18. public class Gang { private String name; private Set<Person> members; private Person lider; … public Person shortestMember() { if (members.size() == 0) throw new IllegalStateException("Illegal…"); double smallestHeight = Double.POSITIVE_INFINITY; Person shortestMember = null; for (Person member : members) if (member.getHeight() < smallestHeight) { smallestHeight = member.getHeight(); shortestMember = member; } return shortestMember; } … } 2013/2014 Fundamentos de Programação 18
  19. 19. final Person averell = new Person("Averell", 2.1); final Person william = new Person("William", 1.9); final Person jack = new Person("Jack", 1.7); final Person joe = new Person("Joe", 1.5); final Gang daltons = new Gang("Dalton"); daltons.add(averell); daltons.add(william); daltons.add(jack); daltons.add(joe); daltons.setLiderTo(joe); out.println(daltons.shortestMember()); 2013/2014 Fundamentos de Programação 19 _Joe (1.5) _
  20. 20.  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 import java.util.Scanner; 2013/2014 Fundamentos de Programação 20
  21. 21.  Usa-se declaração de importação  Declaração de importação antes das restantes definições import java.util.Scanner; public class SomeClass { … public static void main(final String[] args) { Scanner scanner = new Scanner(…); … } … } 2013/2014 Fundamentos de Programação 21 Construção de um novo Scanner.
  22. 22.  Construtor com java.lang.System.in para ler do teclado  Operação nextLine  bloqueia até próximo <enter>  devolve texto introduzido até <enter>  Exemplo final Scanner inputScanner = new Scanner(System.in); final String line = inputScanner.nextLine(); inputScanner.close(); 2013/2014 Fundamentos de Programação 22
  23. 23. final String sentence = "one two three four five "; int numberOfWords = 0; String invertedSentence = ""; final Scanner sentenceScanner = new Scanner(sentence); while (sentenceScanner.hasNext()) { final String word = sentenceScanner.next(); invertedSentence = word + " " + invertedSentence; numberOfWords++; } sentenceScanner.close(); out.println("Read " + numberOfWords + " words."); out.println("Inverted sentence: " + invertedSentence); 2013/2014 Fundamentos de Programação 23 _Read 5 words. _ Read 5 words. Inverted sentence: five four three two one _
  24. 24.  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 foreach  Leituras com Scanner 2013/2014 Fundamentos de Programação 24
  25. 25.  Operação toString  Classes, instâncias e objectos  Leituras com Scanner 2013/2014 Fundamentos de Programação 25
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×