Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos

Crie uma classe Contato que possui dois atributos: nome e email do tipo String. Crie outra classe, chamada Agenda, que possui um atributo contatos do tipo vetor de Contato - Exercícios Resolvidos de Java

Quantidade de visualizações: 33907 vezes
Exercício Resolvido de Java - Crie uma classe Contato que possui dois atributos: nome e email do tipo String. Crie outra classe, chamada Agenda, que possui um atributo contatos do tipo vetor de Contato

Pergunta/Tarefa:

Crie uma classe Contato que possui dois atributos: nome e email do tipo String. Crie outra classe, chamada Agenda, que possui um atributo contatos do tipo vetor de Contato. A classe Agenda deve conter um método para adicionar um novo contato em uma posição vazia do vetor, outro método para buscar um contato (retorna uma instância de Contato) através do nome e, por fim, um método para excluir um contato através do nome.

Veja um print deste exercício em execução:



Resposta/Solução:

A resolução deste exercício sobre Programação Orientada a Objetos em Java é um pouco mais demorada que as demais, pois temos que criar um menu de opções. Note que temos que informar também o tamanho do vetor de objetos da classe Contato, ou seja, a quantidade de contatos de poderão ser cadastrados na agenda.

Vamos começar com o código da classe Contato:

Código para a classe Contato.java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

public class Contato {
  // atributos da classe Contato
  String nome;
  String email;  
}

Agora o código para a classe Agenda.java, que contém um vetor de objetos da classe Contato:

Código para Agenda.java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

public class Agenda {
  // vetor de contatos
  int quantContatos = 2;
  Contato contatos[] = new Contato[quantContatos];

  public void adicionarNovoContato(Contato c){
    boolean sucesso = false; // a operação obteve sucesso?
    
    // procuramos uma posição vazia
    for(int i = 0; i < quantContatos; i++){
      if(contatos[i] == null){
        // encontramos uma posição vazia
        contatos[i] = c;
        sucesso = true;
        break;
      }
    }
    
    if(sucesso){
      System.out.println("\nContato cadastrado com sucesso.\n");
    }
    else{
      System.out.println("\nErro: Lista de contatos cheia.\n");
    }
  } 
  
  // permite que permite pesquisar e retornar um contato
  public Contato pesquisarContato(String nome){
    Contato contato = null;
    
    // varre o vetor de contatos
    for(int i = 0; i < contatos.length; i++){
      // o contato foi encontrado?
      if((contatos[i] != null) && (contatos[i].nome.equals(nome))){
        contato = contatos[i]; // retorna o contato
        break;
      }
    }
    
    return contato;
  }
  
  // permite que permite pesquisar e excluir um contato
  public void excluirContato(String nome){
    Contato contato = null;
    boolean excluido = false;
    
    // varre o vetor de contatos
    for(int i = 0; i < contatos.length; i++){
      // o contato foi encontrado?
      if((contatos[i] != null) && (contatos[i].nome.equals(nome))){
        contatos[i] = null; // exclui o contato
        System.out.println("\nContato excluído com sucesso.\n");
        excluido = true;
        break;
      }
    }
    
    if(!excluido){
      System.out.println("\nContato não encontrado.\n");
    }
  }
}

E aqui está o código completo para a classe principal, com comentários, que cria um objeto da classe Agenda e oferece o menu de opções para o gerenciamento dos contatos:

Código para Principal.java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

import java.util.Scanner;

public class Estudos{
  public static void main(String args[]){
    // vamos efetuar a leitura usando um objeto da
    // classe Scanner
    Scanner entrada = new Scanner(System.in);
    String nome, email; // dados temporários
    Contato c;
    
    // criamos um novo objeto da classe Agenda
    Agenda agenda = new Agenda();
    
    // um laço while infinito para exibir o menu
    while(true){
      System.out.println("1. Cadastrar Novo Contato");
      System.out.println("2. Pesquisar Contato");
      System.out.println("3. Excluir Contato");
      System.out.println("4. Sair");
      System.out.print("Sua opção: ");
      int opcao = Integer.parseInt(entrada.nextLine());
      
      switch(opcao){
        case 1: // cadastrar novo contato
          System.out.print("\nNome: ");
          nome = entrada.nextLine();
          System.out.print("E-Mail: ");
          email = entrada.nextLine();
          // cria um novo objeto da classe Contato
          c = new Contato();
          c.nome = nome;
          c.email = email;
          // e gravamos o novo contato
          agenda.adicionarNovoContato(c);
          break;
          
        case 2: // pesquisar um contato
          System.out.print("\nInforme o Nome: ");
          nome = entrada.nextLine();
          
          // pesquisa o contato
          c = agenda.pesquisarContato(nome);
          if(c == null){
            System.out.println("\nContato não encontrado.\n");
          }
          else{
            System.out.println("Contato encontrado:\nNome: " + c.nome +
              "; E-Mail: " + c.email + "\n");
          }
          
          break;
          
        case 3: // exclui um contato
          System.out.print("\nInforme o Nome: ");
          nome = entrada.nextLine();
          
          // exclui o contato
          agenda.excluirContato(nome);
          
          break;
          
        case 4: // fecha o programa
          System.exit(0);
      }
    }
  }
} 


Link para compartilhar na Internet ou com seus amigos:

Java ::: Dicas & Truques ::: Strings e Caracteres

Como excluir uma substring de uma string usando o método delete() da classe StringBuffer do Java - Revisado

Quantidade de visualizações: 92 vezes
Em algumas situações nós gostaríamos de excluir parte de uma palavra ou texto, ou seja, remover uma substring de uma string. Para isso nós podemos usar o método delete() da classe StringBuffer da linguagem Java. Lembrando que a classe StringBuffer, do pacote java.lang, é usada em vez da classe String quando precisamos fazer muitas concatenações e adições ou remoções no conteúdo da string.

Veja um exemplo de código no qual removemos parte do conteúdo de um StringBuffer:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

public class Estudos{
  public static void main(String[] args){
    StringBuffer frase = new StringBuffer("Gosto muito de Java");
    
    // mostra o conteúdo original
    System.out.println("Frase original: " + frase);
    
    String remover = "muito ";
    // vamos obter o índice inicial do conteúdo a ser removido
    int pos = frase.indexOf(remover);
     
    // e agora vamos remover
    frase.delete(pos, pos + remover.length());
    
    // com a remoção
    System.out.println("Depois da remoção: " + frase);
     
    System.exit(0);
  }
}

Após a execução deste código nós teremos o seguinte resultado:

Frase original: Gosto muito de Java
Depois da remoção: Gosto de Java


Java ::: Dicas & Truques ::: Strings e Caracteres

Manipulação de texto em Java - Como contar as ocorrências de um caractere em uma string

Quantidade de visualizações: 38 vezes
Nesta dica mostrarei como podemos combinar um laço for e o método charAt() da classe String para contar as ocorrências de um caractere (uma letra) em uma palavra, frase ou texto.

Veja o código completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

public class Estudos{
  public static void main(String[] args){
    String frase = "Programar em Java é muito bom";
    System.out.println("Frase: " + frase); 
    
    int cont = 0;
    char letra = 'a'; // ocorrências da letra "a"
     
    for(int i = 0; i < frase.length(); i++){
      if(frase.charAt(i) == letra){
        cont++; 
      }
    }
     
    System.out.println("A frase contem " + 
       cont + " ocorrencias da letra \"" + letra + "\"");
     
    System.exit(0);
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

Frase: Programar em Java é muito bom
A frase contém 4 ocorrências da letra "a"


Java ::: Reflection (introspecção) e RTI (Runtime Type Information) ::: Passos Iniciais

Saiba o que é Reflexão (Reflection) em Java - Como usar Reflexão (Reflection) na linguagem Java - Revisado

Quantidade de visualizações: 18274 vezes
Reflection (ou Reflexão), também conhecida como RTI (Runtime Type Information) em algumas linguagens, é um mecanismo para descobrir dados a respeito de um programa em tempo de execução. Reflection em Java nos permite descobrir informações sobre atributos ou membros (campos), métodos e construtores de classes. Podemos também operar nos campos e métodos que descobrimos.

A Reflection permite o que é normalmente chamada de programação dinâmica em Java.

A Reflection em Java é conseguida usando a Java Reflection API. Esta API consiste de classes nos pacotes java.lang e java.lang.reflect.

Antes de prosseguirmos, veja um exemplo de como podemos listar todos os métodos públicos da classe Object:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

import java.lang.reflect.*;
 
public class Estudos{
  public static void main(String args[]){
    // vamos carregar a classe Object
    try{
      Class c = Class.forName("java.lang.Object");
 
      // obtém os nomes dos métodos
      Method[] metodos = c.getMethods(); 
 
      // exibe o nome de cada método
      for(int i = 0; i < metodos.length; i++){
        System.out.println(metodos[i].getName()); 
      }
    }
    catch(ClassNotFoundException e){
      System.out.println(e.getMessage()); 
    }
 
    System.exit(0);
  }
} 

Ao executarmos este código nós teremos o seguinte resultado:

wait
wait
wait
equals
toString
hashCode
getClass
notify
notifyAll

Eis uma lista das coisas que podemos fazer com a Java Reflection API:

1) Determinar a classe de um objeto;
2) Obter informações sobre os modificadores, campos (atributos), métodos, construtores e superclasses de uma classe;
3) Descobrir quais constantes e declarações de métodos pertencem a uma interface;
4) Criar uma instância de uma classe cujo nome não sabemos até o tempo de execução;
5) Obter e definir o valor do campo de um objeto;
6) Invocar um método em um objeto;
7) Criar um novo array, cujo tamanho e tipo de dados só saberemos em tempo de execução.

A Java Reflection API é geralmente usada para criar ferramentas de desenvolvimento tais como debuggers, class browsers e construtores de GUI. Geralmente, neste tipo de ferramentas, precisamos interagir como classes, objetos, métodos e campos, e não sabemos quais em tempo de compilação. Assim, a aplicação deve, dinamicamente, encontrar e acessar estes itens.

Esta dica foi revisada e testada no Java 8.


Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 47 usuários muito felizes estudando em nosso site.