
estou vendo uns video na internet mais ta dificil?

estou vendo uns video na internet mais ta dificil?
Você vai criar um novo projeto;
dentro do pacote principal do projeto você criará duas classes, a “AgendaTelefone” e a “Contato”;
Dentro da classe “AgendaTelefone” você criará um atributo do tipo ‘private’ do tipo List, que é um arrayList;
criará os métodos inserir do tipo void, buscar do tipo String , remover do tipo String tbm, tamanho eu n sei;
em Contato é só criar os atributos nome e telefone com private e String e criar os métodos getters e setters deles;
O “toString” é um metodo de java pra retornar um conjuto de strings;
public String toString(){
return " " ;
}
isso eu sei mais ou menos mais minha dificuldade é essa implementação : -contato : List
Dá uma estudada nessa apostila:
Procure assuntos sobre engenharia de software, depois sobre UML, como estou iniciando neste assunto, optei por postar uma implementação, mas não posso dizer que está 100%, pelo menos da pra ter uma noção básica.
Classe de teste:
public class Crisis {
public static void main(String[] args) {
AgendaTelefone agenda = new AgendaTelefone();
adicionarAAgenda(agenda, "ana", "11");
adicionarAAgenda(agenda, "maria", "13");
adicionarAAgenda(agenda, "Sara", "14");
adicionarAAgenda(agenda, "maria", "15");
Contato c = agenda.buscar("maria");
System.out.println(c == null? "Contato não encontrado":c.toString());
}
private static void adicionarAAgenda(AgendaTelefone agenda, String nome, String telefone){
Contato c = new Contato();
c.setNome(nome);
c.setTelefone(telefone);
agenda.inserir(c);
}
}
Implementando AgendaTelefone:
import java.util.ArrayList;
import java.util.List;
public class AgendaTelefone {
//Obs.: o sinal (-) indica que o atributo/método é privado, já o sinal de (+) que o atributo/método é público
/* -contato:List<Contato>
Por ser privado e como não temos setter para o atributo, além do construtor ser padrão [AgendaTelefone()],
devemos inicializar o array podendo ser inclusive final neste caso*/
private final List<Contato> contatos = new ArrayList<>();
// +inserir(c: Contato):void
public void inserir(Contato c) {
contatos.add(c);
}
// +buscar(nome: String):Contato
/*Obs.: o ideal seria retornar uma lista de contatos e não um único contato, pois pode haver duas+ pessoas com o mesmo nome
mas vamos seguir o determinado e dessa forma restringir a busca ao primeiro contato encontrado
*/
public Contato buscar(String nome) {
for (Contato contato : contatos) {
if (contato.getNome().equals(nome)) {
return contato;
}
}
return null;
}
// +remover(String nome):void [Obs.: se não me engano, é a regra de negócio deverá determinar alguma rotina de antes da exclusão]
public void remover(String nome) {
contatos.remove(buscar(nome));
}
// +tamanho():int
public int tamanho() {
return contatos.size();
}
}
Implementando contato:
public class Contato {
//-nome:String -> (o sinal de ( - ) indica ser privado)
private String nome;
//-telefone:String
private String telefone;
//métodos getters and setters para pegar os atributos protegidos a seguir
public String getTelefone() {
return telefone;
}
public String getNome() {
return nome;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public void setNome(String nome) {
this.nome = nome;
}
@Override
public String toString() {
return "Nome: "+nome+" telefone: "+telefone;
}
}
Um dos objetivos da engenharia de software é fazer mais usando menos, com cuidado é claro.
Assim, o método utilizado acima pode ser reescrito da seguinte forma:
public Contato buscar(String nome) {
return ((Optional<Contato>) contatos.stream().filter(contato -> contato.nome.equals(nome)).findFirst()).orElse(null);
}
Lembrar de importar java.util.Optional;