SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
Tecnologia em Sistemas para Internet - IFMS




Aula 03 – Classes e Objetos


        Estruturas de Dados
   Prof.º Msc. Sidney Roberto de Sousa
O que veremos nesta aula?

●   Classes
●   Uso de classes para encapsular tipos
    complexos
●   Objetos
●   Matrizes de classes




                  Tec. em Sistemas para Internet - IFMS   2
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
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
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
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
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
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
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
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
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
Classe Aluno (abaixo no blog)




        Tec. em Sistemas para Internet - IFMS   12
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
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
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
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
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
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
Lendo dados de um aluno com a classe Aluno




          Classe LeituraAluno
            (abaixo no blog)




              Tec. em Sistemas para Internet - IFMS   19
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
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
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
Lendo dados de vários alunos com a classe Aluno




         Classe LeituraVariosAlunos




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

Contenu connexe

Tendances

Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
Charles Jungbeck
 

Tendances (19)

Java5
Java5Java5
Java5
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
Java2
Java2Java2
Java2
 
Java11
Java11Java11
Java11
 
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
 
Java8
Java8Java8
Java8
 
String tokenizer
String tokenizerString tokenizer
String tokenizer
 
Matrizes e Vetores para programação
Matrizes e Vetores para programaçãoMatrizes e Vetores para programação
Matrizes e Vetores para programação
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Java Básico :: Classe Vector
Java Básico :: Classe VectorJava Básico :: Classe Vector
Java Básico :: Classe Vector
 
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#
 
Java4
Java4Java4
Java4
 
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
 
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#
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Java primeiros-passos
Java primeiros-passosJava primeiros-passos
Java primeiros-passos
 

En vedette (7)

Laços de Repetição
Laços de RepetiçãoLaços de Repetição
Laços de Repetição
 
Lp3
Lp3Lp3
Lp3
 
Apostila - Linguagem de Programação I
Apostila - Linguagem de Programação IApostila - Linguagem de Programação I
Apostila - Linguagem de Programação I
 
Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De Classe
 
Curso MySQL #16 - SQL com JOIN para mais de uma tabela
Curso MySQL #16 - SQL com JOIN para mais de uma tabelaCurso MySQL #16 - SQL com JOIN para mais de uma tabela
Curso MySQL #16 - SQL com JOIN para mais de uma tabela
 
Curso de Java #07 - Operadores (Parte 1)
Curso de Java #07 - Operadores (Parte 1)Curso de Java #07 - Operadores (Parte 1)
Curso de Java #07 - Operadores (Parte 1)
 
Listas (parte 1)
Listas (parte 1)Listas (parte 1)
Listas (parte 1)
 

Similaire à Classes e Objetos

Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em Java
Cristiano Almeida
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
biandamakengo08
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
Sérgio Souza Costa
 

Similaire à Classes e Objetos (20)

POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
BSDDAY 2019 - Data Science e Artificial Intelligence usando Freebsd
BSDDAY 2019 - Data Science e Artificial Intelligence usando FreebsdBSDDAY 2019 - Data Science e Artificial Intelligence usando Freebsd
BSDDAY 2019 - Data Science e Artificial Intelligence usando Freebsd
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em Java
 
Capítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLiteCapítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLite
 
Aula de Orientação a Objetos - Herança com Java
Aula de Orientação a Objetos - Herança com JavaAula de Orientação a Objetos - Herança com Java
Aula de Orientação a Objetos - Herança com Java
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
 
ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
Aula4
Aula4Aula4
Aula4
 
Introdução a classes e objetos
Introdução a classes e objetosIntrodução a classes e objetos
Introdução a classes e objetos
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfaces
 
Java & orientação a objetos
Java & orientação a objetosJava & orientação a objetos
Java & orientação a objetos
 
Aula5
Aula5Aula5
Aula5
 
Aula 06 - Diagrama de classes
Aula 06 - Diagrama de classesAula 06 - Diagrama de classes
Aula 06 - Diagrama de classes
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
 
Programação Orientado a Objetos - Sessao 4.pptx
Programação Orientado a Objetos - Sessao 4.pptxProgramação Orientado a Objetos - Sessao 4.pptx
Programação Orientado a Objetos - Sessao 4.pptx
 
java_avancado.pdf
java_avancado.pdfjava_avancado.pdf
java_avancado.pdf
 

Plus de Sidney Roberto

Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Sidney Roberto
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Sidney Roberto
 
Estrutura de Programas
Estrutura de ProgramasEstrutura de Programas
Estrutura de Programas
Sidney Roberto
 
O que é Interação Humano-Computador?
O que é Interação Humano-Computador?O que é Interação Humano-Computador?
O que é Interação Humano-Computador?
Sidney Roberto
 
Representação e Manipulação de Informações
Representação e Manipulação de InformaçõesRepresentação e Manipulação de Informações
Representação e Manipulação de Informações
Sidney Roberto
 

Plus de Sidney Roberto (20)

Precisamos falar sobre MERN stack
Precisamos falar sobre MERN stackPrecisamos falar sobre MERN stack
Precisamos falar sobre MERN stack
 
Personagens negros na cultura nerd
Personagens negros na cultura nerdPersonagens negros na cultura nerd
Personagens negros na cultura nerd
 
Mantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDBMantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDB
 
Regulamento da batalha campal do DCN IV
Regulamento da batalha campal do DCN IVRegulamento da batalha campal do DCN IV
Regulamento da batalha campal do DCN IV
 
Regulamento dos concursos de cosplay e cospobre do DCN IV
Regulamento dos concursos de cosplay e cospobre do DCN IVRegulamento dos concursos de cosplay e cospobre do DCN IV
Regulamento dos concursos de cosplay e cospobre do DCN IV
 
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQRegulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
 
Tecnologias e Mercado de Trabalho
Tecnologias e Mercado de TrabalhoTecnologias e Mercado de Trabalho
Tecnologias e Mercado de Trabalho
 
Introdução à Programação de Computadores com Python
Introdução à Programação de Computadores com PythonIntrodução à Programação de Computadores com Python
Introdução à Programação de Computadores com Python
 
Palestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
Palestra de boas vindas aos estudantes do curso TSI do IFMS AquidauanaPalestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
Palestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
 
Web Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaWeb Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciência
 
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQRegulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
 
Tutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para AndroidTutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para Android
 
Minha opinião sobre o sistema educacional de base brasileiro
Minha opinião sobre o sistema educacional de base brasileiroMinha opinião sobre o sistema educacional de base brasileiro
Minha opinião sobre o sistema educacional de base brasileiro
 
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
 
Fatores Humanos
Fatores HumanosFatores Humanos
Fatores Humanos
 
Compilando em java
Compilando em javaCompilando em java
Compilando em java
 
Estrutura de Programas
Estrutura de ProgramasEstrutura de Programas
Estrutura de Programas
 
O que é Interação Humano-Computador?
O que é Interação Humano-Computador?O que é Interação Humano-Computador?
O que é Interação Humano-Computador?
 
Representação e Manipulação de Informações
Representação e Manipulação de InformaçõesRepresentação e Manipulação de Informações
Representação e Manipulação de Informações
 

Dernier

Dernier (9)

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Classes e Objetos

  • 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
  • 12. Classe Aluno (abaixo no blog) Tec. em Sistemas para Internet - IFMS 12
  • 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