1. Tecnologia em Sistemas para Internet - IFMS
Aula 03 – Classes e Objetos
Estruturas de Dados
Prof.º Msc. Sidney Roberto de Sousa
2. O que veremos nesta aula?
● Classes
● Uso de classes para encapsular tipos
complexos
● Objetos
● Matrizes de classes
Tec. em Sistemas para Internet - IFMS 2
3. Problema
● Imagine que temos que criar um sistema para
cadastrar alunos de um colégio
● Primeiramente, devemos levantar quais são
os dados de cada aluno a serem cadastrados
● Uma vez que estes dados sejam levantados,
devemos modelá-los
Tec. em Sistemas para Internet - IFMS 3
4. Dados do aluno
Aluno:
Matrícula: Número
Nome Completo: Texto
Sexo: Caractere
CPF: Número
Data de Nascimento: Data
Telefone: Número
Tec. em Sistemas para Internet - IFMS 4
5. Dados do aluno
Aluno:
Matrícula: Número
Nome Completo: Texto Preciso armazenar
Sexo: Caractere como numérico?
CPF: Número
Data de Nascimento: Data
Telefone: Número
Tec. em Sistemas para Internet - IFMS 5
6. Dados do aluno
Aluno:
Matrícula: Texto
Nome Completo: Texto
Sexo: Caractere
CPF: Texto
Data de Nascimento: Data
Telefone: Texto
Tec. em Sistemas para Internet - IFMS 6
7. Lendo dados de um aluno
String matricula = “”;
String nomeCompleto = “”;
char sexo = '';
String cpf = “”;
Date dataNascimento = null;
String telefone = “”;
// Deve agora realizar a leitura dos dados do aluno...
Tec. em Sistemas para Internet - IFMS 7
8. Problema
● Eu tenho que “guardar” todas as variáveis
contendo os dados do aluno cadastrado → 6
variáveis
● Se eu tiver 10 alunos, tenho que criar 60
variáveis...
● Solução: poderia utilizar matrizes!
Tec. em Sistemas para Internet - IFMS 8
9. Lendo dados de um aluno
String[] matriculas = new String[10];
String[] nomesCompletos = new String[10];
char[] sexos = new char[10];
String[] cpfs = new String[10];
Date[] datasNascimento = new Date[10];
String[] telefones = new String[10];
// Deve agora realizar a leitura dos dados dos alunos...
Tec. em Sistemas para Internet - IFMS 9
10. Problema
● Agora ao invés de 60 variáveis, eu tenho apenas 6,
mas...
● … será que esta é a melhor solução?
– Para trabalhar com os dados dos alunos, o meu programa
necessitará guardar 6 matrizes
– Falta de centralização dos dados → maior complexidade
de desenvolvimento
● Solução: precisamos de um tipo de dados
complexo para encapsular os dados de cada aluno
Tec. em Sistemas para Internet - IFMS 10
11. Tipo de dados complexo
● Encapsula um ou mais campos de dados de
acordo com um modelo específico
● No nosso exemplo, o modelo se refere a um
aluno
● Em Java, tipos complexos são modelados
como classes
Tec. em Sistemas para Internet - IFMS 11
13. Métodos e atributos
● Uma classe Java é composta basicamente
por atributos e métodos
● Um atributo é uma propriedade da classe
● Um método é um bloco de código que tem
como finalidade executar alguma tarefa →
usando ou não os atributos da classe
Tec. em Sistemas para Internet - IFMS 13
14. Métodos e atributos
● Atributos e métodos podem ter acesso privado, protegido ou
público
– Se privado, não é visível por outras classes
– Se protegido, é visível por classes do mesmo pacote ou subclasses
(veremos isto futuramente...)
– Se público, é visível por qualquer outra classe
● Todo atributo e método é visível por qualquer outro atributo/método
dentro da própria classe
● Atributos costumam ser definidos com acesso privado → proteção
e encapsulamento dos atributos da classe
● O nível de acesso de um método depende de para quem queremos
disponibilizá-lo
Tec. em Sistemas para Internet - IFMS 14
15. Getters e Setters
● Como dito anteriormente, atributos de classes
costumam ser definidos como privados
● Assim, o acesso aos valores dos atributos é feito
por meio de métodos
● Um método que retorna o valor de um atributo da
classe é popularmente chamado de getter
● Um método que modifica o valor de um atributo
da classe é popularmente chamado de setter
Tec. em Sistemas para Internet - IFMS 15
16. Analisando a classe Aluno
private String matricula;
// Método getter para o atributo matricula
public String getMatricula() {
return matricula;
}
// Método setter para o atributo matrícula
public void setMatricula(String matricula) {
this.matricula = matricula;
}
Tec. em Sistemas para Internet - IFMS 16
17. Analisando a classe Aluno
private String matricula;
// Método getter para o atributo matricula
public String getMatricula() { Retorna um valor do
return matricula; tipo String
}
// Método setter para o atributo matrícula
Não retorna nenhum
public void setMatricula(String matricula) {
this.matricula = matricula; valor; por isto o tipo de
} retorno é void
Tec. em Sistemas para Internet - IFMS 17
18. Analisando a classe Aluno
private String matricula;
Note que o nome do
atributo matricula
// Método getter para o atributo matricula
conflita com o nome
public String getMatricula() { do parâmetro
return matricula;
matricula do método
setMatricula.
}
A palavra reservada
this assegura que a
// Método setter para o atributo matrícula variável sendo
public void setMatricula(String matricula) { utilizada é o atributo
matricula
this.matricula = matricula; pertencente à classe
} Aluno.
Tec. em Sistemas para Internet - IFMS 18
19. Lendo dados de um aluno com a classe Aluno
Classe LeituraAluno
(abaixo no blog)
Tec. em Sistemas para Internet - IFMS 19
20. Analisando a classe LeituraAluno
● Na classe LeituraAluno não precisamos importar
explicitamente a classe Aluno, pois as duas classes estão
no mesmo pacote
● Desta forma, a classe LeituraAluno consegue enxergar
todos os atributos/métodos da classe Aluno que sejam
protegidos ou públicos
aluno.setMatricula(textoDigitado)
aluno.getNomeCompleto()
● Note que o acesso aos atributos ou métodos da classe
Aluno por meio do objeto aluno se dá utilizando o
operador ponto (.)
Tec. em Sistemas para Internet - IFMS 21
21. Analisando a classe LeituraAluno
● Notou a forma “peculiar” que o programa lê a
data de nascimento do aluno?
● … falaremos disso mais tarde! :D
Tec. em Sistemas para Internet - IFMS 22
22. Lendo dados de vários alunos
● Para armazenar os dados de vários alunos
lidos do usuário, podemos utilizar uma matriz
● Para tanto, basta instanciar uma matriz de
objetos da classe Aluno
Tec. em Sistemas para Internet - IFMS 23
23. Lendo dados de vários alunos com a classe Aluno
Classe LeituraVariosAlunos
Tec. em Sistemas para Internet - IFMS 24
24. Analisando a classe LeituraVariosAlunos
● A instanciação de matrizes de tipos complexos se dá em dois
passos
● Primeiramente, devemos instanciar a matriz informando o
número de elementos que ela terá
Aluno[] alunos = new Aluno[10];
● Por fim, devemos instanciar cada elemento da matriz
individualmente antes de utilizá-lo
alunos[i] = new Aluno();
● Cada elemento da matriz é tratado como um objeto comum
alunos[i].setCpf(textoDigitado);
Tec. em Sistemas para Internet - IFMS 25
25. Referências
HORSTMANN, C. S.; CORNELL, G. Core Java. Oitava edição. Pearson
Prentice Hall. São Paulo, 2010.
Tec. em Sistemas para Internet - IFMS 26