# Klassen richtig einsetzen



## derdoofie (7. Dez 2015)

Hallo zusammen,

ich habe ein kleines Problem, und zwar mussten wir bei der Programmier Hausaufgabe einen Text Analyzer programmieren.

Dieser soll eine Datei einlesen (String), dieses untersuchen und die Anzahl an Buchstaben in einen Array speichern. Das war noch nicht das Problem, aber der Sinn dieser Hausaufgabe ist es, zwei Programme zu schreiben.

Das erste Programm soll TextAnalyzer. java sein (das eben solch einen String kontrolliert) und eine zweite Klasse mit Bsp08, wo ich mit der main Methode das erste Programm testen soll.

Leider haben wir immer nur ein Programm geschrieben(mit main Methode und anderen) und in dieser Klasse sofort das Ergebnis kontrolliert.

Jetzt hab ich keine Ahnung wie ich diese zwei verknüpfen soll oder kann.
Hoffe um Hilfe


----------



## derdoofie (7. Dez 2015)

Die Angabe:
Implementieren Sie die Klasse TextAnalyzer zur Analyse von Texten, wobei die Texte aus Dateien eingelesen werden. Die main-Methode von Bsp08 dient dem Einlesen einer oder mehrerer Textdateien und dem Testen der Methoden von TextAnalyzer.

*Teil 1*
Erstellen Sie die Klasse TextAnalyzer und implementieren Sie dazu folgende Methoden:

// analyze a string: count characters and add the data to the global statistic
public void analyzeChar(String s)

// returns the absolute frequency of character c1
public int getFrequencyChar(char c1)

// reset statistic
public void resetStatistic() {...}

Die Methode public void analyzeChar(String s) soll im String s (s ist zB eine Zeile der eingelesenen Datei) zählen, wie oft jeder Buchstabe vorkommt und dies in einer globalen Statistik (z.B. einem Array) speichern. Es sollen nur die Buchstaben a-z gezählt werden (keine Umlaute). Groß- und Kleinschreibung soll NICHT unterschieden werden. D.h. a und A sind als selber Buchstabe zu betrachten. Ungültige Zeichen, z.B. Umlaute, Sonderzeichen oder Leerzeichen, sollen ignoriert werden.

Die Methode public int getFrequencyOfChar(char c1) soll die absolute Häufigkeit des Buchstabens c1 zurückgeben, d.h. wie oft kam c1 in den bisher untersuchten Strings vor.

Die Methode public void resetStatistic() löscht alle bisher gesammelten Daten aus der Statistik.


----------



## Joose (7. Dez 2015)

Wenn beide Dateien im gleichen package liegen dann kannst du wie folgt vorgehen:


```
public static void main(String[] args) {
   NameDeinerKlasse objekt = new NameDeinerKlasse();
   objekt.MethodenName();
   // ...
}
```


----------



## VfL_Freak (7. Dez 2015)

Moin,

hmm, ich hoffe, ich habe Dich richtig verstanden .... 

Die Klasse "Bsp08" soll die Hauptklasse mit der 'main'-Methode werden. Somit soll sie später auch aufgerufen werden:
Die Klasse "TextAnalyzer" ist dann eine zeite Klasse im Package (OHNE 'main'-Methode)!
Dann erzeugst Du in der 'main'-Methode eine neues Objekt von Typ "TextAnalyzer" und rufst darüber die gewünschten Methoden auf.

Gruß Klaus

EDIT: too later


----------



## derdoofie (7. Dez 2015)

Genau so sollte es sein


----------



## VfL_Freak (7. Dez 2015)

Ist Dir denn jetzt klar, was Du tun musst ??? 

Gruß Klaus


----------



## derdoofie (7. Dez 2015)

ich müsste lügen wenn ich ja sage


----------



## truesoul (7. Dez 2015)

*lol

Joose Beispiel hilft da auch nicht?


----------



## VfL_Freak (7. Dez 2015)

derdoofie hat gesagt.:


> ich müsste lügen wenn ich ja sage


dann schau hier nach :
https://www.google.de/search?q=java...&oe=utf-8&gws_rd=cr&ei=_KNlVtSKJcKHygOA67HoDw

Gruß Klaus


----------



## derdoofie (7. Dez 2015)

joose´s beispiel :

publicstaticvoid main(String[] args){
   NameDeinerKlasse objekt =new NameDeinerKlasse();
   objekt.MethodenName();
   // ...
}

aber was meint er mit objekt und darunter mit objekt.MehtodenName(); ?


----------



## truesoul (7. Dez 2015)

Hallo

```
public class Test {

public static void main(String[] args){
    TextAnalyzer textAnalyszer = new TextAnalyzer();
    textAnalyszer.analyzeChar("Ein Text");
    int count = textAnalyszer.getFrequencyChar('e');
}

}
```

und das hier?


----------



## derdoofie (7. Dez 2015)

dankeschön 

und dann sind die Mehtoden von meiner anderen Klasse in diesem Programm gespeichert oder wie ?


----------



## truesoul (7. Dez 2015)

Na um ein Programm überhaupt zum laufen zu bekommen muss es die public static void main(String[] args) existieren. Die packt man in eine Klasse hinein wie ich mit Test.

Um deine Klasse TextAnalyzer zu testen erzeugst du ein Object TextAnalyzer und greifst auf die Methoden wie im Beispiel zu.


----------



## derdoofie (7. Dez 2015)

Also eine "Kopie" wird in meiner main Methode erstellt ?


----------



## truesoul (7. Dez 2015)

Jein.

Es ist ein neu erzeugtes Objekt vom Typ TextAnalyzer.
Aber für dich sicher einfacher zu verstehen wenn du das als Kopie siehst.


----------

