Classes e instâncias
Cadeias de caracteres
 Arrays multidimensionais
 Estratégias de resolução de problemas
2013/2014 Fundamentos de Programação 2
 Classe
 Modelo para construção de instâncias/objectos que
partilham conjunto de características observáveis
▪ Proprieda...
 Nome (singular)
 Reflecte o que instâncias da classe representam (e.g.,
Point, Person, Game, Board, Player)
 Nome comp...
Atributos Variáveis que cada instância da classe possui em exclusivo.
Conjunto de valores dos atributos de uma instância é...
 Atributos
 Variáveis possuídas em exclusivo por cada instância de classe
 Conjunto dos seus valores determinam estado ...
public class Point {
private double x;
private double y;
…
public double getX() {
return x;
}
public double getY() {
retur...
 Rotinas que inicializam
uma nova instância de
uma classe
 Inicializam atributos
 Garantem estado inicial
válido
 Uma ...
 Operador new
 Constrói novas instâncias
 Invoca construtor que inicializa a instância
 Exemplos
 new Point()
 new P...
 São referências!
 Têm tipo/classe associado
 Referem ou apontam instância desse tipo/classe
 Podem não referenciar na...
 Tipos primitivos (int, double, etc.)
 Variáveis guardam valor desse tipo
 Atribuição altera valor guardado
 São tipos...
Variáveis que
guardam
referências.
Tipos de valor (int, boolean, etc.)
int a = 7;
int b = a;
int c;
Tipos de referência (a...
Tipos de valor (int, boolean, etc.)
int a = 7;
int b = a;
Tipos de referência (arrays,
classes)
Point a =
new Point(3.0, 4...
 Atributos de classes e itens de arrays de tipos
primitivos inicializados com valor por
omissão:
 int → 0
 double → 0.0...
 Operações realizam-se sobre instância da
classe
 Métodos são implementação de operações
 Operações podem ser
 Funções...
 Função
 Conjunto de instruções, com interface bem definida,
que efectua um dado cálculo
 Devolve um resultado
 Não de...
 Inspectores (funções) – Acedem às propriedades
da instância
 Modificadores (procedimentos) – Agem sobre a
instância, mo...
public class Nome {
private tipo atributo;
…
public tipo nome(parâmetros) {
instruções
…
return expressão;
}
…
}
2013/2014...
public class Nome {
private tipo atributo;
…
public void nome(parâmetros) {
instruções
…
}
…
}
2013/2014 Fundamentos de Pr...
public class Calculator {
private double value;
public Calculator() {
value = 0.0;
}
public double getValue() {
return val...
Classe
 Molde para construção de instâncias
public class Calculator {
private int value;
public Calculator() {…}
public i...
 Representa cadeias de caracteres
 Instâncias imutáveis, i.e., estado observável
não muda após construção
 Valores lite...
 Utilizar cadeias de
caracteres literais
optimiza memória e
aumenta eficiência
 Evitar construir novas
instâncias
explic...
 Comprimento
 final int length = name.length();
 Caractere em determinada posição
 final char lastCharacter = name.cha...
 Inicialização
 String name = "Mário Sá";
 Subcadeia
 String firstName = name.substring(0, 5);
 String lastName = nam...
 Concatenação
 final String newName = firstName.concat(" Pi");
 Concatenação simplificada (operador +)
 final String n...
Tipos primitivos (int, boolean,
etc.)
int a = 7;
int b = a;
Tipos de referência (arrays,
classes)
String a = "A";
String b...
 Classes e instâncias
 Instanciação
 Membros
▪ Propriedades vs. atributos
▪ Operações vs. métodos
▪ Construtores
 Funç...
 Classes e instâncias
 Cadeias de caracteres
2013/2014 Fundamentos de Programação 29
Upcoming SlideShare
Loading in...5
×

8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação

941

Published on

Fundamentos da Programação 8:
• Classes e instâncias
• Cadeias de caracteres

Apresentação 8 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
941
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
40
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Todos estes importantes conceitos serão revistos mais tarde, em detalhe.
  • Funções não têm efeitos laterais. Procedimentos têm efeitos laterais.
  • Funções não têm efeitos laterais. Procedimentos têm efeitos laterais.
  • 8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação

    1. 1. Classes e instâncias Cadeias de caracteres
    2. 2.  Arrays multidimensionais  Estratégias de resolução de problemas 2013/2014 Fundamentos de Programação 2
    3. 3.  Classe  Modelo para construção de instâncias/objectos que partilham conjunto de características observáveis ▪ Propriedades ▪ Operações  Instância/objecto  Exemplar de classe  Construído e manipulado durante execução do programa  Tem identidade e estado próprios 2013/2014 Fundamentos de Programação 3 Não classe-pacote!
    4. 4.  Nome (singular)  Reflecte o que instâncias da classe representam (e.g., Point, Person, Game, Board, Player)  Nome completa «Each instance of this class is a …»  Maiúscula inicial (convenção Java)  Composição básica em Java  Atributos  Construtores  Métodos de instância (e não de classe) 2013/2014 Fundamentos de Programação 4 Métodos de classe são static.
    5. 5. Atributos Variáveis que cada instância da classe possui em exclusivo. Conjunto de valores dos atributos de uma instância é o seu estado. Fazem parte da implementação da classe. Construtores Rotinas cujo objectivo é inicializar novas instâncias da classe, colocando-as num estado válido. São invocados como parte do processo de contrução de novas instâncias. Métodos de instância Métodos que se invocam através de uma instância particular da respectiva classe. Implementam operações usadas (a) para aceder a propriedades de uma instância, (b) para realizar acções sobre essa instância, (c) para realizar acções sobre terceiros, etc. 2013/2014 Fundamentos de Programação 5
    6. 6.  Atributos  Variáveis possuídas em exclusivo por cada instância de classe  Conjunto dos seus valores determinam estado de uma instância  Parte da implementação de uma classe  Propriedades  Acessíveis (em Java) através de operações da classe  Conjunto dos seus valores determinam estado observável de uma instância  Parte da interface de uma classe  Exemplos  x e y como propriedades (e possivelmente atributos) de Point  cardinality como propriedade (e atributo) de SetOfInts  name como propriedade (e atributo) de Person 2013/2014 Fundamentos de Programação 6 Uma operação é a interface de um método de instância, que a implementa.
    7. 7. public class Point { private double x; private double y; … public double getX() { return x; } public double getY() { return y; } … } public class SetOfInts { private int[] items; private int cardinality; … public int[] getItems() { return Arrays.copyOf(items, cardinality); } … } 2013/2014 Fundamentos de Programação 7 Instâncias de SetOfInts {1, 2, 3, 5, 7, 9} { }{0, 2, 4} {-1, 0, 1} Instâncias de Point (2; -2) (2; 1) (1; 1) (0; 0) (1; 7,2) atributosatributos propriedadespropriedades O array items tem ocupados, em cada instante, apenas cardinality dos seus itens. Ou seja, os itens do conjunto são guardados nos primeiros cardinality itens do array items. Porquê a cópia?
    8. 8.  Rotinas que inicializam uma nova instância de uma classe  Inicializam atributos  Garantem estado inicial válido  Uma classe pode ter vários construtores, mas com diferentes assinaturas public class Point { private double x; private double y; public Point() { x = 0.0; y = 0.0; } public Point(final double x, final double y) { this.x = x; this.y = y; } … } 2013/2014 Fundamentos de Programação 8 this: usado para desambiguar quando variáveis locais (e.g., parâmetros) tiverem mesmo nome que atributos.
    9. 9.  Operador new  Constrói novas instâncias  Invoca construtor que inicializa a instância  Exemplos  new Point()  new Point(1.0, -2.0) 2013/2014 Fundamentos de Programação 9 public Point() { x = 0.0; y = 0.0; } public Point(final double x, final double y) { this.x = x; this.y = y; } 1,0 -2,0
    10. 10.  São referências!  Têm tipo/classe associado  Referem ou apontam instância desse tipo/classe  Podem não referenciar nada: valor null  Exemplo:  Point point = new Point(3.0, 4.0); 2013/2014 Fundamentos de Programação 10 definição da referência construção da instância point x = 3,0 y = 4,0 : Point inicialização da referência
    11. 11.  Tipos primitivos (int, double, etc.)  Variáveis guardam valor desse tipo  Atribuição altera valor guardado  São tipos de valor  Classes e arrays  Variáveis guardam referência para instância dessa classe (ou classe compatível)  Atribuição altera referência guardada  Atribuição não altera instância referenciada  São tipos de referência 2013/2014 Fundamentos de Programação 11
    12. 12. Variáveis que guardam referências. Tipos de valor (int, boolean, etc.) int a = 7; int b = a; int c; Tipos de referência (arrays, classes) Point a = new Point(3.0, 4.0); Point b = a; Point c; 2013/2014 Fundamentos de Programação 12 7 a 7 b 0 c Excepto no caso de variáveis locais. Variáveis locais têm sempre de ser inicializadas explicitamente. a b null c Excepto no caso de variáveis locais. Variáveis locais têm sempre de ser inicializadas explicitamente. : Point x = 3,0 y = 4,0 Variáveis que guardam valores.
    13. 13. Tipos de valor (int, boolean, etc.) int a = 7; int b = a; Tipos de referência (arrays, classes) Point a = new Point(3.0, 4.0); Point b = new Point(3.0, 4.0); Point c = b; 2013/2014 Fundamentos de Programação 13 7 a 7 b a c : Point x = 3,0 y = 4,0b : Point x = 3,0 y = 4,0 a == b? Não! c == b? Sim! a == b? Sim! Operador == verifica se valores são iguais! Operador == verifica se referências são iguais! Ou seja, verifica se se referem à mesma instância!
    14. 14.  Atributos de classes e itens de arrays de tipos primitivos inicializados com valor por omissão:  int → 0  double → 0.0  boolean → false  …  Atributos de classes e itens de arrays de tipos de referência inicializados com null 2013/2014 Fundamentos de Programação 14
    15. 15.  Operações realizam-se sobre instância da classe  Métodos são implementação de operações  Operações podem ser  Funções – Calculam e devolvem um resultado  Procedimentos – Realizam uma acção 2013/2014 Fundamentos de Programação 15
    16. 16.  Função  Conjunto de instruções, com interface bem definida, que efectua um dado cálculo  Devolve um resultado  Não deve efectuar qualquer alteração ao estado do objecto ou do mundo  Procedimento  Conjunto de instruções, com interface bem definida, que realiza uma determinada acção (normalmente alteram o estado da instância ou do mundo)  Não devolve um resultado 2013/2014 Fundamentos de Programação 16
    17. 17.  Inspectores (funções) – Acedem às propriedades da instância  Modificadores (procedimentos) – Agem sobre a instância, modificando-a  Funções não inspectoras – Acedem às propriedades de terceiros  Procedimentos não modificadores – Agem sobre terceiros 2013/2014 Fundamentos de Programação 17
    18. 18. public class Nome { private tipo atributo; … public tipo nome(parâmetros) { instruções … return expressão; } … } 2013/2014 Fundamentos de Programação 18 implementação interface os atributos não devem ser modificados pela função
    19. 19. public class Nome { private tipo atributo; … public void nome(parâmetros) { instruções … } … } 2013/2014 Fundamentos de Programação 19 implementação interface os atributos podem ser modificados pelo procedimento
    20. 20. public class Calculator { private double value; public Calculator() { value = 0.0; } public double getValue() { return value; } public void setValue( final double newValue) { value = newValue; } public void clear() { value = 0.0; } public void add(final double term) { value += term; } … } Calculator c = new Calculator(); 2013/2014 Fundamentos de Programação 20 c.clear(); c.setValue(5); c.add(10); c.getValue(); c
    21. 21. Classe  Molde para construção de instâncias public class Calculator { private int value; public Calculator() {…} public int value() {…} public void clear() {…} … } Classe-pacote  Conjunto de métodos de classe relacionados e empacotados num módulo final public class Math { private Math() {…} public static double sin(double angle) {…} public static double sqrt(double value) {…} … } 2013/2014 Fundamentos de Programação 21
    22. 22.  Representa cadeias de caracteres  Instâncias imutáveis, i.e., estado observável não muda após construção  Valores literais  Caracteres entre aspas  São referências para instâncias 2013/2014 Fundamentos de Programação 22 Instâncias do tipo String "Não é tramado, se praticarem!" "FP não é tramado" "FP…"
    23. 23.  Utilizar cadeias de caracteres literais optimiza memória e aumenta eficiência  Evitar construir novas instâncias explicitamente  Exemplo a evitar String name = new String("Mário"); String name = "Mário"; 2013/2014 Fundamentos de Programação 23 "Mário" «Mário» : String name valor literal (referência para instância de String pré-construída)
    24. 24.  Comprimento  final int length = name.length();  Caractere em determinada posição  final char lastCharacter = name.charAt(4); 2013/2014 Fundamentos de Programação 24 «Mário» : String name ‘M’ ‘á’ ‘r’ ‘i’ ‘o’ 0 1 2 3 4 : String 5 length ‘o’ lastCharacter
    25. 25.  Inicialização  String name = "Mário Sá";  Subcadeia  String firstName = name.substring(0, 5);  String lastName = name.substring(6); 2013/2014 Fundamentos de Programação 25 name ‘M’ ‘á’ ‘r’ ‘i’ ‘o’ ‘ ’ ‘S’ ‘á’ 0 1 2 3 4 5 6 7 firstName lastName ‘S’ ‘á’ 0 1 ‘M’ ‘á’ ‘r’ ‘i’ ‘o’ 0 1 2 3 4
    26. 26.  Concatenação  final String newName = firstName.concat(" Pi");  Concatenação simplificada (operador +)  final String newName = firstName + " Pi"; 2013/2014 Fundamentos de Programação 26 firstName ‘M’ ‘á’ ‘r’ ‘i’ ‘o’ 0 1 2 3 4 newName ‘M´ ‘á’ ‘r’ ‘i’ ‘o’ ‘ ’ ‘P’ ‘i’ 0 1 2 3 4 5 6 7
    27. 27. Tipos primitivos (int, boolean, etc.) int a = 7; int b = a; Tipos de referência (arrays, classes) String a = "A"; String b = "A"; String c = new String("A"); String d = c; 2013/2014 Fundamentos de Programação 27 7 a 7 b a c b a == b? Sim! a == c? Não! c == d? Sim. a.equals(b)? Sim. a.equals(c)? Sim! c.equals(d)? Sim. a == b? Sim! Operador == verifica se valores são iguais! Operador == verifica se referências são iguais! Ou seja, verifica se se referem à mesma instância! “A” "A" “A” d
    28. 28.  Classes e instâncias  Instanciação  Membros ▪ Propriedades vs. atributos ▪ Operações vs. métodos ▪ Construtores  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 28
    29. 29.  Classes e instâncias  Cadeias de caracteres 2013/2014 Fundamentos de Programação 29
    1. Gostou de algum slide específico?

      Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

    ×