Einführung in Dokumentationskommentare in Java im Rahmen der Lehre des Programmierens mit der Programmiersprache Java. [] (java javadoc java Dokumentation java), Lektion, Seite 720924
https://www.purl.org/stefan_ram/pub/java_dokumentationskommentare_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Dokumentationskommentare in Java

Direkt vor die Deklaration einer Methode kann ein Kommentar geschrieben werden, der die Schnittstelle  der Methode beschreibt. Wenn der Kommentar mit dem Zeichentripel "/**" eingeleitet wird, dann wird damit gekennzeichnet, daß er zur automatischen Herstellung von Dokumentationsdateien  verwendet werden soll.

Solch ein Kommentar wird auch als Dokumentationskommentar  (documentation comment , doc comment ) bezeichnet. Alle anderen Kommentare kann man auch als Implementationskommentare (implementation comments ) ansehen, da sie sich mit Aspekten der Implementation  beschäftigen sollten.

Normalerweise wird ein Dokumentationskommentar direkt vor  das zu Dokumentierende geschrieben. So finden sich in dem Beispielprogramm "Kuckuck3d.java" Dokumentationskommentare vor jeder Methodendeklaration.

Kuckuck3d.java
public final class Kuckuck3d { 
/** Den Refrain des Liedes "Auf einem Baum ein Kuckuck sass" ausgeben. */ 
public static void refrainAusgeben() 
{ java.lang.System.out.println( "Sim sa la dim, bam ba," ); 
java.lang.System.out.println( "Sa la du, sa la dim -" ); }
/** Das Lied "Auf einem Baum ein Kuckuck sass" ausgeben. */ 
public static void main( final java.lang.String[] args ) 
{ /* Kann man das nicht noch verkuerzen? */ 
{ java.lang.System.out.println( "Auf einem Baum ein Kuckuck, -" ); 
refrainAusgeben(); 
java.lang.System.out.println( "Auf einem Baum ein Kuckuck sass." ); } 
{ java.lang.System.out.println( "Da kam ein junger Jaeger, -" ); 
refrainAusgeben(); 
java.lang.System.out.println( "Da kam ein junger Jaegersmann." ); } 
{ java.lang.System.out.println( "Der schoss den armen Kuckuck, -" ); 
refrainAusgeben(); 
java.lang.System.out.println( "Der schoss den armen Kuckuck tot." ); }}}

Zum Java -Entwicklungssystem gehört ein Werkzeug "javadoc", das es erlaubt, Dokumentationsdateien automatisch aus einer wie beschrieben mit Dokumentationskommentaren angereicherten Quelldatei zu erzeugen. Dieses Werkzeug bietet noch mehr Möglichkeiten als hier beschrieben—In dieser Lektion wird nur ein einfaches Beispiel der Verwendung vorgestellt.

Konsole [Ausschnitt]
javadoc Kuckuck3d.java
Loading source file Kuckuck3d.java... 
Constructing Javadoc information... 
Standard Doclet version 1.4.0

Das Werkzeug "javadoc" erzeugt dann unter anderem eine HTML -Datei "Kuckuck3d.html" mit der gewünschten Dokumentation.

Kuckuck3d [Dokumentation, Ausschnitt]
Method Summary 
static void main( java.lang.String[] args ) 
Das Lied "Auf einem Baum ein Kuckuck sass" ausgeben. 
static void refrainAusgeben() 
Den Refrain des Liedes "Auf einem Baum ein Kuckuck sass" ausgeben.

Auch der Kommentar "/* Kann man das nicht noch verkuerzen? */" wird nicht in die Dokumentation aufgenommen, weil er nicht als Dokumentationskommentar gekennzeichnet ist.

Das Zeichentripel "///" kann nicht verwendet werden, um einen einzeiligen Dokumentationskommentar einzuleiten.

Mit der Option "encoding" und der Option "docencoding" wird die Codierung des Quelltextes bzw. der zu erzeugenden Dokumentation festlegt. Die möglichen Werte sind wie bei der Option "encoding" von des Kommandos "javac". Eine Angabe dieser Optionen kann nötig werden, wenn die Quelldateien nicht in der Codierung "US-ASCII" vorliegen.

Aufruf mit Angabe von Codierungen [Ausschnitt]
javadoc -encoding UTF-8 -docencoding UTF-8 Kuckuck3d.java

Dokumentation

Mit der ersten mit "@" anfangenden Zeile eines Dokumentationskommentars wird die allgemeine Beschreibung der Methode "wochentage" beendet. Die Markierung "@return" kennzeichnet dann die Beschreibung des Wertes einer Anwendung einer Wertmethode.

Dokumentation [Ausschnitt]
wochentage 
int wochentage() 
Ergibt Zahl der Wochentage.  
Returns: 
Zahl der Wochentage

Main.java
public final class Main 
{ /** 
* Ergibt Zahl der Wochentage. 
* @return Zahl der Wochentage 
*/ 
public static int wochentage(){ return 7; }
/** 
* Ausgabe der Anzahl der Tage in zwei Wochen. 
*/ 
public static void main( final java.lang.String[] args ) 
{ java.lang.System.out.println( 2 * wochentage() ); }}

Parameterdokumentation

Account.java

final class Account
{ private double balance;

/** Initialize the account. */

public Account(){ balance = 0.; }

/** Converts a string representation of a number
to a double value.
@param text the string to be converted
@return the double value of the text */

private static double val( final String text )
{ return new Double( text ).doubleValue(); }

/** Represents a double value by a string.
@param number the number to be represented.
@return the string representing the number */

private static String str( final double number )
{ return new Double( number ).toString(); }

/** Deposit money into an account.
@param amount the money to be deposited into the account
@return the money accepted and added to the balance */

public String deposit( final String amount )
{ double amountValue = val( amount );
balance += amountValue; return str( amountValue ); }

/** Retrieve the balance of the account.
@return the current balance of the account */

public String balance(){ return str( balance ); }}

AccountClient.java
public final class AccountClient
{ public static void main( final java.lang.String[] args )
{ final Account a = new Account();
java.lang.System.out.println( a.deposit( "0.1" ) );
java.lang.System.out.println( a.balance() );
java.lang.System.out.println( a.deposit( "0.1" ) );
java.lang.System.out.println( a.balance() );
java.lang.System.out.println( a.deposit( "0.1" ) );
java.lang.System.out.println( a.balance() ); }}
System.out
0.1
0.1
0.1
0.2
0.1
0.30000000000000004

Dokumentation eines Konstruktors mit Parametern

PersonName.java
/** The name of a person (last name and first name) */
class PersonName  
{ final private String last;  
final private String first;
/** Initialize the person name. 
* @param last the last name  
* @param first the last name */
PersonName( final String last, final String first ) 
{ this.last = last; this.first = first; }
/** compare the Name to an object.  
* @return 0 */
int compareTo( final Object other ) 
{ return 0; }}

Dokumentation

Um ein Paket zu dokumentieren sollte eine Datei "package.html" im Verzeichnis des Paketes erstellt werden. Dabei wird das Paket vor der "h2"-Überschrift "Package Specification" kurz charakterisiert und kann nach dieser Überschrift ausführlicher beschrieben werden. Diese Angaben werden dann in die erstellte Dokumentation mit einbezogen. Ohne Kenntnisse in der Sprache HTML  kann die hier angegebene Datei "package.html" als Vorlage verwendet werden, in der die beiden deutschsprachigen Absätze durch einen eigenen Text ersetzt werden. Dabei sollten aber Sonderzeichen (wie Umlaute oder das Kleiner-Zeichen) vermieden werden oder zumindest die Regeln zum Schreiben von Sonderzeichen mit HTML  erlernt werden.

package.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" 
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html><head><title>komm</title></head><body>
Unterstuetzung fuer Kommunikation.
<h2>Package Specification</h2>
Dieses Paket enthaelt Klassen fuer die Kommunikation 
mit Menschen, wie beispielsweise eine Klasse zur 
Begruessung von Menschen.
</body></html>

Die öffentliche Schnittstelle

Das Wort „Schnittstelle“ hat zwei Bedeutungen: Zum einen bezeichnet es das, was in Java  mit dem Schlüsselworte »interface« deklariert wird. Zum anderen meint man damit, all das, was man von „außen“ von einer Klasse (einem Objekt, einem Feld oder einer Methode) sehen kann. Dies ist bei einer Methode im wesentlichen die „abstrakte Methode“, also die Beschreibung der Methode von den Schlüsselwörtern ganz am Anfang ihrer Deklaration bis hin zur Angabe ihres Deskriptors (also der Rückgabespezifikation und der Signatur), jedoch ohne die Implementation der Methode, also den Hauptblock der Methode (das, was bei der Methodendeklaration in geschweiften Klammern steht). Bei einem Feld ist es der Typ und der Name. Bei einer Klasse der Name und die Gesamtheit der öffentlichen Schnittstellen der ISBN public-Einträge.

Die Unterscheidung zwischen Klienten und öffentlicher Schnittstelle

Ein Programmteil, der eine öffentliche Schnittstelle einer Klasse nutzt, wird auch als Klient dieser Klasse bezeichnet.

Kontrakt

Der Kontrakt einer Dokumentation umfaßt die Aussagen, welche die Dokumentation über das Dokumentierte macht.

Die semantische öffentlicher Schnittstelle

Die semantische Schnittstelle besteht aus der öffentlichen Schnittstelle und den Kontrakten ihrer Dokumentation.

Ariane 5

Wenn die Einschränkungen des Moduls für die Ariane 4 gut dokumentiert gewesen wären, wäre der Fehler wahrscheinlich nicht passiert.

Daraus folgt, daß Module, welche nicht (gut) dokumentiert sind, nicht eingesetzt werden sollten, wenn die Probleme mit der Software gefährlich werden könnten.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram720924 stefan_ram:720924 java javadoc java Dokumentation java javadoc howto; java Dokumentationskommentar java Dokumentationskommentare java Dokumentations-Kommentar java Dokumentations-Kommentare automatisch Dokumentation aus Quellcode erzeugen source, source code,sourcecode, Programmier sprache java, Java Programm Java Programmiersprache Java Sprache Java Programmierung Programmieren in Java, Die Programmiersprache Java Javapgrammierung, Java-Programmierung, Java2, Java1.2, Java1.3, Java1.4, Java1.5, Java 2, Java 1.2, Java 1.3, Java 1.4, Java 1.5, Java 1.6, Java 1.7, Java 1.8, Java 8, Java 1.9, Java 9, Tiger, Dolphin, objektorientierte Programmierung, Java sun, , Softwareentwicklung, Software-Entwicklung, Software Entwicklung, Softwareprogrammierung, Software-Programmierung, Software Programmierung, Softwareherstellung, Software-Herstellung, Software Herstellung, Softwareerstellung, Software-Erstellung, Software Erstellung, Softwareengineering, Software-Engineering, Software Engineering, Softwareenginering, Software-Enginering, Software Enginering, Softwaremethodik, Software-Methodik, Software Methodik, Programmiermethodik, Programmier-Methodik, Programmier Methodik, Softwaredidaktik, Software-Didaktik, Software Didaktik, Methodik des Programmierens, Didaktik des Programmierens, Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens, Programmieren, Programmierung, Computer Science, Informatik, Informatik, Informationspädagogik, Informationspaedagogik, Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen, Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still, , Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd720924, slrprddef720924, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/java_dokumentationskommentare_de