Java-Schulung - wieczorek-it.de Web viewNur werden Satzzeichen, die am Word...

41
Java Schulung (Java 2 Java Development Kit 5 / 6) Fortgeschrittene Programmierung 1. Dokumentationskommentare Dokumentation von Softwaresystemen ist wichtiger Bestandteil der Softwareentwicklung Entwickler müssen im Entwicklungsprozess einzelne Komponenten beschreiben um spätere Wiederverwendung zu erleichtern aus Kommentaren im Java-Quelltext werden über Zusatzprogramm Textdateien mit gewünschten Informationen generiert 1.1 wichtige Dokumentationskommentare Kommentar Erläuterung @see Klassenname Verweis auf eine andere Klasse @see Klassen- oder Methodenname Verweis auf eine andere Methode @see Ausgeschriebener Klassenname Verweis auf eine voll qualifizierte Klasse @see Ausgeschriebener Klassen- oder Methodenname Verweis auf eine voll qualifizierte Methode @version Versionstext Version @author Autor Schöpfer @return Rückgabetext Rückgabewert @param Parametername oder Parametertext Beschreibung der Parameter @exception Exception- Klassenname oder Exceptiontext Ausnahmen, die ausgelöst werden @throws Exception- Klassenname oder Exceptiontext Synonym zu oben { @link verweis } Einen eingebauten Verweis im Text; Parameter sind wie bei @see 1.2 Mit javadoc eine Dokumentation erstellen um Dokumentation zu erzeugen, wird dem Konsolenprogramm javadoc als Parameter der Dateiname der zu kommentierenden Klasse übergeben wenn man Dokumentationen für das gesamte Verzeichnis erstellen möchte, gibt man alle Dateien mit der Endung .java an $ javadoc Beispiel.java $ javadoc *.java Marcel Wieczorek 08.06.2008 1 | Seite

Transcript of Java-Schulung - wieczorek-it.de Web viewNur werden Satzzeichen, die am Word...

Java-Schulung

Java Schulung (Java 2 Java Development Kit 5 / 6)

Fortgeschrittene Programmierung1. Dokumentationskommentare

Dokumentation von Softwaresystemen ist wichtiger Bestandteil der Softwareentwicklung

Entwickler mssen im Entwicklungsprozess einzelne Komponenten beschreiben um sptere Wiederverwendung zu erleichtern

aus Kommentaren im Java-Quelltext werden ber Zusatzprogramm Textdateien mit gewnschten Informationen generiert

1.1 wichtige Dokumentationskommentare

Kommentar

Erluterung

@see Klassenname

Verweis auf eine andere Klasse

@see Klassen- oder Methodenname

Verweis auf eine andere Methode

@see Ausgeschriebener Klassenname

Verweis auf eine voll qualifizierte Klasse

@see Ausgeschriebener Klassen- oder Methodenname

Verweis auf eine voll qualifizierte Methode

@version Versionstext

Version

@author Autor

Schpfer

@return Rckgabetext

Rckgabewert

@param Parametername oder Parametertext

Beschreibung der Parameter

@exception Exception-Klassenname oder Exceptiontext

Ausnahmen, die ausgelst werden

@throws Exception-Klassenname oder Exceptiontext

Synonym zu oben

{ @link verweis }

Einen eingebauten Verweis im Text; Parameter sind wie bei @see

1.2 Mit javadoc eine Dokumentation erstellen

um Dokumentation zu erzeugen, wird dem Konsolenprogramm javadoc als Parameter der Dateiname der zu kommentierenden Klasse bergeben

wenn man Dokumentationen fr das gesamte Verzeichnis erstellen mchte, gibt man alle Dateien mit der Endung .java an

$ javadoc Beispiel.java

$ javadoc *.java

Beispielklasse

de.assona.docs.Auto im Projekt Day_5

2. Umgang mit Zeichenketten2.1 Regulre Ausdrcke

Paket java.util.regex enthlt Klassen, mit sich leicht Zeichenketten gegen ein Muster prfen lassen

prinzipiell besteht das Erkennen immer aus dem Aufbau eines Pattern-Objekts mit dem regulren Ausdruck und der Prfung

public static void main(String[] args) {

String toMatch = "aaaab";

Pattern p = Pattern.compile("a*b");

Matcher m = p.matcher(toMatch);

boolean b1 = m.matches();

// oder krzer:

boolean b2 = Pattern.matches("a*b", toMatch);

System.out.println("b1: " + b1);

System.out.println("b2: " + b2);

}

Methodenbersicht der Klasse Pattern

static Pattern compile( String regex ) bersetzt den regulren Ausdruck in ein Pattern-Objekt.

static Pattern compile( String regex, int flags ) bersetzt den regulren Ausdruck in ein Pattern-Objekt mit Flags. Als Flags sind CASE_INSENSITIVE, MULTILINE, DOTALL, UNICODE_CASE und CANON_EQ erlaubt.

int flags() Liefert die Flags, nach denen geprft wird.

Matcher matcher( CharSequence input ) Liefert ein Matcher-Objekt, das prft.

static boolean matches( String regex, CharSequence input ) Liefert true, wenn der regulre Ausdruck regex auf die Eingabe passt.

String pattern() Liefert den regulren Ausdruck, den das Pattern reprsentiert.

2.2 Zerlegen von Zeichenketten

Java-Bibliothek bietet Klassen zum Zerlegen von Zeichenketten nach bestimmten Mustern

Token: Teil eines Strings, der durch Trennzeichen (Delimiter) von anderen Token getrennt wird

StringTokenizer

dient dazu, Zeichenketten in Token zu zerlegen

Trenner knnen frei gewhlt werden

als Trenner nur einzelne Zeichen (also keine Zeichenketten) mglich

public static void main(String[] args) {

String s = "Franz jagt im komplett verwahrlosten Taxi quer durch " + "Bayern.";

StringTokenizer st = new StringTokenizer(s, " ");

while (st.hasMoreTokens())

System.out.println(st.nextToken());

}

Methodenbersicht der Klasse StringTokenizer

StringTokenizer( String str, String delim, boolean returnDelims ) Ein String-Tokenizer fr str, wobei jedes Zeichen in delim als Trennzeichen gilt. Ist returnDelims gleich true, so sind auch die Trennzeichen Token der Aufzhlung.

StringTokenizer( String str, String delim ) Ein String-Tokenizer fr str, wobei alle Zeichen in delim als Trennzeichen gelten. Entspricht dem Aufruf von this(str, delim, false);

StringTokenizer( String str ) Ein String-Tokenizer fr str. Entspricht dem Aufruf von this(str, " \t\n\r\f", false);. Die Trennzeichen sind Leerzeichen, Tabulator, Zeilenende und Seitenvorschub.

boolean hasMoreTokens(), boolean hasMoreElements() Testet, ob weitere Token verfgbar sind. hasMoreElements() implementiert die Methode fr Enumeration.

String nextToken(), Object nextElement() Liefert das nchste Token vom String-Tokenizer. nextElement() existiert nur, damit der Tokenizer als Enumeration benutzt werden kann. Der weniger spezifische Ergebnistyp Object macht eine Typumwandlung erforderlich.

String nextToken( String delim ) Setzt die Delimiter-Zeichen neu und liefert anschlieend das nchste Token.

int countTokens() Zhlt die Anzahl der noch mglichen nextToken()-Methodenaufrufe, ohne die aktuelle Position zu berhren. Der Aufruf der Funktion ist nicht billig.

Scanner

seit Java 5 dabei (java.util Package)

gibt wie StringTokenizer auch Token fr Token aus; Delimiter kann hier allerdings ein regulrer Ausdruck sein

zustzlich lsst sich ber die Methode findInLine() eine Zeile suchen, auf die ein Ausdruck passt

nach Erzeugen bieten sich unterschiedliche nextXxx()-Methoden an, die das nchste Token einlesen und in ein gewnschtes Format konvertieren (z.B. in einen Double bei nextDouble())

ber gleich viele hasNextXxx()-Methoden lsst sich erfragen, ob noch ein Token folgt

public static void main(String[] args) {

// Von Standardeingabe soll ein int gelesen werden

Scanner scanner = new Scanner(System.in);

int i = scanner.nextInt();

// String s enthlt eine Zeile wie a := b

String s = "Url := http://java.sun.com";

scanner = new Scanner(s).useDelimiter("\\s*:=\\s*");

while (scanner.hasNext())

System.out.println(scanner.next());

}

Ausgabe

1

Url

http://java.sun.com

BreakIterator als Wort- und SatztrennerMethodenbersicht der Klasse BreakIterator

static BreakIterator getCharacterInstance()

static BreakIterator getCharacterInstance( Locale where ) Trennt nach Zeichen. Vergleichbar einer Iteration ber charAt().

static BreakIterator getSentenceInstance()

static BreakIterator getSentenceInstance( Locale where ) Trennt nach Stzen. Delimiter sind bliche Satz-Trenner wie ., !, ?.

static BreakIterator getWordInstance()

static BreakIterator getWordInstance( Locale where ) Trennt nach Wrtern. Trenner wie Leerzeichen und Satzzeichen gelten ebenfalls als Wrter.

static BreakIterator getLineInstance()

static BreakIterator getLineInstance( Locale where ) Trennt nicht nach Zeilen, wie der Name vermuten lsst, sondern ebenfalls nach Wrtern. Nur werden Satzzeichen, die am Word hngen, zum Wort hinzugezhlt. Praktisch ist dies fr Algorithmen, die Textblcke in eine bestimmte Breite bringen wollen. Ein Beispiel fr die drei Typen zeigt das gleich folgende Programm.

Beispiel

public static void main(String[] args) {

String helmutKohl = "Ich wei, dass ich 1945 fnfzehn war und "

+ "1953 achtzehn.";

BreakIterator iterator = BreakIterator.getWordInstance();

iterator.setText(helmutKohl);

out(helmutKohl, iterator);

helmutKohl = "Das deutsche Volk hat nun mal beschlossen, "

+ "weniger Kinder zu zeugen. "

+ "Das ist eine Sache, die wir nicht mal den "

+ "Sozialdemokraten anhngen knnen.";

iterator = BreakIterator.getSentenceInstance(Locale.GERMAN);

iterator.setText(helmutKohl);

out(helmutKohl, iterator);

}

static void out(String s, BreakIterator iter) {

int last = iter.first();

int next = iter.next();

for (; next != BreakIterator.DONE; next = iter.next()) {

System.out.println(s.subSequence(last, next));

last = next;

}

}

2.3 Formatieren von Ausgaben

Seit Java 5 realisieren die format()- und printf()-Funktionen eine Ausgabe, so wie sie unter C mit printf() gesetzt wurde.

Formatieren ber Format-Klassen: Allgemeines Formatierungsverhalten wird in einer abstrakten Klasse Format fixiert; konkrete Unterklassen wie NumberFormat und DateFormat nehmen sich spezielle Datenformate vor.

Formatieren mit format() aus String

String stellt mit statischer Methode format() Mglichkeit bereit, Zeichenketten nach Vorgabe zu formatieren

Beispiel: StringFormat.java

public static void main(String[] args) {

// Variable Anzahl an Argutmenten

Object[] arg = { Ulli, Tanja };

String s = String.format(Hallo %s. Es gab einen Anruf von %s., arg);

System.out.println(s); // Hallo Ulli. Es gab einen Anruf von Tanja.

// Mit der Schreibweise von Java 5 ist auch folgends mglich

String s1 = String.format(Hallo %s. Es gab einen Anruf von %s.,

Ulli, Tanja);

// Und auch

System.out.printf(Hallo %s. Es gab einen Anruf von %s., Ulli,

Tanja);

}

Formatspezifizierer

%n

Neue Zeile

%b

Boolean

%%

Prozentzeichen

%s

String

%c

Unicode-Zeichen

%d

Dezimalzahl

%x

Hexadezimalschreibweise

%t

Datum und Zeit

%f

Fliekommazahl

%e

Wissenschaftliche Notation

%n ergibt das/die Zeichen fr den Zeilenvorschub