Your SlideShare is downloading. ×
0
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos de Programação
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

888

Published on

Fundamentos da Programação 9: …

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
888
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
28
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. Operação toString Classes, instâncias e objectos Leituras com Scanner
  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.  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. 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.  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. 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.  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.  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.  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. 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.  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.  É 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. 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. 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. 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. 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. 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. 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. 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.  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.  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.  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. 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.  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.  Operação toString  Classes, instâncias e objectos  Leituras com Scanner 2013/2014 Fundamentos de Programação 25

×