SlideShare a Scribd company logo
1 of 30
Aula 8 Classes e instâncias Cadeias de caracteres
Da aula anterior… Revisões 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 2
Classes e instâncias Classe Modelo para construção de instâncias que partilham conjunto de características observáveis Propriedades Operações Instância (ou objecto) Exemplar de classe Construído e manipulado durante execução do programa Tem identidade e estado próprios 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 3 Não classe pacote!
Classes (nãopacote) Nome (singular) Reflecte o que instâncias da classe representam (e.g., Point, Person, Game, Board, Player) Maiúscula inicial (convenção Java) Composição básica em Java Atributos Construtores Métodos de instância (e não de classe) 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 4 Métodos de classe são static.
Classes: membros 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 5
Classes: atributos e propriedades 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 atributos) de Point cardinality como propriedade (e atributo) de IntegerSet name como propriedade (e atributo) de Person 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 6
Classes: atributos e propriedades public class Point { privatedouble x; privatedouble y;    … public double getX() {       return x;    } public double getY() {       return y;    }    … } public class IntegerSet { privateint[] items; privateint cardinality;    … publicint[] getItems() {       return  Arrays.copyOf(items,                        cardinality);    }    … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 7 atributos atributos propriedades propriedades Instâncias dePoint Instâncias de IntegerSet (0; 0) (1; 1) {-1, 0, 1} { } {0, 2, 4} (2; -2) (2; 1) {1, 2, 3, 5, 7, 9} (1; 7,2)
Classes: construtores Rotinas que constroem instância de uma classe Inicializam atributos Garantem estado inicial válido Uma classe pode ter vários construtores, mas com diferentes assinaturas publicclassPoint { privatedouble x; privatedouble y; publicPoint() {       x = 0.0;       y = 0.0;    } publicPoint(final double x,                 final double y) { this.x = x; this.y = y;      }    …  } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 8 this: usado para desambiguar quando variáveis locais (e.g., parâmetros) tiverem mesmo nome que atributos.
Classes: instanciação Operador new Constrói novas instâncias Invoca construtor da classe Exemplos newPoint() newPoint(1.0, -2.0) 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 9 public Point() {    x = 0.0;    y = 0.0; } 1,0 public Point(final double x,              final double y) { this.x = x; this.y = y; } -2,0
Classes: referências Referências são variáveis Têm tipo associado Referem ou apontam instância desse tipo Podem não referenciar nada: valor null Exemplo Point point = new Point(3.0, 4.0); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 10 point : Point x = 3,0 y = 4,0 inicialização da referência definição da referência construção da instância
Classes são tipos de referência Tipos primitivos (int, double, etc.) Variáveis guardam valor desse tipo Atribuição altera valor guardado São tipos de valor Classes Java 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 a instância referenciada São tipos de referência 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 11
Variáveis que guardam referências. Classes são tipos de referência Tipos primitivos (int, boolean, etc.) int a = 7; int b = a; int c; Tipos de referência (matrizes, classes) Point a =newPoint(3.0, 4.0); Point b = a; Point c; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 12 a a 7 Variáveis que guardam valores. b b : Point 7 x = 3,0 y = 4,0 c c Excepto no caso de variáveis locais. Variáveis locais têm sempre de ser inicializadas explicitamente. Excepto no caso de variáveis locais. Variáveis locais têm sempre de ser inicializadas explicitamente. 0 null
Igualdade vs. identidade Tipos primitivos (int, boolean, etc.) int a = 7; int b = a; Tipos de referência (matrizes, classes) Point a =newPoint(3.0, 4.0); Point b =newPoint(3.0, 4.0); Point c = b; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 13 Operador == verifica se valores são iguais! a a b 7 b c : Point : Point a == b? Sim! 7 x = 3,0 y = 4,0 x = 3,0 y = 4,0 a == b? Não! c == b? Sim! Operador == verifica se referências são iguais! Ou seja, verifica se se referem à mesma instância!
Inicializações automáticas Atributos de classes e itens de matrizes de tipos primitivos inicializados com valor por omissão: int – 0 double – 0.0 boolean – false …  Atributos de classes e itens de matrizes de tipos de referência inicializados com null 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 14
Classes: operações e métodos de instância Operações realizam-se sobre uma 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 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 15
Classes: funções e procedimentos de instância Funções Conjunto de instruções, com interface bem definida, que efectua um dado cálculo Devolvem explicitamente um resultado ao exterior Não devem efectuar qualquer alteração ao estado do objecto Procedimentos Conjunto de instruções, com interface bem definida, que realiza uma determinada acção (normalmente alteram o estado da instância) Não devolvem explicitamente um resultado ao exterior  2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 16
Classes: natureza das operações de instância 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 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 17
Classes: funções publicclassNome { privatetipoatributo;     … publictiponome(parâmetros) { instruções         … returnexpressão;     }     … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 18 os atributos não devem ser  modificados pela função interface implementação
Classes: procedimentos publicclassNome { privatetipoatributo;     … publicvoidnome(parâmetros) { instruções         … returnexpressão;     }     … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 19 os atributos podem ser  modificados pelo procedimento interface implementação
Exemplo: calculadora publicclassCalculator { privatedoublevalue; publicCalculator() { value = 0.0;    } publicdoublegetValue() { returnvalue;    } publicvoidsetValue( doublenewValue) { value = newValue;    } publicvoidclear() { value = 0.0;    }	 publicvoidadd(doubleterm) { value += term;    }    … } Calculatorc = newCalculator(); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 20 c.getValue(); c c.setValue(5); c.clear(); c.add(10);
Classe vs. classe pacote 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 empacotados num módulo publicclassMath { privateMath() {…} publicstatic doublesin(doubleangle) {…} publicstatic doublesqrt(doublevalue) {…}     … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 21
Classe String 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 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 22 Instâncias do tipoString “IP…” “IP não é tramado” “não é tramado, se praticarem!”
String: inicialização Utilizar cadeias de caracteres literais optimiza memória e aumenta eficiência Evitar utilizar construir novas instâncias Exemplo a evitar Stringname =newString("ISCTE"); Stringname= "ISCTE"; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 23 valor literal (referência para instância de String pré-existente) "ISCTE" : String name “ISCTE”
String: comprimento e caracteres Comprimento intlength= name.length(); Caractere em determinada posição charlastCharacter = s.charAt(4); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 24 : String name length lastCharacter “ISCTE” 5 ‘E’ 'I' 'S' 'C' 'T' 'E' 0 1 2 3 4 : String
String: subcadeias Inicialização StringiscteIul = "ISCTE-IUL"; Subcadeia Stringiul = s.substring(6); Stringiscte = s.substring(0, 5); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 25 iscteIul iul iscte 'I' 'S' 'C' 'T' 'E' '-' 'I' 'U' 'L' 'I' 'U' 'L' 'I' 'S' 'C' 'T' 'E' 0 1 2 3 4 5 6 7 8 0 1 2 0 1 2 3 4
String: concatenação Concatenação StringnewName= iscte.concat("-IUL"); Concatenação simplificada (operador +) StringnewName = iscte + "-IUL"; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 26 iscte newName 'I' 'S' 'C' 'T' 'E' 'I' 'S' 'C' 'T' 'E' '-' 'I' 'U' 'L' 0 1 2 3 4 0 1 2 3 4 5 6 7 8
String: Igualdade vs. identidade Tipos primitivos (int, boolean, etc.) int a = 7; int b = a; Tipos de referência (matrizes, classes) Stringa = "A"; Stringb = "A"; Stringc =newString("A"); String d = c; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 27 Operador == verifica se valores são iguais! a a b "A" c d 7 b a == b? Sim! 7 a == b? Sim! a== c? Não! c == d? Sim. a.equals(b)? Sim. a.equals(c)? Sim! c.equals(d)? Sim. “A” “A” Operador == verifica se referências são iguais! Ou seja, verifica se se referem à mesma instância!
A reter 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 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 28
A ler... Capítulos 8 e 9do 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 29
Sumário Classes e instâncias Cadeias de caracteres 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 30

More Related Content

What's hot

Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01John Godoi
 
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaJava - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaMoises Omena
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosLeonardo Melo Santos
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosLudimila Monjardim Casagrande
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosMoises Omena
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Natanael Fonseca
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Adriano Teixeira de Souza
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem IIIJuliano Weber
 
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
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetrosMaurício Linhares
 

What's hot (20)

Aula4
Aula4Aula4
Aula4
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
 
Diagrama de Classe
Diagrama de ClasseDiagrama de Classe
Diagrama de Classe
 
Java 14
Java 14Java 14
Java 14
 
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e HerançaJava - Aula 4 - Sobrecarga de construtores, UML e Herança
Java - Aula 4 - Sobrecarga de construtores, UML e Herança
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Aula05
Aula05Aula05
Aula05
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a Objetos
 
JAVA - Pacotes
JAVA - PacotesJAVA - Pacotes
JAVA - Pacotes
 
v
vv
v
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
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
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 

Viewers also liked

Semana 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, ScannerManuel Menezes de Sequeira
 
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
 
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 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
 
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 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
 

Viewers also liked (8)

Eng.ª do Software - 1. Introdução
Eng.ª do Software - 1. IntroduçãoEng.ª do Software - 1. Introdução
Eng.ª do Software - 1. Introdução
 
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 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, Scanner
 
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
 
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 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
 
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 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...
 

Similar to Classes e instâncias em Java

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
 
Sistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaSistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaArthur Emanuel
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e ExercíciosArthur Emanuel
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologiaselliando dias
 
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
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Coleções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsColeções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsDenis L Presciliano
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Saulo Arruda
 
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
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHGiovanni Bassi
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)Helder da Rocha
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroRogério Moraes de Carvalho
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens PooInfogenius
 

Similar to Classes e instâncias em Java (20)

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
 
Aula5
Aula5Aula5
Aula5
 
Java7
Java7Java7
Java7
 
Sistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de JavaSistemas Distribuídos - Aula 04 - Revisão de Java
Sistemas Distribuídos - Aula 04 - Revisão de Java
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologias
 
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
 
Naked Objects
Naked ObjectsNaked Objects
Naked Objects
 
java_avancado.pdf
java_avancado.pdfjava_avancado.pdf
java_avancado.pdf
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Coleções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsColeções Propriedade, Resources e Strings
Coleções Propriedade, Resources e Strings
 
03 fundamentos java
03 fundamentos java03 fundamentos java
03 fundamentos java
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
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
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BH
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
 

More from 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
 
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
 
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
 
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...Manuel 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 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
 
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
 
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
 
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizadorEng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizadorManuel Menezes de Sequeira
 
Eng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoEng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoManuel Menezes de Sequeira
 

More from 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 ...
 
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...
 
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 ...
 
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
 
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 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...
 
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)
 
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
 
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizadorEng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
 
Eng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoEng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónico
 

Classes e instâncias em Java

  • 1. Aula 8 Classes e instâncias Cadeias de caracteres
  • 2. Da aula anterior… Revisões 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 2
  • 3. Classes e instâncias Classe Modelo para construção de instâncias que partilham conjunto de características observáveis Propriedades Operações Instância (ou objecto) Exemplar de classe Construído e manipulado durante execução do programa Tem identidade e estado próprios 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 3 Não classe pacote!
  • 4. Classes (nãopacote) Nome (singular) Reflecte o que instâncias da classe representam (e.g., Point, Person, Game, Board, Player) Maiúscula inicial (convenção Java) Composição básica em Java Atributos Construtores Métodos de instância (e não de classe) 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 4 Métodos de classe são static.
  • 5. Classes: membros 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 5
  • 6. Classes: atributos e propriedades 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 atributos) de Point cardinality como propriedade (e atributo) de IntegerSet name como propriedade (e atributo) de Person 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 6
  • 7. Classes: atributos e propriedades public class Point { privatedouble x; privatedouble y; … public double getX() { return x; } public double getY() { return y; } … } public class IntegerSet { privateint[] items; privateint cardinality; … publicint[] getItems() { return Arrays.copyOf(items, cardinality); } … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 7 atributos atributos propriedades propriedades Instâncias dePoint Instâncias de IntegerSet (0; 0) (1; 1) {-1, 0, 1} { } {0, 2, 4} (2; -2) (2; 1) {1, 2, 3, 5, 7, 9} (1; 7,2)
  • 8. Classes: construtores Rotinas que constroem instância de uma classe Inicializam atributos Garantem estado inicial válido Uma classe pode ter vários construtores, mas com diferentes assinaturas publicclassPoint { privatedouble x; privatedouble y; publicPoint() { x = 0.0; y = 0.0; } publicPoint(final double x, final double y) { this.x = x; this.y = y; } … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 8 this: usado para desambiguar quando variáveis locais (e.g., parâmetros) tiverem mesmo nome que atributos.
  • 9. Classes: instanciação Operador new Constrói novas instâncias Invoca construtor da classe Exemplos newPoint() newPoint(1.0, -2.0) 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 9 public Point() { x = 0.0; y = 0.0; } 1,0 public Point(final double x, final double y) { this.x = x; this.y = y; } -2,0
  • 10. Classes: referências Referências são variáveis Têm tipo associado Referem ou apontam instância desse tipo Podem não referenciar nada: valor null Exemplo Point point = new Point(3.0, 4.0); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 10 point : Point x = 3,0 y = 4,0 inicialização da referência definição da referência construção da instância
  • 11. Classes são tipos de referência Tipos primitivos (int, double, etc.) Variáveis guardam valor desse tipo Atribuição altera valor guardado São tipos de valor Classes Java 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 a instância referenciada São tipos de referência 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 11
  • 12. Variáveis que guardam referências. Classes são tipos de referência Tipos primitivos (int, boolean, etc.) int a = 7; int b = a; int c; Tipos de referência (matrizes, classes) Point a =newPoint(3.0, 4.0); Point b = a; Point c; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 12 a a 7 Variáveis que guardam valores. b b : Point 7 x = 3,0 y = 4,0 c c Excepto no caso de variáveis locais. Variáveis locais têm sempre de ser inicializadas explicitamente. Excepto no caso de variáveis locais. Variáveis locais têm sempre de ser inicializadas explicitamente. 0 null
  • 13. Igualdade vs. identidade Tipos primitivos (int, boolean, etc.) int a = 7; int b = a; Tipos de referência (matrizes, classes) Point a =newPoint(3.0, 4.0); Point b =newPoint(3.0, 4.0); Point c = b; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 13 Operador == verifica se valores são iguais! a a b 7 b c : Point : Point a == b? Sim! 7 x = 3,0 y = 4,0 x = 3,0 y = 4,0 a == b? Não! c == b? Sim! Operador == verifica se referências são iguais! Ou seja, verifica se se referem à mesma instância!
  • 14. Inicializações automáticas Atributos de classes e itens de matrizes de tipos primitivos inicializados com valor por omissão: int – 0 double – 0.0 boolean – false … Atributos de classes e itens de matrizes de tipos de referência inicializados com null 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 14
  • 15. Classes: operações e métodos de instância Operações realizam-se sobre uma 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 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 15
  • 16. Classes: funções e procedimentos de instância Funções Conjunto de instruções, com interface bem definida, que efectua um dado cálculo Devolvem explicitamente um resultado ao exterior Não devem efectuar qualquer alteração ao estado do objecto Procedimentos Conjunto de instruções, com interface bem definida, que realiza uma determinada acção (normalmente alteram o estado da instância) Não devolvem explicitamente um resultado ao exterior 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 16
  • 17. Classes: natureza das operações de instância 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 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 17
  • 18. Classes: funções publicclassNome { privatetipoatributo; … publictiponome(parâmetros) { instruções … returnexpressão; } … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 18 os atributos não devem ser modificados pela função interface implementação
  • 19. Classes: procedimentos publicclassNome { privatetipoatributo; … publicvoidnome(parâmetros) { instruções … returnexpressão; } … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 19 os atributos podem ser modificados pelo procedimento interface implementação
  • 20. Exemplo: calculadora publicclassCalculator { privatedoublevalue; publicCalculator() { value = 0.0; } publicdoublegetValue() { returnvalue; } publicvoidsetValue( doublenewValue) { value = newValue; } publicvoidclear() { value = 0.0; } publicvoidadd(doubleterm) { value += term; } … } Calculatorc = newCalculator(); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 20 c.getValue(); c c.setValue(5); c.clear(); c.add(10);
  • 21. Classe vs. classe pacote 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 empacotados num módulo publicclassMath { privateMath() {…} publicstatic doublesin(doubleangle) {…} publicstatic doublesqrt(doublevalue) {…} … } 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 21
  • 22. Classe String 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 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 22 Instâncias do tipoString “IP…” “IP não é tramado” “não é tramado, se praticarem!”
  • 23. String: inicialização Utilizar cadeias de caracteres literais optimiza memória e aumenta eficiência Evitar utilizar construir novas instâncias Exemplo a evitar Stringname =newString("ISCTE"); Stringname= "ISCTE"; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 23 valor literal (referência para instância de String pré-existente) "ISCTE" : String name “ISCTE”
  • 24. String: comprimento e caracteres Comprimento intlength= name.length(); Caractere em determinada posição charlastCharacter = s.charAt(4); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 24 : String name length lastCharacter “ISCTE” 5 ‘E’ 'I' 'S' 'C' 'T' 'E' 0 1 2 3 4 : String
  • 25. String: subcadeias Inicialização StringiscteIul = "ISCTE-IUL"; Subcadeia Stringiul = s.substring(6); Stringiscte = s.substring(0, 5); 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 25 iscteIul iul iscte 'I' 'S' 'C' 'T' 'E' '-' 'I' 'U' 'L' 'I' 'U' 'L' 'I' 'S' 'C' 'T' 'E' 0 1 2 3 4 5 6 7 8 0 1 2 0 1 2 3 4
  • 26. String: concatenação Concatenação StringnewName= iscte.concat("-IUL"); Concatenação simplificada (operador +) StringnewName = iscte + "-IUL"; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 26 iscte newName 'I' 'S' 'C' 'T' 'E' 'I' 'S' 'C' 'T' 'E' '-' 'I' 'U' 'L' 0 1 2 3 4 0 1 2 3 4 5 6 7 8
  • 27. String: Igualdade vs. identidade Tipos primitivos (int, boolean, etc.) int a = 7; int b = a; Tipos de referência (matrizes, classes) Stringa = "A"; Stringb = "A"; Stringc =newString("A"); String d = c; 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 27 Operador == verifica se valores são iguais! a a b "A" c d 7 b a == b? Sim! 7 a == b? Sim! a== c? Não! c == d? Sim. a.equals(b)? Sim. a.equals(c)? Sim! c.equals(d)? Sim. “A” “A” Operador == verifica se referências são iguais! Ou seja, verifica se se referem à mesma instância!
  • 28. A reter 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 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 28
  • 29. A ler... Capítulos 8 e 9do 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 29
  • 30. Sumário Classes e instâncias Cadeias de caracteres 2010/2011 Introdução à Programação - DCTI - ISCTE-IUL 30