conceitos avançados da linguagem de programação java · programação java. encapsulamento...
TRANSCRIPT
![Page 1: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/1.jpg)
Prof. Gilberto B. OliveiraProf. Gilberto B. Oliveira
Análise de ProgramaçãoAnálise de Programação
Conceitos Avançados da Linguagem de Conceitos Avançados da Linguagem de Programação JavaProgramação Java
![Page 2: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/2.jpg)
EncapsulamentoEncapsulamento
Proteger o dado dentro de uma classe (capsula Proteger o dado dentro de uma classe (capsula segura)segura)Facilita o uso da classe por outros programadoresFacilita o uso da classe por outros programadoresProtege certos dados contra alterações indevidasProtege certos dados contra alterações indevidas
Modificadores mais comuns aplicados a Modificadores mais comuns aplicados a métodos e atributos:métodos e atributos:publicpublic
Qualquer classe de qualquer lugar pode acessar;Qualquer classe de qualquer lugar pode acessar;
privateprivateNinguém pode acessar, exceto a própria classe.Ninguém pode acessar, exceto a própria classe.
![Page 3: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/3.jpg)
ModificadoresModificadores
Modificador Classe Pacote Sub Classe Livreprivate Xdefault X Xprotected X X Xpublic X X X X
Interface:Interface:Métodos e variáveis públicasMétodos e variáveis públicas
ImplementaçãoImplementaçãoManeira como a classe executa uma operaçãoManeira como a classe executa uma operação
““Boas práticas de POO permitem alterar a implementação Boas práticas de POO permitem alterar a implementação sem alterar a interface das classes.”sem alterar a interface das classes.”
![Page 4: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/4.jpg)
Métodos get e setMétodos get e set
A implementação de métodos usados para A implementação de métodos usados para proteger atributos privados é comum em POOproteger atributos privados é comum em POO
Método get()Método get()Permite criar uma saída mais adequada ao dado Permite criar uma saída mais adequada ao dado
armazenado.armazenado.
Método set(tipo arg)Método set(tipo arg)Permite controlar de maneira mais eficaz o dado a Permite controlar de maneira mais eficaz o dado a
ser armazenado no atributo antes de atribuí-loser armazenado no atributo antes de atribuí-lo
![Page 5: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/5.jpg)
Implementação de classe Implementação de classe não encapsulada não encapsulada
Classe Funcionário:Classe Funcionário:public class Funcionario {public class Funcionario {
public String nome;public String nome;
public double salario;public double salario;
public void identificarFuncionario(){public void identificarFuncionario(){
System.out.println("Nome: " + nome);System.out.println("Nome: " + nome);
System.out.println("Salário: " + salario);System.out.println("Salário: " + salario);
}}
}}
![Page 6: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/6.jpg)
Quebrando as regras de Quebrando as regras de negócionegócio
Sem o encapsulamento outra classe acessa o Sem o encapsulamento outra classe acessa o salário da classe funcionário e atribui um salário da classe funcionário e atribui um salário menor do que o salário mínimo atual no salário menor do que o salário mínimo atual no Brasil:Brasil:
public class TesteFuncionario {public class TesteFuncionario {
public static void main(String[] args){public static void main(String[] args){Funcionario f1 = new Funcionario();Funcionario f1 = new Funcionario();f1.salario = 450.00;f1.salario = 450.00;
}}
}}
![Page 7: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/7.jpg)
Método GetMétodo Get
O método get gera uma saída mais inteligível para O método get gera uma saída mais inteligível para o usuário:o usuário:
..
. .
public public StringString getNome(){ getNome(){
if(this.nome.charAt(this.nome.length() - 1) == 'a'){if(this.nome.charAt(this.nome.length() - 1) == 'a'){
return "Sra. " + this.nome;return "Sra. " + this.nome;
} else {} else {
return "Sr. " + this.nome;return "Sr. " + this.nome;
}}
}}
..
..
![Page 8: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/8.jpg)
Método Set(arg)Método Set(arg)
O método set permite um tratamento mais eficaz:O método set permite um tratamento mais eficaz:..
. .
public public voidvoid setSalario( setSalario(double salariodouble salario){){
if(salario < 510){if(salario < 510){
System.out.println(“Salário inapropriado!”);System.out.println(“Salário inapropriado!”);
} else {} else {
this.salariothis.salario == salario; salario;
}}
}}
..
..
![Page 9: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/9.jpg)
Método ConstrutorMétodo Construtor
São invocados automaticamente ao instanciar São invocados automaticamente ao instanciar objetos;objetos;
Normalmente são usados para inicializar atributos. Normalmente são usados para inicializar atributos. Sintaxe:Sintaxe:
[modificador] class NomeClasse {[modificador] class NomeClasse {
[modificador] NomeClasse([modificador] NomeClasse([argumentos][argumentos]){){
bloco_codigo;bloco_codigo;
}}
}}
![Page 10: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/10.jpg)
Exemplo:Exemplo:
Método construtor simples:Método construtor simples:..
..
public Funcionario() {public Funcionario() {
this.setNome("Funcionario");this.setNome("Funcionario");
this.setSalario(510.0);this.setSalario(510.0);
}}
..
O método construtor pode ser sobrecarregado O método construtor pode ser sobrecarregado permitindo a inicialização de várias formas.permitindo a inicialização de várias formas.
![Page 11: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/11.jpg)
Exemplo2:Exemplo2:
Método construtor sobrecarregado:Método construtor sobrecarregado: public Funcionario() {public Funcionario() {
this.setNome("Funcionario");this.setNome("Funcionario");
this.setSalario(510.0);this.setSalario(510.0);
}}
public Funcionario(String nome){public Funcionario(String nome){
this.setNome(nome);this.setNome(nome);
this.setSalario(510.0);this.setSalario(510.0);
}}
public Funcionario(double salario){public Funcionario(double salario){
this.setSalario(salario);this.setSalario(salario);
this.setNome("Funcionario");this.setNome("Funcionario");
}}
![Page 12: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/12.jpg)
Declaração de vetores Declaração de vetores de uma dimensãode uma dimensão
Sintaxe:Sintaxe:tipo [] nomeVetor;tipo [] nomeVetor;
Exemplos com tipos primitivos:Exemplos com tipos primitivos:char [] codCor;char [] codCor;
double [] preco;double [] preco;
Exemplos com tipos objetos:Exemplos com tipos objetos:Camisa [] minhaCamisa;Camisa [] minhaCamisa;
Date [] agenda;Date [] agenda;
![Page 13: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/13.jpg)
Instancia de vetores de Instancia de vetores de uma dimensão:uma dimensão:
Sintaxe:Sintaxe:nomeVetor = new tipo [comprimento];nomeVetor = new tipo [comprimento];
Exemplos com tipos primitivos:Exemplos com tipos primitivos:codCor = new char[5];codCor = new char[5];
preco = new double[3];preco = new double[3];
Exemplos com tipos objetos:Exemplos com tipos objetos:minhaCamisa = new Camisa[2];minhaCamisa = new Camisa[2];
agenda = new Date[7];agenda = new Date[7];
![Page 14: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/14.jpg)
Inicializando vetores Inicializando vetores de uma dimensãode uma dimensão
Sintaxe:Sintaxe:nomeVetor[indice] = valor;nomeVetor[indice] = valor;
Exemplo com tipos primitivosExemplo com tipos primitivoscodCor[0] = 'P';codCor[0] = 'P';
codCor[1] = 'V';codCor[1] = 'V';
..
..
..
codCor[4] = 'A';codCor[4] = 'A';
![Page 15: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/15.jpg)
Inicializando vetores Inicializando vetores de uma dimensãode uma dimensão
Exemplo com tipos objeto:Exemplo com tipos objeto:minhaCamisa[0] = new Camisa();minhaCamisa[0] = new Camisa();
..
..
minhaCamisa[1] = new Camisa(“T-Shirt”);minhaCamisa[1] = new Camisa(“T-Shirt”);
Outro exemplo:Outro exemplo:agenda[0] = new Date();agenda[0] = new Date();
agenda[1] = new Date(2010, 05, 18);agenda[1] = new Date(2010, 05, 18);
..
..
agenda[6] = new Date(“2010/11/21”);agenda[6] = new Date(“2010/11/21”);
![Page 16: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/16.jpg)
Declarar, instanciar e Declarar, instanciar e inicializarinicializar
Sintaxe:Sintaxe:tipo [] nomeVetor = {item0, ..., itemN};tipo [] nomeVetor = {item0, ..., itemN};
Exemplo com tipos primitivos:Exemplo com tipos primitivos:double [] preco = {12.5, 13.5, 13.0};double [] preco = {12.5, 13.5, 13.0};
char [] codCor = {'A', 'P', 'V', 'B', 'R'};char [] codCor = {'A', 'P', 'V', 'B', 'R'};
Exemplo com tipos objetos:Exemplo com tipos objetos:Camisa [] minhaCamisa = {new Camisa(), new Camisa [] minhaCamisa = {new Camisa(), new Camisa(“T-Shirt”), new Camisa(“Polo”, 'M')};Camisa(“T-Shirt”), new Camisa(“Polo”, 'M')};
Date [] agenda = {new Date(“2010/07/10”), new Date [] agenda = {new Date(“2010/07/10”), new Date(2010, 03, 21), new Date()};Date(2010, 03, 21), new Date()};
![Page 17: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/17.jpg)
Acessando valores Acessando valores contidos em vetorescontidos em vetores
Inserindo um valor em uma posição do vetor:Inserindo um valor em uma posição do vetor:codCor[3] = 'W';codCor[3] = 'W';
agenda[0] = new Date(“2010/07/30”);agenda[0] = new Date(“2010/07/30”);
preco[2] = 24.5;preco[2] = 24.5;
minhaCamisa = new Camisa(“Social”, 'G');minhaCamisa = new Camisa(“Social”, 'G');
Retirando valores de uma posição do vetor:Retirando valores de uma posição do vetor:Date d = agenda[0];Date d = agenda[0];
char c = codCor[3];char c = codCor[3];
double p = preco[1];double p = preco[1];
Camisa c1 = minhaCamisa[2];Camisa c1 = minhaCamisa[2];
![Page 18: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/18.jpg)
Comportamento da Comportamento da Memória (primitivos)Memória (primitivos)
AleatóriaHeap
char [] codCor = {'P', 'B', 'V'};char tamanho = 'M';
PilhaStack
0@B25X32
M
P
B
V
![Page 19: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/19.jpg)
Comportamento da Comportamento da MemóriaMemória
AleatóriaHeap
Camisa [] suaCamisa = {new Camisa(“Social”), new Camisa('P'), new Camisa(“Polo”, 'M')};
Camisa minhaCamisa = new Camisa();
T-Shirt
B
M
Polo
B
G
PilhaStack
0@B25X32
0@X56622
T-Shirt
P
M
Social
B
M
0@B12345
0@D23456
0@F34567
![Page 20: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/20.jpg)
Atribuição de valores Atribuição de valores através de laçoatravés de laço
Exemplo:Exemplo:int [] meuVetor;int [] meuVetor;
meuVetor = new int[100];meuVetor = new int[100];
for(int i = 0; i < meuVetor.for(int i = 0; i < meuVetor.lengthlength; i++){; i++){
meuVetor[i] = i;meuVetor[i] = i;
}}
![Page 21: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/21.jpg)
Laço for melhoradoLaço for melhorado
ExemploExemplopublic class ExemploFor {public class ExemploFor {
public static void main(String[] args) {public static void main(String[] args) {int [] int [] numnum = {1, 3, 5, 7, 9, 11, 13, 15, = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};17, 19};
int soma = 0;int soma = 0;for(int item : for(int item : numnum) {) {
soma += item;soma += item;}}System.out.println(“Soma: ” + soma);System.out.println(“Soma: ” + soma);
}}
}}
![Page 22: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/22.jpg)
VarargsVarargs
Criação de métodos que recebem uma quantidade Criação de métodos que recebem uma quantidade de argumentos variada.de argumentos variada.public class MensagemVar public class MensagemVar {{
public static void minhaMensagem(public static void minhaMensagem(String... nomeString... nome)){{
for(String lista : nome) for(String lista : nome) {{
System.out.println(lista);System.out.println(lista);
}}
}}
public static void main(String [] args) public static void main(String [] args) {{
minhaMensagem(args);minhaMensagem(args);
}}
}}
![Page 23: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/23.jpg)
Vetores Vetores multidimensionaismultidimensionais
Sintaxe de criação:Sintaxe de criação:tipo [] [] nomeVetor;tipo [] [] nomeVetor;
Exemplo:Exemplo:int [] [] notaBim;int [] [] notaBim;
Sintaxe de instância:Sintaxe de instância:nomeVetor = new int [numVetores] [comp];nomeVetor = new int [numVetores] [comp];
ExemploExemplonotaBim = int[5][4];notaBim = int[5][4];
![Page 24: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/24.jpg)
Exemplo de vetor Exemplo de vetor multidimensionalmultidimensional
1.° Bim 2.° Bim 3.° Bim 4.° BimJoãoJoséMariaJoanaJoaquina
![Page 25: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/25.jpg)
AtribuiçãoAtribuição
Exemplo de atribuição de valores às posições Exemplo de atribuição de valores às posições dos vetores:dos vetores:notaBim[0] [0] = 5;notaBim[0] [0] = 5;
notaBim[0] [1] = 7;notaBim[0] [1] = 7;
notaBim[0] [2] = 9;notaBim[0] [2] = 9;
notaBim[1] [3] = 5;notaBim[1] [3] = 5;
notaBim[2] [2] = 10;notaBim[2] [2] = 10;
notaBim[3] [0] = 7;notaBim[3] [0] = 7;
![Page 26: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/26.jpg)
Atribuição em vetor Atribuição em vetor multidimensionalmultidimensional
1.° Bim 2.° Bim 3.° Bim 4.° BimJoão 5 7 9José 5Maria 10Joana 7Joaquina
![Page 27: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/27.jpg)
Herança (inheritance)Herança (inheritance)
Sintaxe para a criação de subClasses:Sintaxe para a criação de subClasses:[modificado] class NomeSubClasse extends [modificado] class NomeSubClasse extends NomeSuperClasseNomeSuperClasse
Permite criar classes mais especializadas a partir de Permite criar classes mais especializadas a partir de classes generalistas.classes generalistas.
Classes generalistas são superClasses e classes Classes generalistas são superClasses e classes especializadas subClassesespecializadas subClasses
Classes generalistas carregam atributos e métodos Classes generalistas carregam atributos e métodos que são herdados pela(s) subClasse(s)que são herdados pela(s) subClasse(s)Quanto mais abstratas forem as classes de um sistema, Quanto mais abstratas forem as classes de um sistema,
mais abrangente ele será, portanto, melhor construído.mais abrangente ele será, portanto, melhor construído.
![Page 28: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/28.jpg)
Pacotes da API JavaPacotes da API Java
API Application Programming InterfaceAPI Application Programming InterfaceAbstract Windowing Toolkit: Usada para construir Abstract Windowing Toolkit: Usada para construir
e gerenciar uma GUI (Graphic User Interface):e gerenciar uma GUI (Graphic User Interface):java.awt.*;java.awt.*;
Comportamentos específicos de AppletComportamentos específicos de Appletjava.applet.*;java.applet.*;
Permite executar operações relacionadas a redePermite executar operações relacionadas a redejava.net.*;java.net.*;
Pacote com classes utilitárias, permite gerar Pacote com classes utilitárias, permite gerar números randômicos, data e hora, etc.números randômicos, data e hora, etc.java.util.*;java.util.*;
![Page 29: Conceitos Avançados da Linguagem de Programação Java · Programação Java. Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros](https://reader031.vdocuments.pub/reader031/viewer/2022020305/5c01a8ff09d3f279018d02e6/html5/thumbnails/29.jpg)
Importando pacotes:Importando pacotes:
Usando uma declaração Usando uma declaração importimport
import java.awt.*;import java.awt.*;
public class MeuBotao extends Button {public class MeuBotao extends Button {
//Implementação da classe//Implementação da classe
}}
Usando o nome qualificador da classe completoUsando o nome qualificador da classe completopublic class MeuBotao extends java.awt.Button {public class MeuBotao extends java.awt.Button {
//implementação da classe//implementação da classe
}}