25
Tecnologia em Sistemas para Internet - IFMS Aula 03 – Classes e Objetos Estruturas de Dados Prof.º Msc. Sidney Roberto de Sousa

Classes e Objetos

Embed Size (px)

Citation preview

Page 1: Classes e Objetos

Tecnologia em Sistemas para Internet - IFMS

Aula 03 – Classes e Objetos

Estruturas de DadosProf.º Msc. Sidney Roberto de Sousa

Page 2: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 2

O que veremos nesta aula?

● Classes● Uso de classes para encapsular tipos

complexos● Objetos● Matrizes de classes

Page 3: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 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

Page 4: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 4

Dados do aluno

Aluno:

Matrícula: Número

Nome Completo: Texto

Sexo: Caractere

CPF: Número

Data de Nascimento: Data

Telefone: Número

Page 5: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 5

Dados do aluno

Aluno:

Matrícula: Número

Nome Completo: Texto

Sexo: Caractere

CPF: Número

Data de Nascimento: Data

Telefone: Número

Preciso armazenar como numérico?

Page 6: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 6

Dados do aluno

Aluno:

Matrícula: Texto

Nome Completo: Texto

Sexo: Caractere

CPF: Texto

Data de Nascimento: Data

Telefone: Texto

Page 7: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 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...

Page 8: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 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!

Page 9: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 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...

Page 10: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 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

Page 11: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 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

Page 12: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 12

Classe Aluno (abaixo no blog)

Page 13: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 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

Page 14: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 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

Page 15: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 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

Page 16: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 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;

}

Page 17: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 17

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;

}

Retorna um valor do tipo String

Não retorna nenhum valor; por isto o tipo de

retorno é void

Page 18: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 18

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;

}

Note que o nome do atributo matricula conflita com o nome do parâmetro matricula do método setMatricula.

A palavra reservada this assegura que a variável sendo utilizada é o atributo matricula pertencente à classe Aluno.

Page 19: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 19

Lendo dados de um aluno com a classe Aluno

Classe LeituraAluno

(abaixo no blog)

Page 20: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 21

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 (.)

Page 21: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 22

Analisando a classe LeituraAluno

● Notou a forma “peculiar” que o programa lê a data de nascimento do aluno?

● … falaremos disso mais tarde! :D

Page 22: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 23

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

Page 23: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 24

Lendo dados de vários alunos com a classe Aluno

Classe LeituraVariosAlunos

Page 24: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 25

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 comumalunos[i].setCpf(textoDigitado);

Page 25: Classes e Objetos

Tec. em Sistemas para Internet - IFMS 26

Referências

HORSTMANN, C. S.; CORNELL, G. Core Java. Oitava edição. Pearson Prentice Hall. São Paulo, 2010.