SlideShare une entreprise Scribd logo
1  sur  29
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
▪ 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!
 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.
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
 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.
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?
 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.
 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
 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
 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
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.
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!
 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
 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
 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
 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
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
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
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
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
 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…"
 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)
 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
 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
 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
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
 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
 Classes e instâncias
 Cadeias de caracteres
2013/2014 Fundamentos de Programação 29

Contenu connexe

Tendances

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
 
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
 
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
 
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
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosLeonardo Melo Santos
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Andre Nascimento
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Mario Jorge Pereira
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Marcos Castro
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVACristiano Almeida
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Leonardo Melo Santos
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012Luís Cobucci
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 

Tendances (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...
 
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...
 
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...
 
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
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
Introducao ao C#
Introducao ao C#Introducao ao C#
Introducao ao C#
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
POO - Aula 003
POO - Aula 003POO - Aula 003
POO - Aula 003
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
Java2
Java2Java2
Java2
 
Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012
 
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
 
Java5
Java5Java5
Java5
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 

En vedette

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
 
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 - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitosEng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitosManuel Menezes de Sequeira
 

En vedette (8)

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...
 
Programação Orientada por Objectos - Aula 7
Programação Orientada por Objectos - Aula 7Programação Orientada por Objectos - Aula 7
Programação Orientada por Objectos - Aula 7
 
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
 
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
 
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
 
Programação Orientada por Objectos - Aula 5
Programação Orientada por Objectos - Aula 5Programação Orientada por Objectos - Aula 5
Programação Orientada por Objectos - Aula 5
 
Eng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitosEng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitos
 

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

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
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
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
 
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
 
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
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Natanael Fonseca
 
Java Desktop
Java DesktopJava Desktop
Java Desktopciceroclc
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Tchelinux
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHGiovanni Bassi
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Javaelliando dias
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraDextra
 
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
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaEduardo Bregaida
 

Similaire à 8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação (20)

Aula4
Aula4Aula4
Aula4
 
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
 
Aula5
Aula5Aula5
Aula5
 
DDD > Experiências
DDD > ExperiênciasDDD > Experiências
DDD > Experiências
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
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
 
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
 
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
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Java Desktop
Java DesktopJava Desktop
Java Desktop
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
 
java_avancado.pdf
java_avancado.pdfjava_avancado.pdf
java_avancado.pdf
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BH
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Java
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails Dextra
 
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
 
Ed1
Ed1Ed1
Ed1
 
JavaScript - A Linguagem
JavaScript - A LinguagemJavaScript - A Linguagem
JavaScript - A Linguagem
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
 

Plus de Manuel 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 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 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 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 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
 
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
 
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
 

Plus de Manuel Menezes de Sequeira (14)

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 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 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 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 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...
 
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
 
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
 
Eng.ª do Software - 6. Gestão de projectos
Eng.ª do Software - 6. Gestão de projectosEng.ª do Software - 6. Gestão de projectos
Eng.ª do Software - 6. Gestão de projectos
 

Dernier

Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxLuizHenriquedeAlmeid6
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...andreiavys
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptRogrioGonalves41
 
Poesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptxPoesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptxPabloGabrielKdabra
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...MariaCristinaSouzaLe1
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.denisecompasso2
 
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdf
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdfAula prática JOGO-Regencia-Verbal-e-Nominal.pdf
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdfKarinaSouzaCorreiaAl
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPaulaYaraDaasPedro
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º anoRachel Facundo
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticash5kpmr7w7
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptjricardo76
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLidianePaulaValezi
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Cabiamar
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfAutonoma
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxFlviaGomes64
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...azulassessoria9
 

Dernier (20)

Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.ppt
 
Poesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptxPoesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptx
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdf
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdfAula prática JOGO-Regencia-Verbal-e-Nominal.pdf
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdf
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 

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

  • 2.  Arrays multidimensionais  Estratégias de resolução de problemas 2013/2014 Fundamentos de Programação 2
  • 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.  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. 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.  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. 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.  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.  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.  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.  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. 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. 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.  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.  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.  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.  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. 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. 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. 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. 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.  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.  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.  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.  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.  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. 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.  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.  Classes e instâncias  Cadeias de caracteres 2013/2014 Fundamentos de Programação 29

Notes de l'éditeur

  1. Todos estes importantes conceitos serão revistos mais tarde, em detalhe.
  2. Funções não têm efeitos laterais. Procedimentos têm efeitos laterais.
  3. Funções não têm efeitos laterais. Procedimentos têm efeitos laterais.