# Telefonbuch programmieren



## Okidoki (13. Jan 2011)

Hallo Community 

und zwar habe ich als Hausuafgabe die Aufgabe bekommen, ein Telefonbuch zu programmieren (und das schon nach ca. 8 Wochen schule und ohne Einführung in Java!!!)
Naja wie dem auch sei, komme ich einfach nicht weiter. Hier ist eine UML "Grafik" vom Lehrer:






Am wichtigsten sind mir die Klassen Telefonbuch und Eintrag... den rest bekomme ich vllt selber hin^^
achja und als kleine Anmerkung: Ich habe das meiste als Typ "String" deklariert (heißt doch so oder? xD) weil ein "int" nur eine bestimmte Länge an Zalen aufnehmen kann.

So sieht bisher meine Klasse Telefonbuch aus:

```
import java.util.ArayList;

public class Telefonbuch {
private ArrayList<Eintrag> eintraege;

public void addEintrag(ArrayList<Eintrag> eintraege) {
  this.eintraege = eintraege;
}

public int getEintragByID() {
  return ID;  //ist das so richtig oder fehlt hier noch was?
}

public Eintrag getEintragByTelefonnummer(String gesuchteNummer) {
		for(Eintrag eintrag : eintraege) {
			if(eintrag.containsNummer(gesuchteNummer)) {
				return eintrag;
			}			
		}
		return null;
	}

public void druckeTelefonbuch() {
  //was muss hier rein?
}
```

So sieht meine Klasse Eintrag aus:

```
public abstract class Eintrag {
private int ID;
private Adresse adresse;  //hab mir sagen lassen, dass das so richtig ist. Wieso nicht String adresse?
private Telefonnummern telefonnummern;

public int getID() {
//was kommt hier rein??
}

public boolean containsNummer(String nummer) {
  if(telefonnummer.containsNummer(String nummer) == true) {   //ist das so richtig?
			return true;
		}
			return false;
	}
}

public void druckeEintrag() {
}
```

Schonmal vielen Dank für eure Hilfe


----------



## Landei (13. Jan 2011)

Bei mir auf Arbeit ist leider die UML-Grafik geblockt :-/

Jedenfalls sollte es ungefähr so aussehen (ungestetet):


```
public class Telefonbuch {
   //erst mal mit einer leeren Liste initialisieren
   private List<Eintrag> eintraege = new ArrayList<Eintrag>(); 
 
  public void addEintrag(Eintrag eintrag) {
     eintraege.add(eintrag);
  }

  //für meherer Einträge ginge
  public void addEintraege(List<Eintrag> neueEintraege) {
     eintraege.addAll(neueEintraege);
  }
 
  public Eintrag getEintragByID(int id) {
        for(Eintrag eintrag : eintraege) {
            if(eintrag.getID() == id) {
                return eintrag;
            }           
        }
        return null;
  }

  public Eintrag getEintragByTelefonnummer(String gesuchteNummer) {
        for(Eintrag eintrag : eintraege) {
            if(eintrag.containsNummer(gesuchteNummer)) {
                return eintrag;
            }           
        }
        return null;
    }
 
  public void druckeTelefonbuch() {
      for(Eintrag eintrag : eintraege) {
         eintrag.druckeEintrag();
      }
  }
}
```


```
public class Eintrag {
  private int ID;
  private Adresse adresse;  
  private Telefonnummern telefonnummern;
 
  public Eintrag(int ID, Adresse adresse, Telefonnummern telefonnummern) {
     this.ID = ID;
     this.adresse = adresse;
     this.telefonnummern = telefonnummern;
  }

  public int getID() {
    return ID;
  }
 
  public boolean containsNummer(String nummer) {
    return telefonnummern.containsNummer(String nummer));
  }
 
   public void druckeEintrag() {
      System.out.println(id + " " + adresse + "  " + telefonnummern);  
   }
}
```

Natürlich brauchst du noch die Telefonnummern und Adresse-Klassen.


----------



## VfL_Freak (13. Jan 2011)

Moin,

um mal auf einige Fragen aus dem ersten Post einzugehen :


> private Adresse adresse;  //hab mir sagen lassen, dass das so richtig ist. Wieso nicht String adresse?


Du sollst hier wohl einen Datentyp "Adresse" verwenden und keinen String - siehe auch Post von Landei!



> public int getEintragByID()
> {
> return ID;  //ist das so richtig oder fehlt hier noch was?
> }


hmm, also der Name der Methode legt ja nun nahe, dass hier nicht die ID zurückgegeben werden soll, sondern mittels einer ID als Übergabeparameter ein "Eintrag" (Adresse ??)

Gruß
Klaus


----------



## Okidoki (15. Jan 2011)

vielen dank euch beiden 

bis jetzt sieht das ganze so aus:

Telefonbuch:

```
package Telefonbuch;
import java.util.ArrayList;

public class Telefonbuch {

	private ArrayList<Eintrag> eintraege = new ArrayList<Eintrag>();
	

public void addEintraege(ArrayList<Eintrag> eintraege) {
	eintraege.addAll(eintraege);
}

public Eintrag getEintragByID(int ID) {
	for(Eintrag eintrag : eintraege) {
		if(eintrag.getID() == ID) {
			return eintrag;
		}
	}
	return null;
}
	
public Eintrag getEintragByTelefonnummern(String gesuchteNummer) {
	for(Eintrag eintrag : eintraege) {
		if(eintrag.containsNummer(gesuchteNummer)) {
			return eintrag;
		}
	}
	return null;
}

public void druckeTelefonbuch() {
	for(Eintrag eintrag : eintraege) {
		eintrag.druckeEintrag();
	}
}

}
```

Eintrag:

```
package Telefonbuch;

public abstract class Eintrag {

	private int ID;
	private Adresse adresse;
	private Telefonnumern telenummer;
	
public int getID() {
	return ID;
}
	
public boolean containsNummer(String nummer) {
	return telenummer.containsNummer(nummer);
}
	
public void druckeEintrag() {
	System.out.println(ID + " " + adresse + " " + telenummer);
}
}
```

Adresse:

```
package Telefonbuch;

public class Adresse {

	private String strasse;
	private String hausnummer;
	private String plz;
	private String ort;
	
	public String getStrasse() {
		return strasse;
	}

	public void setStrasse(String strasse) {
		this.strasse = strasse;
	}

	public String getHausnummer() {
		return hausnummer;
	}

	public void setHausnummer(String hausnummer) {
		this.hausnummer = hausnummer;
	}

	public String getPlz() {
		return plz;
	}

	public void setPlz(String plz) {
		this.plz = plz;
	}

	public String getOrt() {
		return ort;
	}

	public void setOrt(String ort) {
		this.ort = ort;
	}
	
public void druckeAdresse() {
	System.out.println(strasse + " " + hausnummer + " " + plz + " " + ort);
}
}
```

Personeneintrag:

```
package Telefonbuch;

public class Personeneintrag {
	  
	private String name;
	private String vorname;
	public String getName() {
		return name;
}
	
public void setName(String name) {
	this.name = name;
}
	
public String getVorname() {
		return vorname;
}

public void setVorname(String vorname) {
		this.vorname = vorname;
}

public void druckeEintrag() {
	
}
	
}
```

Firmeneintrag:

```
package Telefonbuch;

public class Firmeneintrag {

	private String branche;
	private String webseite;
	private String firmenname;
	
	public String getBranche() {
		return branche;
	}

	public void setBranche(String branche) {
		this.branche = branche;
	}

	public String getWebseite() {
		return webseite;
	}

	public void setWebseite(String webseite) {
		this.webseite = webseite;
	}

	public String getFirmenname() {
		return firmenname;
	}

	public void setFirmenname(String firmenname) {
		this.firmenname = firmenname;
	}

public void druckeEintrag() {
}



}
```

Telefonnummern:

```
package Telefonbuch;

public class Telefonnumern extends Eintrag {
	
	private String faxnummer;
	private String mobilnummer;
	private String festnetz;
	
	public String getFaxnummer() {
		return faxnummer;
	}


	public void setFaxnummer(String faxnummer) {
		this.faxnummer = faxnummer;
	}


	public String getMobilnummer() {
		return mobilnummer;
	}


	public void setMobilnummer(String mobilnummer) {
		this.mobilnummer = mobilnummer;
	}


	public String getFestnetz() {
		return festnetz;
	}


	public void setFestnetz(String festnetz) {
		this.festnetz = festnetz;
	}

public boolean containsNummer(String nummer) {
	return false;
}

}
```

ist das soweit richtig? also meckern tut Eclipse nicht xD 

wie kann ich das ganze jetzt mal testen und ausgeben? muss ich noch ein Programm schreiben bzw. eine neue Klass erstellen, die mir alles ausgibt? und muss ich Testdaten angeben z.B. Max Mustermann, Telenummer 1234, Mobil 5678 usw.?

vielen dank für jede weitere Hilfe


----------



## Final_Striker (15. Jan 2011)

Wieso leitest du die Klasse Telefonnummer von der Klasse Eintrag ab?


----------



## Lovebox (19. Dez 2012)

hallo zusammen hoffe es ist noch jemand da der mir eventuell helfen kann bei meinen problem...
...vor weg wollte ich sagen ich bin java einsteiger und hab schon häufiger probleme mit dem programmieren...

so fang ich mal an hier ist meine aufgaben stellung:Erweitern Sie das Beispiel derart, dass dem Benutzer die Möglichkeit gegeben wird, alle Einträge im Telefonverzeichnis zu sehen.
Verwenden Sie folgendes Beispiel als Basis um ein Anzeigefenster mit Scroll–Text zu erzeugen. (Oder informieren
Sie sich selbst online über die Möglichkeiten von JOptionPane.)Um die erforderlichen Daten aus dem Verzeichnis heraus zu holen, können Sie ein zweidimensionales Feldern
verwendenas Feld muss natürlich vom Telefonverzeichnis mit den richtigen Daten gefüllt werden.

so ist mir die aufgaben stellung vor gegeben ... so nun hab ich das hier soweit geschafft und weiß jetz nur nicht wie ich es fertig kriegen soll 


package p;



	import javax.swing.JFrame;

	import javax.swing.JOptionPane;

	import javax.swing.JScrollPane;

import javax.swing.JTextArea;

	public class TestScrollText {

		private static final String TelephoneDirectory = null;
		private static Object action;
		private static int i;

		public static void main(String[] args) {

			// String mit vielen Zeilen zusammenbauen:

			StringBuilder stringBuilder = new StringBuilder();

			for(int i=0; i< 200; i++) {

			stringBuilder.append("Zeile Nr. "+i+"\n");

			}

			String longString = new String(stringBuilder);

			// String mit vielen Zeilen anzeigen:

			JTextArea textArea = new JTextArea(6, 25);

			textArea.setText(longString);

			textArea.setEditable(false);

			JScrollPane scrollPane = new JScrollPane(textArea);

			JOptionPane.showMessageDialog(new JFrame(),

			scrollPane,

			"FensterTitel",

			JOptionPane.PLAIN_MESSAGE);

			System.exit(0);

			int n;
			if(n == JOptionPane.OK_OPTION){ // Zustimmung


			}
			else if (action.equals("Alle auflisten")) {

				String[][] allEntries = TelephoneDirectory.();

				StringBuilder stringBuilder1 = new StringBuilder();

				for(int i=0; i<allEntries.length; i++) {

				stringBuilder1.append("Name: " + allEntries_[0]

				+ ", Vorname: " + allEntries[1]

				+ ", Nr: " + allEntries[2] +"\n");

				}

				String entriesString = new String(stringBuilder1);

				displayEntries(entriesString);

				 int[] res;
				System.arraycopy(res =0, n, action, n, n);

			}






				private static void displayEntries(String entriesString) {
			// TODO Auto-generated method stub

		}






				private static void getAllEntries() {

					int actSize;
					String[][] res = new String[actSize][];

					for (int i=0; i<actSize; i++) {

					res = new String[3];

					 res = new String [2];

					}

					return ;

					}



		}



		}

	}
		}



		}_


----------



## VfL_Freak (19. Dez 2012)

Moin,

ist der große, rote Hinweis auf die Java-Tags noch zu klein ???:L 
So unstrukturierten Code wird sich hier wohl kaum einer antun ...

Zudem - was hat das mit dem knapp 2 Jahre alten ursprünglichen Thema zu tun ???

Nix für ungut 
Gruß
Klaus


----------



## Lovebox (19. Dez 2012)

so weit ich es sehe kann habe ich dieses problem ja jetz und habe um die hilfe eig gefragt und nicht vor 2 jahren ....package p;




```
package p;


	
	import javax.swing.JFrame;

	import javax.swing.JOptionPane;

	import javax.swing.JScrollPane;

import javax.swing.JTextArea;
	 
	public class TestScrollText {
	
		private static final String TelephoneDirectory = null;
		private static Object action;
		private static int i;

		public static void main(String[] args) {

			// String mit vielen Zeilen zusammenbauen:

			StringBuilder stringBuilder = new StringBuilder();

			for(int i=0; i< 200; i++) {

			stringBuilder.append("Zeile Nr. "+i+"\n");

			}

			String longString = new String(stringBuilder);

			// String mit vielen Zeilen anzeigen:

			JTextArea textArea = new JTextArea(6, 25);

			textArea.setText(longString);

			textArea.setEditable(false);

			JScrollPane scrollPane = new JScrollPane(textArea);

			JOptionPane.showMessageDialog(new JFrame(),

			scrollPane,

			"FensterTitel",

			JOptionPane.PLAIN_MESSAGE);

			System.exit(0);

			int n;
			if(n == JOptionPane.OK_OPTION){ // Zustimmung
		
				
			}
			else if (action.equals("Alle auflisten")) {

				String[][] allEntries = TelephoneDirectory.();

				StringBuilder stringBuilder1 = new StringBuilder();

				for(int i=0; i<allEntries.length; i++) {

				stringBuilder1.append("Name: " + allEntries[i][0]

				+ ", Vorname: " + allEntries[i][1]

				+ ", Nr: " + allEntries[i][2] +"\n");

				}

				String entriesString = new String(stringBuilder1);

				displayEntries(entriesString);
				
				 int[] res;
				System.arraycopy(res [i]=0, n, action, n, n);
				
			}
			    
				
				
				
	           			
				
				private static void displayEntries(String entriesString) {
			// TODO Auto-generated method stub
			
		}






				private static void getAllEntries() {

					int actSize;
					String[][] res = new String[actSize][];

					for (int i=0; i<actSize; i++) {

					res[i] = new String[3];

					 res[i] = new String [2];

					}

					return ;

					}
		

		
		}

		
			
		}

	}
		}

		
			
		}
```


----------



## Marcinek (19. Dez 2012)

Es geht wohl eher darum, dass du hier ein Thread "hijackst", der nix mit deinem Thema zu tun hat.

Möglicherweise würde es ein Mod für uns Splitten, um nicht noch mehr Verwirrung reinzubringen.

---

Dein Code hat noch kleine Compilerfehler und es fehlt noch die Methode oder Klasse "TelephoneDirectory"

Ich weiß aber noch nicht 100 %, wie wir hier helfen sollen.

Gruß,

Martin


----------

