0% acharam este documento útil (0 voto)
6 visualizações21 páginas

Java Orientado A Objetos Como Criar Uma Agenda em Java

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
6 visualizações21 páginas

Java Orientado A Objetos Como Criar Uma Agenda em Java

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 21

Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

Buscar

Artigo

Invista em você! Saiba como a DevMedia pode


ajudar sua carreira.

Java Orientado a Objetos:


Como criar uma Agenda
em Java
Veja nesse artigo como desenvolver uma agenda bem simples e básica em

Java OO utilizando a IDE Netbeans.Conheça mais sobre a linguagem de

programação JAVA e também recursos da programação orientada a

objetos.

Marcar como concluído Anotar

Artigos

Java

Java Orientado a Objetos: Como criar uma Agenda em Java

16

1 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

desmembradas em diversas atribuições, como por exemplo, na criação de


contatos básicos, contatos comerciais, telefone e contatos de email.

Descrição das Classes a serem Utilizadas

Na Figura 1 temos especi�cado todas as classes do projeto.

Figura 1. Diagrama de classe representando todas as classes que existirão no


projeto, exceto a principal.

Fique por dentro de tudo que acontece sobre Java na DevMedia e também con�ra o

Checklist Programador Java.

16

2 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

A classe ContatoBasico contém campos primários a serem herdados e métodos de


envio e recebimento de dados.

A classe Contato contém campos para um possível controle residencial ou pessoal


do usuário, que por sua vez herda as funcionalidades da classe ContatoBasico e
contém o método para obter os dados e a idade.

A classe ContatoComercial contém campos que se destinam para um controle


comercial, esta herda as funcionalidades da classe ContatoBasico e contém o
método para obter os dados.

A classe Econtato é destinada para o controle mais aprofundado contendo campos


de vinculações para o contato como email, por exemplo, também essa classe
herda as funcionalidades só que da classe Contato e contém os métodos de
obtenção de dados.

Por �m, temos a classe Telefone que contém campos que discriminam o contato
telefônico do usuário e contém o método para obtenção dos dados. Essa classe
será enunciada apenas na classe Principal (Main) e na classe ContatoBasico.

Iniciando o Projeto

Inicialmente, será criada uma nova aplicação Java, isso após ter aberto o ambiente
de desenvolvimento Netbeans. No menu principal, vá em Arquivo e selecione a
opção Java -> Aplicação Java, como mostra a Figura 2.

16

3 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

Figura 2. Tela para criação de um Novo Projeto Java.

Após isso, é só clicar no botão: Próximo. Então aparecerá a seguinte tela, como
mostra a Figura 3.

16

4 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

Figura 3. Tela de con�guração para o Nome do Projeto, Localização do Projeto e


criação da classe Principal.

Nota: Nesse caso, foi necessário mudar o nome da Classe Principal para Main.

Após ter clicado no botão Finalizar, aparecerá a classe principal Main e com isso
já é possível criar as classes adicionais para dentro do projeto. As classes �carão
todas na mesma raiz e terão os seguintes nomes: Agenda.java, Contato.java,
ContatoBasico.java, ContatoComercial.java, EContato.java e Telefone.java, que
podem ser visualizadas de acordo com a Figura 4.

16

5 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

Implementando o Projeto

Primeiramente, ao começar o projeto será implementada a classe Telefone.java,


como está especi�cado na Listagem 1.

Listagem 1. Classe Telefone.

1 packageappagenda;
2 public class Telefone
3 { private String numero;
4 private String tipo;
5 publicTelefone(String numero, String tipo)
6 { this.numero = numero;
7 this.tipo = tipo;
8 }
9 public String getTelefone()
10 { return numero+" "+tipo;
11 }
12 }

Vamos entender o código acima: na classe Telefone são criados dois campos:
nome e telefone. Ambos são do tipo String e de visibilidade private. Em seguida é
criado o construtor Telefone (String numero, String tipo) que será responsável por
apontar a nova criação dos objetos. Finalmente, é criado o método getTelefone()
do tipo String que retornará os valores dos dois campos concatenados.

Após ter feito a classe Telefone, será implementado dentro da classe


ContatoBasico.java os códigos descritos na Listagem 2.Essa classe contém dados
básicos como nome e telefone que possam ser herdados para as outras classes

16

6 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

1 Package appagenda;
2
3 import java.util.ArrayList;
4
5 abstract public class ContatoBasico
6 { protected String nome;
7 Protected ArrayList<Telefone>telefones;
8 public ContatoBasico()
9 { nome="";
10 telefones=new ArrayList();
11 }
12 public ContatoBasico(String nome)
13 { this.nome = nome;
14 telefones=new ArrayList();
15 }
16 public String getNome() { return nome; }
17 public void setNome(String nome) { this.nome = nome;}
18 public void setTelefone(Telefonetf)
19 { telefones.add(tf);
20 }
21 public String getDados()
22 { String s=nome+"\n";
23 for(Telefone t:telefones)
24 { s+=t.getTelefone()+"\n";
25 }
26 return s;
27 }
28 }

Esse código contém uma classe que é abstrata, na qual ela é impedida de ser
instanciada, mas dá mais consistência ao sistema e tem a função de servir como
herança de atributos e métodos, que serão recursos fundamentais no decorrer do
projeto.
16

7 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

Logo em seguida são criados os campos nome (do tipo String) e telefones (do tipo
ArrayList -isso é uma referência para a classe Telefone) e ambos com visibilidade
protected.

Após isso são criados os construtores ContatoBasico() e ContatoBasico(String


nome), que vão ser responsáveis por apontarem a nova criação dos objetos.

O método public String getNome() { return nome; } serve para encapsular o


campo nome, obtendo seu valor, dentro de uma String e fazer seu retorno.

O método public void setNome(String nome) { this.nome = nome;} é


responsávelpor fazer o encapsulamentos do campo nome e também de enviar o
seu valor.

O método setTelefone(Telefone tf) é responsável por receber o conteúdo do


campo que está contido na classe Telefone e adicionar para o campo telefones.

Por �m, o método getDados() é do tipo String e contém uma String que recebe o
nome e o telefone do respectivo contato e faz o retorno dessa variável.

Após ter implementado a classe abstrata ContatoBasico, agora é proposto


implementar a classe Contato.java descrita na Listagem 3. Por essa classe fazer
parte de uma herança, ela receberá dois dados: nome e data de nascimento.

Listagem 3. Classe Contato que herda da classe ContatoBasico e exibe a data de


nascimento de modo formatado e faz cálculos referentes a idade da pessoa.

1 16

8 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

public class Contato extends ContatoBasico


{
protected Calendar dtnasc;
publicContato(String nome, Calendar dtnasc)
{ super(nome);
this.dtnasc = dtnasc;
}
@Override
public String getDados()
{ returnsuper.getDados()+"Nascido em "+
dtnasc.get(Calendar.DATE)+"/"+
dtnasc.get(Calendar.MONTH) + "/"+
dtnasc.get(Calendar.YEAR) + "\nIdade: ";
}
public intgetIdade()
{ Calendar hoje=new GregorianCalendar();
intidade=hoje.get(Calendar.YEAR)-dtnasc.get(Calendar.YEAR)
hoje.set(Calendar.YEAR, dtnasc.get(Calendar.YEAR));
if(hoje.before(dtnasc))
idade--;
return idade;

}
}

Logo no início do código são criadas duas importações: java.util.Calendar e


java.util.GregorianCalendar, que fazem referências para as datas e conversões e,
com isso, podemos manipular no decorrer da implementação da classe.

Após, é inserido o código extends ContatoBasico, que signi�ca uma herança para
a classe ContatoBasico, onde as informações servirão para a classe Contato.

16

9 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

Também é criado o construtor Contato(String nome, Calendar dtnasc) que será


responsável por apontar a nova criação dos objetos. Nesse construtor há a
propriedade super, na qual faz referência para a variável nome decorrente da
classe ContatoBasico.

Como há uma herança, é preciso um método @Override (sobrescrita) que


receberá o nome de getDados(), cujo tipo é String e contém um padrão de retorno
onde busca os dados da herança (super) concatenando com a data de nascimento,
mês e o ano que estão previamentes no registro em memória.

E �nalmente, o método getIdade(), do tipo int, é responsável por fazer uma


conversão da data em memória em padrões do ano, cuja �nalidade é fazer um
cálculo para saber a idade do usuário que está presente no registro.

Agora vamos implementar a classe Contato com o nome de Contato


Comercial.java, como descrito na Listagem 4. Além dessa classe fazer parte de
uma herança, ela receberá dois campos: atividade e funcionário.

Listagem 4. Classe ContatoComercial sendo herdada da classe ContatoBasico e


exibe a atividade e o funcionário.

1 Package appagenda;
2
3 public class ContatoComercial extends ContatoBasico
4 {
5 protected String atividade;
6 protected String funcionario;
7
8 publicContatoComercial(String nome, String atividade, String funcionario
9 16

10

10 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

public String getDados()


{ String s=super.getDados();
s+=atividade+"\n"+" contato Sr(a): "+funcionario;
return s;
}
}

Logo no início do código inserimos extends ContatoBasico, que signi�ca uma


herança para a classe ContatoBasico, onde as informações servirão para a classe
ContatoComercial.

Logo após são criados dois campos: um com o nome atividade e do tipo String, e
outro com o nome funcionário e do tipo String, ambos com visibilidade protected.

Em seguida é criado o construtor ContatoComercial(String nome, String atividade,


String funcionario) que será responsável por apontar a nova criação dos objetos.
Nesse construtor há a propriedade super, na qual faz referência para a variável
nome decorrente da classe ContatoBasico.

E �nalmente, como há uma herança, é preciso de um método @Override


(sobrescrita), que neste caso receberá o nome de getDados(), cujo tipo é String, e
contém um padrão de retorno onde busca os dados da herança (super)
concatenando com a atividade e o funcionário que estão previamentes no registro
em memória.

Após ter implementado a classe ContatoComercial, agora é proposto implementar


a classe EContato.java que está descrita na Listagem 5. Além dessa classe fazer
parte de uma herança, ela receberá dois campos: email e homepage.
16

11 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

1 Package appagenda;
2 import java.util.Calendar;
3
4 public class EContato extends Contato
5 { protected String email,homepage;
6 public EContato(String nome, Calendar dtnasc, String email, String
7 { super(nome,dtnasc);
8 this.email=email;
9 homepage=hp;
10 }
11 @Override
12 public String getDados() {
13 return super.getDados()+"email: "+email+"\nhomepage:"+homepage
14 }
15 public String getEmail() {
16 return email;
17 }
18 public String getHomepage() {
19 return homepage;
20 }
21 }

Antes, é criada a importação java.util.Calendar, que faz referência para as datas e


conversões. Em seguida é inserido o código extends Contato que signi�ca uma
herança para a classe Contato, onde as informações servirão para a classe
EContato.

Logo depois são criados dois campos: um com o nome email e outro com o nome
homepage, ambos do tipo String e de visibilidade protected.

Após é criado o construtor EContato(String nome, Calendar dtnasc, String email,


16

12 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

Como há uma herança, é preciso do método @Override (sobrescrita), que neste


caso recebe o nome de getDados(), cujo tipo é String, e contém um padrão de
retorno onde busca os dados da herança (super) concatenando com o email e a
homepage que estão previamentes no registro em memória.

O método getEmail() - que é do tipo String, é responsável por retornar o valor do


campo email. E, �nalmente, o método getHomepage(), do tipo String, é
responsável por retornar o valor do campo homepage.

Na Listagem 6 será implementado os códigos da classe responsável por “moldar”


a maioria das funcionalidades do projeto.

Listagem 6. Classe Agenda e suas funcionalidades.

1 Package appagenda;
2
3 Import java.util.ArrayList;
4
5 public class Agenda
6 { private ArrayList<ContatoBasico>contatos;
7 Agenda()
8 { contatos=new ArrayList();
9 }
10 public void inserir(ContatoBasico c)
11 { contatos.add(c);
12 }
13 Public ContatoBasicobuscar(String nome)
14 { for(int i=0;i<contatos.size();i++)
15 { ContatoBasico c=contatos.get(i);
16 if(c.getNome().equalsIgnoreCase(nome))
17 16
18

13 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

{ if(pos>=0 &&pos<contatos.size())
{ returncontatos.get(pos);
}
return null;
}
Public EContatobuscarEmail(String email)
{ for(int i=0;i<contatos.size();i++)
{ if(contatos.get(i) instanceofEContato)
{
EContato c=(EContato)contatos.get(i);
if(c.getEmail().equalsIgnoreCase(email))
return (EContato)contatos.get(i);
}
}
return null;
}
Public Contato[] buscarGeral(String palavraChave)
{ ArrayList<ContatoBasico>todos=new ArrayList();
for(int i=0;i<contatos.size();i++)
{ ContatoBasico c=contatos.get(i);
if(c.getDados().contains(palavraChave))
todos.add(c);
}
Contato[] vet=new Contato[todos.size()];

return (todos.toArray(vet));
}
Public Contato[] buscarTodos()
{ Contato[] vet=new Contato[contatos.size()];

return (contatos.toArray(vet));
}
Public intgetQuantidade()
{ returncontatos.size();
}
16

14 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

previamente colocados na memória, buscar a quantidade de contatos e também


fazer a inserção de registros.

Anteriormente, é criado uma importação do ArrayList (que signi�ca uma coleção


de vetores armazenados numa Lista).

Logo em seguida é criado o campo contatos do tipo ArrayList< ContatoBasico>


(isso é uma referência para a classe ContatoBasico) e com visibilidade protected.

Após é criado o construtor Agenda() que contém a declaração inicial do


recebimento do ArrayList para a variável contatos.

O método inserir(ContatoBasico c) é responsável por controlar toda a inserção de


dados para a memória, sempre de acordo com o parâmetro nome vindo da classe
abstrata ContatoBasico.

O método buscar(String nome), do tipo ContatoBasico, é responsável por realizar


uma busca de todos os dados nos quais se referem ao registro do ContatoBasico
através do nome informado.

O método buscar(intpos), do tipo ContatoBasico,é quem faz uma busca de todos os


dados nos quais se referem ao registro do ContatoBasico através da posição
informada.

O método buscarEmail(String email), do tipo Econtato, é responsável por buscar


os dados do registro referentes a pesquisa feita por email do contato.

O método buscarGeral(String palavraChave), do tipo Contato[] (vetorizado), é


16

15 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

O método buscarTodos(), do tipo Contato[] (vetorizado), é quem faz a busca de


todos os registros, sem que o usuário a�rme algum valor sequer para a pesquisa.

O método intgetQuantidade() é responsável por retornar a quantidades de


registros existentes na memória.

Agora vamos escrever a nossa classe principal, a classe Main, que é implementada
de acordo com a Listagem 7.

Listagem 7. Classe Principal do Projeto, onde se localizam o controle de dados


para o usuário e a ocorrência de eventos.

1 Package appagenda;
2
3 Import java.util.GregorianCalendar;
4
5 public class Main
6 { static void mostraDados(ContatoBasicoobj)
7 { System.out.println(obj.getDados());
8 if(objinstanceofContato)
9 System.out.println(((Contato)obj).getIdade());
10 System.out.println("xxxxxxxxxxxxxxxxxxxxxxxxxx");
11 }
12 public static void main(String[] args)
13 { Agenda a;
14 a=new Agenda();
15
16 Contato cb;
17 cb=new Contato("Teste",newGregorianCalendar(1980,10,28));
18 cb.setTelefone(new Telefone("3333-5555","Telefone residencial"
19 cb.setTelefone(new Telefone("99111-1111","Telefone celular"
20 16

21

16 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

a.inserir(cc);

a.inserir(new EContato("Exemplo",newGregorianCalendar(1975
"[email protected]","www.exemplo.com.br"));

ContatoBasicoobj=a.buscar("Teste"); //pesquisa por nome

if(obj!=null)
mostraDados(obj);
elseSystem.out.println("Contato nao encontrado!");
}
}

O primeiro passo é a importação java.util.GregorianCalendar; que faz referência


para as datas e conversões.

O método mostraDados(ContatoBasicoobj) recebe os dados da classe


ContatoBasico e envia para o objeto objconvertendo os dados para o tipo Contato e
concatenando com a idade.

Finalmente, o método principal do projeto - main(String[] args) - é responsável


por receber as classes Agenda, Contato (que insere na memória um novo contato
contendo: nome, data, telefone residencial, telefone celular), ContatoComercial
(que insere na memória um novo contato comercial contendo: nome, telefone
residencial), EContato (que insere na memória um novo email para contato e um
ano de acordo com o nome) e a classe ContatoBasico é instanciada recebendo o
valor da pesquisa e o tipo da pesquisa, onde no exemplo é a pesquisa por nome.

Se o objeto obj for diferente de null, quer dizer que retornou resultados,

16

17 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

Podemos ver a execução do projeto na Figura 5.

Figura 5. Tela de exibição do resultado em console onde contém os dados do


contato de nome: “Teste”, telefone residencial, telefone celular, data de
nascimento e idade.

Tecnologias:

Java POO UML

Marcar como concluído Anotar

Inicie agora sua carreira


de programador por
apenas R$49,90/mês
16

18 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

Faça um teste grátis

BENEFÍCIOS

Suporte em tempo real

Certi�cado de autoridade

Exercícios para praticar

Estudo gami�cado

Planos de estudo para


cada carreira de
programador

Saiba mais

Por Igor
Em 2014

16

19 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

RECEBA NOSSAS NOVIDADES

Informe o seu e-mail Receber Newsletter

Suporte ao aluno - Tire a sua dúvida.

16

20 of 21 04/06/2021 15:01
Java Orientado a Objetos: Como criar uma Agenda em Java https://www.devmedia.com.br/java-orientado-a-objetos-como-criar-uma-...

Exercicios

Cursos

Artigos

Revistas

Fale conosco

Assinatura para empresas

Assine agora

Hospedagem web por Porta 80 Web Hosting

16

21 of 21 04/06/2021 15:01

Você também pode gostar