Alguém tem ideia como se implementa isso aqui, começei a estuda mais esta muito 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:

https://www.caelum.com.br/apostila-java-orientacao-objetos/collections-framework/#16-2-listas-java-util-list

1 curtida

@Jocilanilton qual é exatamente a sua dificuldade?

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;
    }
}
1 curtida

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;

1 curtida