Boas.
Estou a fazer um exercício sobre P.O.O. (programação orientada a objectos) onde tenho que gerar uma lista telefónica para pessoas e para empresas e guardar a mesma num ArrayList.
Depois tenho que fazer o output para o ecrã de:
o Todas as entradas da agenda.
o As entradas que tenham um dado número de fax. (aqui é que está o meu problema)
Eu fiz uma hierarquia de Classes onde a Classe Agenda é a SuperClasse de Pessoa e Empresa, e depois tenho a Main Classe TesteAgenda para fazer o programa rolar.
As pessoas caracterizam-se pelo nome, número de telefone e número de telemóvel e as empresas caracterizam-se pelo nome, número de telefone, endereço de e-mail e número de fax.
Deixo aqui em baixo o meu código, pensando eu que o meu erro está na condição do último if() dentro do ciclo for() da Main Classe TesteAgenda, pois eu não sei as condições para comparar comparar os valores de instâncias de Classes guardadas em ArrayLists.
Classe Agenda
public class Agenda {
//campos
private String nome;
private String numTlf;
//construtores
public Agenda() {
nome = "";
numTlf = "";
}
public Agenda(String nome, String numTlf) {
this.nome = nome;
this.numTlf = numTlf;
}
//métodos Get
public String getNome() {
return nome;
}
public String getNumTlf() {
return numTlf;
}
//métodos Set
public void setNome(String nome) {
this.nome = nome;
}
public void setNumTlf(String numTlf) {
this.numTlf = numTlf;
}
//métodos
@Override
public String toString() {
if (getNumTlf().equalsIgnoreCase("")) {
return String.format("Nome: %s%n", nome);
} else {
return String.format("Nome: %s%nNúmero de Telefone: %s%n", nome, numTlf);
}
}
}
Classe Pessoa
public class Pessoa extends Agenda {
//campos
private String numTlm;
//construtores
public Pessoa() {
super();
numTlm = "";
}
public Pessoa(String nome, String numTlf, String numTlm) {
super(nome, numTlf);
this.numTlm = numTlm;
}
//métodos Get
public String getNumTlm() {
return numTlm;
}
//métodos Set
public void setNumTlm(String numTlm) {
this.numTlm = numTlm;
}
//métodos
@Override
public String toString() {
if (getNumTlm().equalsIgnoreCase("")) {
return String.format(super.toString());
} else {
return String.format(super.toString()+"Número de telemóvel: %s%n",numTlm);
}
}
}
Classe Empresa
public class Empresa extends Agenda {
//campos
private String email;
private String fax;
//construtores
public Empresa() {
super();
email = "";
fax = "";
}
public Empresa(String nome, String numTlf, String email, String fax) {
super(nome, numTlf);
this.email = email;
this.fax = fax;
}
//métodos Get
public String getEmail() {
return email;
}
public String getFax() {
return fax;
}
//métodos Set
public void setEmail(String email) {
this.email = email;
}
public void setFax(String fax) {
this.fax = fax;
}
//métodos
@Override
public String toString() {
String txt = "";
if (getEmail().equalsIgnoreCase("") && getFax().equalsIgnoreCase("")) {
txt = super.toString();
} else {
txt = super.toString() + "e-mail: " + email + "\nFax: " + fax+"\n";
}
if (getEmail().equalsIgnoreCase("") && (!getFax().equalsIgnoreCase(""))) {
txt = super.toString() + "Fax: " + fax+"\n";
}
if ((!getEmail().equalsIgnoreCase("")) && getFax().equalsIgnoreCase("")) {
txt = super.toString() + "e-mail: " + email+"\n";
}
return txt;
}
}
Main Classe TesteAgenda
import java.util.ArrayList;
public class TesteAgenda {
public static void main(String[] args) {
//instâncias da Classe Pessoa
Pessoa p1 = new Pessoa("Paulo", "221456785", "945741258");
Pessoa p2 = new Pessoa("João", "", "971254762");
Pessoa p3 = new Pessoa("Tiago", "214529861", "");
//instâncias da Classe Empresa
Empresa e1 = new Empresa("ISEP", "220500400", "[email removido]", "220500401");
Empresa e2 = new Empresa("FEUP", "220600800", "[email removido]", "");
Empresa e3 = new Empresa("ISCAP", "220700900", "", "220700901");//é suposto este aparecer quando faço a busca por nº de fax
Empresa e4 = new Empresa("PACSI", "220721956", "", "220700901");//é suposto este aparecer quando faço a busca por nº de fax
//ArrayList que guarda os contactos
ArrayList agenda = new ArrayList();
//preenchimento do ArrayList
agenda.add(p1);
agenda.add(p2);
agenda.add(p3);
agenda.add(e1);
agenda.add(e2);
agenda.add(e3);
agenda.add(e4);
//todas as entradas da lista
System.out.println("Todas as entradas da agenda: ");
for (Object obj : agenda) {
System.out.println(obj);
}
//entradas com um determinado nº de fax
String fax="220700901";//nº de faz escolhido
System.out.println("---------------------");
System.out.println("\nEntradas com um determinado nº de fax");
for (Object obj : agenda) {
if(fax.equals(((Empresa)obj).getFax())){//penso que o erro está aqui
System.out.println("Entrada encontrada:\n"+obj);
}else{
System.out.println("Entrada não encontrada");
}
}
}
}
Se me puderem ajudar eu agradeço 
Cumprimentos
