Curso de Java Desktop Cícero Lima Costa
Tópicos abordados no curso Introdução a programação Java. Uso de formulários Java. Manipulação de arquivos. Programação orientada ao objeto (POO) Criação de banco de dados. Acesso a banco de dados.
Java O que é Bytecodes Máquina Virtual
Programação Variáveis:  Uma variável é simplesmente um espaço vago, reservado e rotulado para armazenar dados. Local:  Acessada apenas pelo método ao qual pertence. Global:  Acessada por todos o métodos  de uma classe.
Tipos de Variáveis Int:  recebe numero do tipo inteiro . Ex: int nroInteiro = 5; Float:  recebe numeros do tipo ponto flutuante. Ex: float nroFloat1 = 5.00; ou float nroFloat2 = 5.25; String:  recebe seqüência de caracteres. Ex: String nome = “Cícero”; ou String letra = “C”; ou String nome2 = “C3c2r4”; Boolean:  Pode assumir o valor  true  ou o valor  false
Vetores Declarar vetor int vetNro[]; float vetNro2[]; String vetLetras[]; Definir tamanho do vetor vetNro = new int[3]; vetNro2 = new float[3]; vetLetras = new String[3]; Armazenar elementos no vetor vetNro[0] = 1; vetNro2[2] = 7; vetLetras[1] = “C”; Atribuição direta float nota[] = { 7.8, 8.4, 4.2, 1.8, 6.4 };
Classes Local onde reside as variáveis e os métodos Ex: public class Calculadora { //variáveis int total; //Métodos public void somar() { //Variáveis int nro1 = 5; int nro2 = 2; //Adição total = nro1 + nro2; } }
Condições If e Else if (x == 0)   {        System.out.println(“teste if!”);      } else  {   System.out.println(“O valor de x é = “+ x);  }       
Condições Switch switch(op)  {        case 1: System.out.println(“op = "+op);           break;        case 2: System.out.println("op= "+op);           break;       default: System.out.println("default: op nao esta no limite1..2");      }
Laços for for(int x = 0; x < 10; x++) {   System.out.println(&quot; &quot; + x);  } while int x = 5; while(x > 0) { System.out.println(&quot; &quot; + x);  x--; }
Apresentação pratica de um projeto Java Classe Principal do projeto (Main) Alguns comandos
Exercício Mostrar o resultado da soma de dois números usando a classe e o método main. Obs: para mostrar o resultado será utilizado o seguinte comando: System.out.println(conteudo a ser mostrado); Somar todos os numeros contidos em um vetor.
Get e Set Get: resgata valor. Set: atribui valor.
Utilizando algumas funções do Java Capturar valor de um campo do formulario para uma variável. ex: String valorCampo =  nomeCampo .getText(); obs: todo valor resgatado de um campo de texto é  uma  string, caso queira usa-lo com outro  tipo, este deve  ser transformado. Essa  transformação poderá ser observada no próximo  slide.
Conversão de tipo de variável int nroConvertido = Integer.parseInt(“3”); float nroConvertido2 = Float.parseFloat(“2.89”);
Utilizando algumas funções do Java Atribui o valor de uma variável para o campo no formulário. ex: nomeCampo .setText(“teste!!!”) Limpa espaço em branco no começo e final de uma string. String texto = “  teste  ”; texto.trim(); // a função trim remove os espaço mencionados nesse tópico.
Utilizando algumas funções do Java Captura o tamanho de uma string. String teste = “abc”; int tamanhoString = teste. length(); // valor presente na variável tamanho string será 3. Captura parte da string entre o intervalo fornecido. &quot;hamburger&quot;.substring(4, 8) returns &quot;urge&quot; &quot;smiles&quot;.substring(1, 5) returns &quot;mile&quot;
Utilização de métodos Método que não recebe parâmetro. public void confirma() { System.out.println(“A solicitação foi confirmada!”); } Método que recebe parâmetro. public void soma(int valor1, int valor2) { int total; total = valor1 + valor2; }
Utilização de métodos Métodos que não retornam valor. public void confirma() { System.out.println(“A solicitação foi confirmada!”); } Métodos que retornam valor. public int soma(int valor1, int valor2) { int total; total = valor1 + valor2; return total; }
Apresentação pratica de um projeto Java Pacotes JFrame (formularios/telas) Campos Botões Ações Classes
Exercício Criar um formulário com um campo para digitar o nome, um botão para executar a ação e um rotulo para receber um texto. Ao clicar no botão o nome digitado deve aparecer na tela Criar um Jframe que receba dois números execute a soma desses números e mostre o resultado na tela. Desafio: Criar um Jframe que receba um numero e através desses números seu nome seja apresentado. Conforme exemplo apresentado.
Arquivos Armazenar configuração; Gravar log de sistema;
Arquivos em Java Criar o arquivo // Instancia e inicializa um arquivo FileWriter variavelArquivo = new FileWriter(url,condição); //Escreve no arquivo instanciado variavelArquivo.write(“Esse texto deve aparecer no arquivo”); //Valida o arquivo no caminho determinado variavelArquivo.close();
Arquivos em Java Painel para o usuário definir o local onde armazena o arquivo   File arquivo; JFileChooser arq= new JFileChooser(); int Result=arq.showSaveDialog(this); if(Result==JFileChooser.APPROVE_OPTION) { arquivo = arq.getSelectedFile(); //Classe para Arquivos FileWriter inArq = new FileWriter(arquivo.getPath()); inArq.write(jtaOperacao.getText()); // lê o arquivo inArq.close(); }
Orientação á Objeto O que é A Orientação à Objetos modela o mundo real com classes e instâncias. Cada classe é a estrutura de uma variável, ou seja, um tipo de dado. Nela, são declarados atributos e métodos que poderão ser executados ou acessados nas instâncias da mesma classe. As classes possuem uma função muito importante na modelagem orientada a objetos, elas dividem o problema, modularizam a aplicação e baixam o nível de acoplamento do software. Variáveis de uma classe são chamadas de instâncias de classe. Por exemplo: Se existe uma classe Pessoa existe a instância (variável) pessoa que é do tipo Pessoa. Um Objeto, ou instância, é uma entidade cujas informações podem incluir desde suas características até suas atividades, ou seja, uma abstração de um domínio de um problema.
Orientação á Objeto public class Pessoa { private String nome; private String idade; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getIdade() { return idade; } public void setIdade(String idade) { this.idade = idade; } }
Orientação á Objeto Atributos Acessibilidade Métodos de acesso Encapsulamento Herança
Arquivos em Java File File file = new File(&quot;/&quot;,url);//inicializa arquivo //cria diretórios para armazenar o arquivo file.mkdirs(); //verifica existência de arquivo file.exists();
Arquivos em Java Properties Properties props = new Properties(); FileOutputStream fos = new FileOutputStream(urlFile); props.setProperty(propriedade, valor); props.store(fos, &quot;Configurações do properties&quot;); fos.close();
Bibliotecas Configurações Importações
Apresentação de arquivo em Java Escrita Leitura de properties
Exercícios Criar e escrever um arquivo txt Criar e escrever um arquivo properties Resgatar valores listados em um arquivo properties
Modelagem  Modelo para descrever a estruturação dos dados armazenados Não fornece informações sobre as funções que manipulam os dados
Conceitos importantes da modelagem Diagrama de Entidade e Relacionamento(DER) Entidade Atributo Relacionamento entre entidades Instância da entidade
Entidade Coleção ou conjunto de objetos (concretos ou abstratos) do mundo real, cujas informações são de interesse para o sistema Necessidade de uma entidade: quando a existência de uma informação é essencial para o sistema.
Atributos Descrição das qualidades dos objetos Descrição - elementos de dados cujos valores qualificam o objeto Identificação - elementos de dados que distinguem uma instância de outra Domínio: conjunto de valores válidos
Relacionamento Conjunto de conexões entre entidades Relacionamento: 1 para 1 - indica que as tabelas têm relação unívoca entre si. Você escolhe qual tabela vai receber a chave estrangeira  Relacionamento: N para N (muitos para muitos) Ex: um venda pode ter muitos produtos e um produto pode estar em várias vendas Relacionamento: 1 para N (um para muitos) Ex: uma pessoa pode ter vários e-mail, mas  um e-mail é apenas de uma pessoa
Chaves Chave – primaria ( PK - Primary Key  ) Simples: Quando a chave primária é simples, ou seja, é formada por um único campo da tabela, esse campo não pode ter dois ou mais registros de mesmo valor, e também não pode conter nenhum registro nulo.  Composta:Se a chave primária é composta, ou seja, formada por mais de um campo, os valores de cada campo podem se repetir, mas não a combinação desses valores.
Chaves Chave – estrangeira ( FK - Foreign Key  ) é a chave formada através de um relacionamento com a chave primária de outra tabela. Define um relacionamento entre as tabelas e pode ocorrer repetidas vezes. Caso a chave primária seja composta na origem, a chave estrangeira também o será.  Chave – candidata consiste em um atributo ou grupo de atributos cujo valor identifica unicamente cada linha em uma relação e para o qual nenhum dos atributos pode ser removido sem destruir a identificação única.
Instância Cada ocorrência específica da entidade Não tem representação no modelo E-R
ISA (“is a” – é uma) Define Hierarquia – Se declarar A  ISA  B, cada entidade A é também considerada como uma entidade B. Identificante A chave estrangeira criada na tabela apropriada será definida, também, como chave primaria  Não – Identificante Na opção não-identificada, a chave estrangeira não será definida como chave primária  Tipos de Relacionamento
Banco de Dados Os projetos Lógico e Funcional do Banco de Dados devem ser capazes de prever o volume de informações armazenadas a curto, médio e  longo prazo.  Os projetos devem ter uma grande capacidade de adaptação para os três casos mencionados;  Deve-se ter generalidade e alto grau de abstração de dados
Definição Base de Dados: Coleção de dados relacionados. Dados: Valor de um campo armazenado, matéria-prima para obtenção de informação. Informação: Dados compilados e processados de acordo com solicitação de consultas e análises.
Ações no banco de dados Insert (Inserção) Insere os dados nas tabelas do banco de dados Insert into  nomeTabela  ( campos ) values ( valores de cada campo )  Ex: Insert into clientes (codcli, nome) values (1,'Zé');  Update(Atualização) Atualiza os dados nas tabelas do banco de dados update  nomeTabela   set  atributo1  =  novoValor ,  atributo2  =  novoValor , … Ex:  update clientes set nome = ‘Tião';    todos os campos nome da tabela clientes será substituido para ‘Tião’
Ações no banco de dados Delete(Exclusão) Deleta os dados nas tabelas do banco de dados delete from  nomeTabela delete from clientes    todos os registros salvos na tabela clientes serão excluídos Select(Seleção) Seleção dos dados nas tabelas do banco de dados select  atributos  from  nomeTabela     Todos os registros salvos na tabela clientes serão selecionados Ex:  Select  nome, idade  from clientes   Select * from clientes    seleciona todos os atributos da  tabela clientes
Condição WHERE Determina uma condição para buscar, apagar e alterar os dados nas tabelas do banco de dados Ex:  SELECT nome FROM clientes  WHERE  codigo = 1;     A condição determina que será buscado apenas o nome do cliente de código igual a 1. DELETE FROM clientes  WHERE  codigo = 1;     A condição determina que serão apagados apenas os registros referentes ao cliente de código igual a 1. UPDATE clientes SET nome = ‘C'  WHERE  codigo =2;     A  condição determina que será alterado apenas o nome do cliente de código igual a 2.
Junções SELECT nome, rua FROM pessoa, endereco WHERE pessoa.codpessoa = endereco.codpessoa As junções servem para fazer o cruzamento entre informações, combinando registros e testando desigualdades entre tabelas que se relacionam. Na consulta os registros de endereço e pessoa são relacionados afim de determinar qual o endereço de cada pessoa.
Java e Banco de Dados Driver para conexão Responsável por conectar a aplicação com a base de dados Método para conexão Onde determina qual driver será utilizada e qual banco será acessado. Administração dos dados na aplicação Os dados resultantes de uma consulta no banco de dados são salvos em um resultset na aplicação pra que sejam manipulados.
Prática Configurações Utilização dos conceitos apresentados
Contato [email_address]

Java Desktop

  • 1.
    Curso de JavaDesktop Cícero Lima Costa
  • 2.
    Tópicos abordados nocurso Introdução a programação Java. Uso de formulários Java. Manipulação de arquivos. Programação orientada ao objeto (POO) Criação de banco de dados. Acesso a banco de dados.
  • 3.
    Java O queé Bytecodes Máquina Virtual
  • 4.
    Programação Variáveis: Uma variável é simplesmente um espaço vago, reservado e rotulado para armazenar dados. Local: Acessada apenas pelo método ao qual pertence. Global: Acessada por todos o métodos de uma classe.
  • 5.
    Tipos de VariáveisInt: recebe numero do tipo inteiro . Ex: int nroInteiro = 5; Float: recebe numeros do tipo ponto flutuante. Ex: float nroFloat1 = 5.00; ou float nroFloat2 = 5.25; String: recebe seqüência de caracteres. Ex: String nome = “Cícero”; ou String letra = “C”; ou String nome2 = “C3c2r4”; Boolean: Pode assumir o valor true ou o valor false
  • 6.
    Vetores Declarar vetorint vetNro[]; float vetNro2[]; String vetLetras[]; Definir tamanho do vetor vetNro = new int[3]; vetNro2 = new float[3]; vetLetras = new String[3]; Armazenar elementos no vetor vetNro[0] = 1; vetNro2[2] = 7; vetLetras[1] = “C”; Atribuição direta float nota[] = { 7.8, 8.4, 4.2, 1.8, 6.4 };
  • 7.
    Classes Local ondereside as variáveis e os métodos Ex: public class Calculadora { //variáveis int total; //Métodos public void somar() { //Variáveis int nro1 = 5; int nro2 = 2; //Adição total = nro1 + nro2; } }
  • 8.
    Condições If eElse if (x == 0)   {      System.out.println(“teste if!”);     } else  { System.out.println(“O valor de x é = “+ x); }       
  • 9.
    Condições Switch switch(op) {       case 1: System.out.println(“op = &quot;+op);          break;       case 2: System.out.println(&quot;op= &quot;+op);          break;      default: System.out.println(&quot;default: op nao esta no limite1..2&quot;);     }
  • 10.
    Laços for for(intx = 0; x < 10; x++) { System.out.println(&quot; &quot; + x); } while int x = 5; while(x > 0) { System.out.println(&quot; &quot; + x); x--; }
  • 11.
    Apresentação pratica deum projeto Java Classe Principal do projeto (Main) Alguns comandos
  • 12.
    Exercício Mostrar oresultado da soma de dois números usando a classe e o método main. Obs: para mostrar o resultado será utilizado o seguinte comando: System.out.println(conteudo a ser mostrado); Somar todos os numeros contidos em um vetor.
  • 13.
    Get e SetGet: resgata valor. Set: atribui valor.
  • 14.
    Utilizando algumas funçõesdo Java Capturar valor de um campo do formulario para uma variável. ex: String valorCampo = nomeCampo .getText(); obs: todo valor resgatado de um campo de texto é uma string, caso queira usa-lo com outro tipo, este deve ser transformado. Essa transformação poderá ser observada no próximo slide.
  • 15.
    Conversão de tipode variável int nroConvertido = Integer.parseInt(“3”); float nroConvertido2 = Float.parseFloat(“2.89”);
  • 16.
    Utilizando algumas funçõesdo Java Atribui o valor de uma variável para o campo no formulário. ex: nomeCampo .setText(“teste!!!”) Limpa espaço em branco no começo e final de uma string. String texto = “ teste ”; texto.trim(); // a função trim remove os espaço mencionados nesse tópico.
  • 17.
    Utilizando algumas funçõesdo Java Captura o tamanho de uma string. String teste = “abc”; int tamanhoString = teste. length(); // valor presente na variável tamanho string será 3. Captura parte da string entre o intervalo fornecido. &quot;hamburger&quot;.substring(4, 8) returns &quot;urge&quot; &quot;smiles&quot;.substring(1, 5) returns &quot;mile&quot;
  • 18.
    Utilização de métodosMétodo que não recebe parâmetro. public void confirma() { System.out.println(“A solicitação foi confirmada!”); } Método que recebe parâmetro. public void soma(int valor1, int valor2) { int total; total = valor1 + valor2; }
  • 19.
    Utilização de métodosMétodos que não retornam valor. public void confirma() { System.out.println(“A solicitação foi confirmada!”); } Métodos que retornam valor. public int soma(int valor1, int valor2) { int total; total = valor1 + valor2; return total; }
  • 20.
    Apresentação pratica deum projeto Java Pacotes JFrame (formularios/telas) Campos Botões Ações Classes
  • 21.
    Exercício Criar umformulário com um campo para digitar o nome, um botão para executar a ação e um rotulo para receber um texto. Ao clicar no botão o nome digitado deve aparecer na tela Criar um Jframe que receba dois números execute a soma desses números e mostre o resultado na tela. Desafio: Criar um Jframe que receba um numero e através desses números seu nome seja apresentado. Conforme exemplo apresentado.
  • 22.
    Arquivos Armazenar configuração;Gravar log de sistema;
  • 23.
    Arquivos em JavaCriar o arquivo // Instancia e inicializa um arquivo FileWriter variavelArquivo = new FileWriter(url,condição); //Escreve no arquivo instanciado variavelArquivo.write(“Esse texto deve aparecer no arquivo”); //Valida o arquivo no caminho determinado variavelArquivo.close();
  • 24.
    Arquivos em JavaPainel para o usuário definir o local onde armazena o arquivo File arquivo; JFileChooser arq= new JFileChooser(); int Result=arq.showSaveDialog(this); if(Result==JFileChooser.APPROVE_OPTION) { arquivo = arq.getSelectedFile(); //Classe para Arquivos FileWriter inArq = new FileWriter(arquivo.getPath()); inArq.write(jtaOperacao.getText()); // lê o arquivo inArq.close(); }
  • 25.
    Orientação á ObjetoO que é A Orientação à Objetos modela o mundo real com classes e instâncias. Cada classe é a estrutura de uma variável, ou seja, um tipo de dado. Nela, são declarados atributos e métodos que poderão ser executados ou acessados nas instâncias da mesma classe. As classes possuem uma função muito importante na modelagem orientada a objetos, elas dividem o problema, modularizam a aplicação e baixam o nível de acoplamento do software. Variáveis de uma classe são chamadas de instâncias de classe. Por exemplo: Se existe uma classe Pessoa existe a instância (variável) pessoa que é do tipo Pessoa. Um Objeto, ou instância, é uma entidade cujas informações podem incluir desde suas características até suas atividades, ou seja, uma abstração de um domínio de um problema.
  • 26.
    Orientação á Objetopublic class Pessoa { private String nome; private String idade; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getIdade() { return idade; } public void setIdade(String idade) { this.idade = idade; } }
  • 27.
    Orientação á ObjetoAtributos Acessibilidade Métodos de acesso Encapsulamento Herança
  • 28.
    Arquivos em JavaFile File file = new File(&quot;/&quot;,url);//inicializa arquivo //cria diretórios para armazenar o arquivo file.mkdirs(); //verifica existência de arquivo file.exists();
  • 29.
    Arquivos em JavaProperties Properties props = new Properties(); FileOutputStream fos = new FileOutputStream(urlFile); props.setProperty(propriedade, valor); props.store(fos, &quot;Configurações do properties&quot;); fos.close();
  • 30.
  • 31.
    Apresentação de arquivoem Java Escrita Leitura de properties
  • 32.
    Exercícios Criar eescrever um arquivo txt Criar e escrever um arquivo properties Resgatar valores listados em um arquivo properties
  • 33.
    Modelagem Modelopara descrever a estruturação dos dados armazenados Não fornece informações sobre as funções que manipulam os dados
  • 34.
    Conceitos importantes damodelagem Diagrama de Entidade e Relacionamento(DER) Entidade Atributo Relacionamento entre entidades Instância da entidade
  • 35.
    Entidade Coleção ouconjunto de objetos (concretos ou abstratos) do mundo real, cujas informações são de interesse para o sistema Necessidade de uma entidade: quando a existência de uma informação é essencial para o sistema.
  • 36.
    Atributos Descrição dasqualidades dos objetos Descrição - elementos de dados cujos valores qualificam o objeto Identificação - elementos de dados que distinguem uma instância de outra Domínio: conjunto de valores válidos
  • 37.
    Relacionamento Conjunto deconexões entre entidades Relacionamento: 1 para 1 - indica que as tabelas têm relação unívoca entre si. Você escolhe qual tabela vai receber a chave estrangeira Relacionamento: N para N (muitos para muitos) Ex: um venda pode ter muitos produtos e um produto pode estar em várias vendas Relacionamento: 1 para N (um para muitos) Ex: uma pessoa pode ter vários e-mail, mas um e-mail é apenas de uma pessoa
  • 38.
    Chaves Chave –primaria ( PK - Primary Key ) Simples: Quando a chave primária é simples, ou seja, é formada por um único campo da tabela, esse campo não pode ter dois ou mais registros de mesmo valor, e também não pode conter nenhum registro nulo. Composta:Se a chave primária é composta, ou seja, formada por mais de um campo, os valores de cada campo podem se repetir, mas não a combinação desses valores.
  • 39.
    Chaves Chave –estrangeira ( FK - Foreign Key ) é a chave formada através de um relacionamento com a chave primária de outra tabela. Define um relacionamento entre as tabelas e pode ocorrer repetidas vezes. Caso a chave primária seja composta na origem, a chave estrangeira também o será. Chave – candidata consiste em um atributo ou grupo de atributos cujo valor identifica unicamente cada linha em uma relação e para o qual nenhum dos atributos pode ser removido sem destruir a identificação única.
  • 40.
    Instância Cada ocorrênciaespecífica da entidade Não tem representação no modelo E-R
  • 41.
    ISA (“is a”– é uma) Define Hierarquia – Se declarar A ISA B, cada entidade A é também considerada como uma entidade B. Identificante A chave estrangeira criada na tabela apropriada será definida, também, como chave primaria Não – Identificante Na opção não-identificada, a chave estrangeira não será definida como chave primária Tipos de Relacionamento
  • 42.
    Banco de DadosOs projetos Lógico e Funcional do Banco de Dados devem ser capazes de prever o volume de informações armazenadas a curto, médio e longo prazo. Os projetos devem ter uma grande capacidade de adaptação para os três casos mencionados; Deve-se ter generalidade e alto grau de abstração de dados
  • 43.
    Definição Base deDados: Coleção de dados relacionados. Dados: Valor de um campo armazenado, matéria-prima para obtenção de informação. Informação: Dados compilados e processados de acordo com solicitação de consultas e análises.
  • 44.
    Ações no bancode dados Insert (Inserção) Insere os dados nas tabelas do banco de dados Insert into nomeTabela ( campos ) values ( valores de cada campo ) Ex: Insert into clientes (codcli, nome) values (1,'Zé'); Update(Atualização) Atualiza os dados nas tabelas do banco de dados update nomeTabela set atributo1 = novoValor , atributo2 = novoValor , … Ex: update clientes set nome = ‘Tião';  todos os campos nome da tabela clientes será substituido para ‘Tião’
  • 45.
    Ações no bancode dados Delete(Exclusão) Deleta os dados nas tabelas do banco de dados delete from nomeTabela delete from clientes  todos os registros salvos na tabela clientes serão excluídos Select(Seleção) Seleção dos dados nas tabelas do banco de dados select atributos from nomeTabela  Todos os registros salvos na tabela clientes serão selecionados Ex: Select nome, idade from clientes Select * from clientes  seleciona todos os atributos da tabela clientes
  • 46.
    Condição WHERE Determinauma condição para buscar, apagar e alterar os dados nas tabelas do banco de dados Ex: SELECT nome FROM clientes WHERE codigo = 1;  A condição determina que será buscado apenas o nome do cliente de código igual a 1. DELETE FROM clientes WHERE codigo = 1;  A condição determina que serão apagados apenas os registros referentes ao cliente de código igual a 1. UPDATE clientes SET nome = ‘C' WHERE codigo =2;  A condição determina que será alterado apenas o nome do cliente de código igual a 2.
  • 47.
    Junções SELECT nome,rua FROM pessoa, endereco WHERE pessoa.codpessoa = endereco.codpessoa As junções servem para fazer o cruzamento entre informações, combinando registros e testando desigualdades entre tabelas que se relacionam. Na consulta os registros de endereço e pessoa são relacionados afim de determinar qual o endereço de cada pessoa.
  • 48.
    Java e Bancode Dados Driver para conexão Responsável por conectar a aplicação com a base de dados Método para conexão Onde determina qual driver será utilizada e qual banco será acessado. Administração dos dados na aplicação Os dados resultantes de uma consulta no banco de dados são salvos em um resultset na aplicação pra que sejam manipulados.
  • 49.
    Prática Configurações Utilizaçãodos conceitos apresentados
  • 50.