SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Tags, Overview-Seiten, Stil-
             Konventionen, Erzeugen der HTML
             Dokumentation von Hand und durch
             Ant

LMU - Softwareentwicklungspraktikum WS09/10 - V17
• Viele Programmierer an großem Projekt
• Immer komplexere Klassen
   public static int ichMacheWasTolles(int a)
   {
       int y = 0;
       int z = 0;
       while (y != a)
       {                                            Aussagekräftiger Namen
           z = z + 2*y + 1;

       }
           y = y + 1;                               Beschreibung
       return z;
   }



LMU - Softwareentwicklungspraktikum WS09/10 - V17                         2
Ziel:
  Beschreibung muss so detailliert
  sein, dass man eine Methode nur
      anhand der Beschreibung
         implementieren kann

LMU - Softwareentwicklungspraktikum WS09/10 - V17   3
• Programm macht genau das, was in
  Beschreibung steht
• Vertrag zwischen Benutzer der API und der
  Implementierung
• Beschreibung unabhängig von Implementierung
• Kein Beispielcode in Beschreibung  verlinken


LMU - Softwareentwicklungspraktikum WS09/10 - V17   4
• In Java geschrieben
• Interpretiert javadoc Kommentare vor
  Methoden, Klassen, Interfaces, Klassenvariablen
      /** … */
• HTML Syntax für Links, Bilder, Format, etc.



LMU - Softwareentwicklungspraktikum WS09/10 - V17   5
•    Zeilen bündig mit Code
•    Erste Zeile: /**
•    Jede Zeile beginnt mit: * (optional, aber schön)
•    Erster Satz ist Beschreibung in Übersicht
•    {@link KlassenName}  Link zu Klasse
•    Paragraphen mit <p> … </p>


LMU - Softwareentwicklungspraktikum WS09/10 - V17   6
• Zeilenumbrüche nicht automatisch: Für
  Ausgabe mit <br>, in Code nach 80 Zeichen
• Sonderzeichen HTML maskiert
• Auf Beschreibung folgt Leerzeile
• Erste Zeile, welche mit @ beginnt: Ende der
  Beschreibung
• Letzte Zeile schließt Kommentar mit */

LMU - Softwareentwicklungspraktikum WS09/10 - V17   7
• Unabhängig von Implementierung
• Kommentare werden vererbt, wenn nicht
  überschrieben




LMU - Softwareentwicklungspraktikum WS09/10 - V17   8
• Kurze, vollständige Zusammenfassung der
  Methode / Klasse / Interface, erscheint auf
  Übersichtsseiten
• Beginnt mit beschreibendem Verb
• Unterschied bei überladenen Methoden klarstellen
• Ende des Satzes ist bei Punkt mit Leerzeichen
      /** Simulation von Dr. Bauers Melkalgorithmus */

     Lösung:
      /** Simulation von Dr.&nbsp;Bauers Melkalgorithmus */
      /** Simulation von Dr.<!-- --> Bauers Melkalgorithmus */

LMU - Softwareentwicklungspraktikum WS09/10 - V17             9
/**
 * Berechnet das Quadrat einer Zahl.
 * Gibt die berechnete Zahl zur&uuml;ck.
 *
 * @param a
 * @return
 */
 public static int quadrat(int a)
 {
     int y = 0;
     int z = 0;                                     Aussagekräftiger Namen
     while (y != a)
     {                                              Beschreibung
         z = z + 2*y + 1;

     }
         y = y + 1;
                                                    Alles vorhanden für
 }
     return z;
                                                     andere Implementierung
LMU - Softwareentwicklungspraktikum WS09/10 - V17                        10
• Schlüssbegriffe mit <code> … </code>
      -    Java Keywords
      -    Package Namen
      -    Klassen
      -    Methoden
      -    Objektvariablen
      -    Interfaces
      -    Parameter
      -    (Code Beispiele, extern!)




LMU - Softwareentwicklungspraktikum WS09/10 - V17   11
• Inline {@link} Links bedacht nutzen, nur einmal
  pro API Verweis
• prägnant, nicht zwingend vollständige Sätze
• 3. Person
• Abkürzungen vermeiden
• Beschreibung zusätzlich zum aussagekräftigen
  Methodennamen

LMU - Softwareentwicklungspraktikum WS09/10 - V17   12
Tag & Parameter                         Ausgabe                    Verwendung
@author name                            Autoreneintrag             Klasse, Interface
@version version                        Versionseintrag            Klasse, Interface
@param name                             Parameterbeschreibung      Methode
 description
@return description                     Beschreibung des return-   Methode
                                        Werts
@exception classname                    Beschreibung einer         Methode
 description                            Ausnahme
@see reference                          Querverweis                Klasse, Interface,
                                                                   Instanzvariable, Methode
@deprecated                             veraltete Methode          Methode
 description

LMU - Softwareentwicklungspraktikum WS09/10 - V17                                             13
• @author
       – erzeugt einen Autoreneintrag
       – chronologische Reihenfolge


• @version
       – trägt die Version ein
       – Beispielformat: mm/dd/yy


LMU - Softwareentwicklungspraktikum WS09/10 - V17   14
/**
  * EinfacheMathematik stellt
  * einfache mathematische Ope-
  * rationen zur Verf&uuml;gung.
  *
  * @author Sven Osterwald
  * @version 11/12/09
  */
public class EinfacheMathematik
{
     //...
}


LMU - Softwareentwicklungspraktikum WS09/10 - V17   15
• @param
  – Parameterbeschreibung
  – gleiche Reihenfolge wie Methodendeklaration
  – Name des Parameters, nicht den Typ!
• @return
  – beschreibt Rückgabewert
  – nötig in allen Methoden mit Rückgabewert
• vgl. Eclipse-Hilfseinblendungen

                                                  16
/**
 * Berechnet das Produkt zweier Werte.
 *
 * @param a      erster Faktor
 * @param b      zweiter Faktor
 * @param print Ausgabe des Produkts?
 * @return       Produkt zweier Faktoren
 */
public int produkt(int a, int b,
   boolean print) {
      int c = a * b;
      if(print) {
          System.out.println(
            a+" + "+b+" = "+c);
      }
      return c;
}


    LMU - Softwareentwicklungspraktikum WS09/10 - V17   17
• @throws
       – Beschreibung einer möglichen Exception
       – identisch mit @exception

• @deprecated
       – veraltete Methode
       – Angabe der Version, in der Methode entfernt
         wurde
       – Verweis auf neue Methode

LMU - Softwareentwicklungspraktikum WS09/10 - V17      18
/**
  * Berechnet das Produkt zweier Werte.
  *
  * @throws     IllegalArgumentException falls Argumente falsch sind
  * @deprecated ersetzt seit Version 11/12/09 durch
  *             {@link #produkt(int, int, boolean)}
  */
public void produkt() throws IllegalArgumentException {
     //berechne das Produkt...
}




 LMU - Softwareentwicklungspraktikum WS09/10 - V17                 19
• @see
       – Verweis innerhalb der Dokumentation
       – möglich auf Instanzvariablen, Konstruktoren, Methoden,
         Klassen, Packages
       – Beispiele:
             •   @see      #variable
             •   @see      #Konstruktor(Typ)
             •   @see      #methode(Typ, Typ)
             •   @see      Klasse
             •   @see      Klasse#methode(Typ)
             •   @see      package.Klasse



LMU - Softwareentwicklungspraktikum WS09/10 - V17                 20
/**
 * Beispiele für Verweise in javadoc
 *
 * @see #faktor
 * @see #EinfacheMathematik()
 * @see #produkt(int, int, boolean)
 * @see EinfacheMathematik
 */




LMU - Softwareentwicklungspraktikum WS09/10 - V17   21
• Die Dokumentation von Packages beschreibt
  dessen gesamten Inhalt und Zweck und ist
  daher meist umfangreicher
• Beinhaltet die logische Zusammenfassung und
  Gruppierung der einzelnen Klassen und
  Interfaces
• Verweist auf andere Java-Elemente, die in
  Zusammenhang mit diesem Programm wichtig
  sind

LMU - Softwareentwicklungspraktikum WS09/10 - V17   22
• Packages werden gesondert in einer eignen
  package.html dokumentiert
• Nutzen von Java-Tags und HTML möglich
• Erster Satz im <body>- Bereich wird für die
  Übersicht genutzt
• Eine Beispiel-Package-Dokumentation ist auf
  der Webseite verlinkt


LMU - Softwareentwicklungspraktikum WS09/10 - V17   23
javadoc
• Die Dokumentation kann über die
  Kommandozeile mit dem Befehl javadoc
  <parameter> erzeugt werden
• Die wichtigsten Konfigurationen im Überblick
       javadoc *.java
         Erzeugt Javadoc für alle .java-Dateien im gleichen Verzeichnis
       javadoc –d doc *.java
         Erzeugt Javadoc im Unterordner doc/
       javadoc –public *.java
         Nur Elemente, die als public gekennzeichnet sind, werden bei der
         Dokumentation berücksichtigt.
LMU - Softwareentwicklungspraktikum WS09/10 - V17                           24
• Dokumentationen werden
                                                      package-spezifisch in
                                                      Unterverzeichnissen
                                                      abgelegt




LMU - Softwareentwicklungspraktikum WS09/10 - V17                              25
LMU - Softwareentwicklungspraktikum WS09/10 - V17   26
• Eclipse bringt einen eigenen Assistenten zum
  Erstellen von Javadoc mit




                                                    Project » Generate Javadoc…



LMU - Softwareentwicklungspraktikum WS09/10 - V17                             27
Pfad zu javadoc.exe des
                                                    Java JDK

                                                    Quelldateien


                                                    Zielordner




LMU - Softwareentwicklungspraktikum WS09/10 - V17                        28
Titel
                                                    Ausgabe-Optionen




LMU - Softwareentwicklungspraktikum WS09/10 - V17                      29
zusätzliche Parameter des
                                                      javadoc-Befehls




LMU - Softwareentwicklungspraktikum WS09/10 - V17                          30
• ANT kann über die build.xml ebenfalls
  Javadoc generieren
• Tag dazu heißt javadoc und bietet ähnliche
  Möglichkeiten wie die Kommandozeile




LMU - Softwareentwicklungspraktikum WS09/10 - V17   31
<javadoc
 sourcepath="src"                                   Quelle, Ziel, einzubeziehende
 destdir="doc"
 packagesnames="lib,gui,cli"                          Packages
  access="public"
                                                    Sichtbarkeitslevel der
  doctitle="Game Of Life - V17"                        Methoden
  author="true"
  use="true"
  nodeprecated="false"                              Aussehen
  nodeprecatedlist="false"
  noindex="false"
  nonavbar="false"
  notree="false"
  splitindex="true"
  use="true"
  version="true"/>


LMU - Softwareentwicklungspraktikum WS09/10 - V17                                   32
… oder einfacher mit Eclipse:




                                                    Javadoc Assistent 3/3



LMU - Softwareentwicklungspraktikum WS09/10 - V17                           33
Weitere Infos findet ihr unter:
     http://www.dbs.ifi.lmu.de/Lehre/SEP/WS0910/
     gruppen/sep0910/v/V17/

Gruppe V17:
     Frederik Brudy, Sven Osterwald, Max Kleucker

Contenu connexe

Tendances

Tendances (11)

Codeblocks manual de_2012
Codeblocks manual de_2012Codeblocks manual de_2012
Codeblocks manual de_2012
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for Beginners
 
C Sharp Einfuehrung Teil 1
C Sharp Einfuehrung Teil 1C Sharp Einfuehrung Teil 1
C Sharp Einfuehrung Teil 1
 
C API for Lotus Notes & Domino
C API for Lotus Notes & DominoC API for Lotus Notes & Domino
C API for Lotus Notes & Domino
 
Ein Gopher im Netz
Ein Gopher im NetzEin Gopher im Netz
Ein Gopher im Netz
 
Einführung Maven
Einführung MavenEinführung Maven
Einführung Maven
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
Iks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-Tests
Iks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-TestsIks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-Tests
Iks Sonderdruck Eclipse Magazin Mai 2010: Automatisierte SWTBot-Tests
 
Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)
 
OSGi und Spring MVC - inovex BrownBag
OSGi und Spring MVC - inovex BrownBag OSGi und Spring MVC - inovex BrownBag
OSGi und Spring MVC - inovex BrownBag
 
Scala und Lift
Scala und LiftScala und Lift
Scala und Lift
 

En vedette

Sogeti Short DE
Sogeti Short DESogeti Short DE
Sogeti Short DEmschoeni
 
Eine (sehr) kurze Einführung in formale Ontologien
Eine (sehr) kurze Einführung in formale OntologienEine (sehr) kurze Einführung in formale Ontologien
Eine (sehr) kurze Einführung in formale Ontologienmahok
 
Ws critical chainproject_0408
Ws critical chainproject_0408Ws critical chainproject_0408
Ws critical chainproject_0408ICV
 
B2B in Zeiten von Social Media - Praxis & Zahlen
B2B in Zeiten von Social Media - Praxis & ZahlenB2B in Zeiten von Social Media - Praxis & Zahlen
B2B in Zeiten von Social Media - Praxis & ZahlenAnja Bonelli
 

En vedette (6)

Sogeti Short DE
Sogeti Short DESogeti Short DE
Sogeti Short DE
 
SOA in Kundenprojekten
SOA in KundenprojektenSOA in Kundenprojekten
SOA in Kundenprojekten
 
Eine (sehr) kurze Einführung in formale Ontologien
Eine (sehr) kurze Einführung in formale OntologienEine (sehr) kurze Einführung in formale Ontologien
Eine (sehr) kurze Einführung in formale Ontologien
 
Ws critical chainproject_0408
Ws critical chainproject_0408Ws critical chainproject_0408
Ws critical chainproject_0408
 
Capgemini - Urban Information System
Capgemini - Urban Information SystemCapgemini - Urban Information System
Capgemini - Urban Information System
 
B2B in Zeiten von Social Media - Praxis & Zahlen
B2B in Zeiten von Social Media - Praxis & ZahlenB2B in Zeiten von Social Media - Praxis & Zahlen
B2B in Zeiten von Social Media - Praxis & Zahlen
 

Similaire à Referat T13 Javadoc

EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heutePhilipp Burgmer
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickPhilipp Burgmer
 
Metaprogrammierung und Reflection
Metaprogrammierung und ReflectionMetaprogrammierung und Reflection
Metaprogrammierung und ReflectionStefan Marr
 
Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3Peter Kraume
 
Besseren Java Code mit Type Annotations
Besseren Java Code mit Type AnnotationsBesseren Java Code mit Type Annotations
Besseren Java Code mit Type Annotationsdzuvic
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code CookbookUlrich Krause
 
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...Lukas Eder
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresMatthias Jauernig
 
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...GFU Cyrus AG
 
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSPChristian Guenther
 
Introduction to JEE
Introduction to JEEIntroduction to JEE
Introduction to JEEguestc44b7b
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Jürg Stuker
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenHendrik Lösch
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit WordpressBlogwerk AG
 
SLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauenSLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauenSchlomo Schapiro
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions
 
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur UmsetzungPuppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur Umsetzunginovex GmbH
 

Similaire à Referat T13 Javadoc (20)

Web Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 BetaWeb Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 Beta
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heute
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
 
FLOW3-Workshop F3X12
FLOW3-Workshop F3X12FLOW3-Workshop F3X12
FLOW3-Workshop F3X12
 
Metaprogrammierung und Reflection
Metaprogrammierung und ReflectionMetaprogrammierung und Reflection
Metaprogrammierung und Reflection
 
Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3
 
Besseren Java Code mit Type Annotations
Besseren Java Code mit Type AnnotationsBesseren Java Code mit Type Annotations
Besseren Java Code mit Type Annotations
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code Cookbook
 
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core Middlewares
 
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
 
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
06 Software Development Guidelines der COMLINE Cloud Service Platform - CSP
 
Introduction to JEE
Introduction to JEEIntroduction to JEE
Introduction to JEE
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
 
Entwickeln mit Wordpress
Entwickeln mit WordpressEntwickeln mit Wordpress
Entwickeln mit Wordpress
 
SLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauenSLAC 2008 RPMs selber bauen
SLAC 2008 RPMs selber bauen
 
react-de.pdf
react-de.pdfreact-de.pdf
react-de.pdf
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
 
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur UmsetzungPuppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
 

Referat T13 Javadoc

  • 1. Tags, Overview-Seiten, Stil- Konventionen, Erzeugen der HTML Dokumentation von Hand und durch Ant LMU - Softwareentwicklungspraktikum WS09/10 - V17
  • 2. • Viele Programmierer an großem Projekt • Immer komplexere Klassen public static int ichMacheWasTolles(int a) { int y = 0; int z = 0; while (y != a) { Aussagekräftiger Namen z = z + 2*y + 1; } y = y + 1; Beschreibung return z; } LMU - Softwareentwicklungspraktikum WS09/10 - V17 2
  • 3. Ziel: Beschreibung muss so detailliert sein, dass man eine Methode nur anhand der Beschreibung implementieren kann LMU - Softwareentwicklungspraktikum WS09/10 - V17 3
  • 4. • Programm macht genau das, was in Beschreibung steht • Vertrag zwischen Benutzer der API und der Implementierung • Beschreibung unabhängig von Implementierung • Kein Beispielcode in Beschreibung  verlinken LMU - Softwareentwicklungspraktikum WS09/10 - V17 4
  • 5. • In Java geschrieben • Interpretiert javadoc Kommentare vor Methoden, Klassen, Interfaces, Klassenvariablen /** … */ • HTML Syntax für Links, Bilder, Format, etc. LMU - Softwareentwicklungspraktikum WS09/10 - V17 5
  • 6. Zeilen bündig mit Code • Erste Zeile: /** • Jede Zeile beginnt mit: * (optional, aber schön) • Erster Satz ist Beschreibung in Übersicht • {@link KlassenName}  Link zu Klasse • Paragraphen mit <p> … </p> LMU - Softwareentwicklungspraktikum WS09/10 - V17 6
  • 7. • Zeilenumbrüche nicht automatisch: Für Ausgabe mit <br>, in Code nach 80 Zeichen • Sonderzeichen HTML maskiert • Auf Beschreibung folgt Leerzeile • Erste Zeile, welche mit @ beginnt: Ende der Beschreibung • Letzte Zeile schließt Kommentar mit */ LMU - Softwareentwicklungspraktikum WS09/10 - V17 7
  • 8. • Unabhängig von Implementierung • Kommentare werden vererbt, wenn nicht überschrieben LMU - Softwareentwicklungspraktikum WS09/10 - V17 8
  • 9. • Kurze, vollständige Zusammenfassung der Methode / Klasse / Interface, erscheint auf Übersichtsseiten • Beginnt mit beschreibendem Verb • Unterschied bei überladenen Methoden klarstellen • Ende des Satzes ist bei Punkt mit Leerzeichen /** Simulation von Dr. Bauers Melkalgorithmus */ Lösung: /** Simulation von Dr.&nbsp;Bauers Melkalgorithmus */ /** Simulation von Dr.<!-- --> Bauers Melkalgorithmus */ LMU - Softwareentwicklungspraktikum WS09/10 - V17 9
  • 10. /** * Berechnet das Quadrat einer Zahl. * Gibt die berechnete Zahl zur&uuml;ck. * * @param a * @return */ public static int quadrat(int a) { int y = 0; int z = 0; Aussagekräftiger Namen while (y != a) { Beschreibung z = z + 2*y + 1; } y = y + 1; Alles vorhanden für } return z; andere Implementierung LMU - Softwareentwicklungspraktikum WS09/10 - V17 10
  • 11. • Schlüssbegriffe mit <code> … </code> - Java Keywords - Package Namen - Klassen - Methoden - Objektvariablen - Interfaces - Parameter - (Code Beispiele, extern!) LMU - Softwareentwicklungspraktikum WS09/10 - V17 11
  • 12. • Inline {@link} Links bedacht nutzen, nur einmal pro API Verweis • prägnant, nicht zwingend vollständige Sätze • 3. Person • Abkürzungen vermeiden • Beschreibung zusätzlich zum aussagekräftigen Methodennamen LMU - Softwareentwicklungspraktikum WS09/10 - V17 12
  • 13. Tag & Parameter Ausgabe Verwendung @author name Autoreneintrag Klasse, Interface @version version Versionseintrag Klasse, Interface @param name Parameterbeschreibung Methode description @return description Beschreibung des return- Methode Werts @exception classname Beschreibung einer Methode description Ausnahme @see reference Querverweis Klasse, Interface, Instanzvariable, Methode @deprecated veraltete Methode Methode description LMU - Softwareentwicklungspraktikum WS09/10 - V17 13
  • 14. • @author – erzeugt einen Autoreneintrag – chronologische Reihenfolge • @version – trägt die Version ein – Beispielformat: mm/dd/yy LMU - Softwareentwicklungspraktikum WS09/10 - V17 14
  • 15. /** * EinfacheMathematik stellt * einfache mathematische Ope- * rationen zur Verf&uuml;gung. * * @author Sven Osterwald * @version 11/12/09 */ public class EinfacheMathematik { //... } LMU - Softwareentwicklungspraktikum WS09/10 - V17 15
  • 16. • @param – Parameterbeschreibung – gleiche Reihenfolge wie Methodendeklaration – Name des Parameters, nicht den Typ! • @return – beschreibt Rückgabewert – nötig in allen Methoden mit Rückgabewert • vgl. Eclipse-Hilfseinblendungen 16
  • 17. /** * Berechnet das Produkt zweier Werte. * * @param a erster Faktor * @param b zweiter Faktor * @param print Ausgabe des Produkts? * @return Produkt zweier Faktoren */ public int produkt(int a, int b, boolean print) { int c = a * b; if(print) { System.out.println( a+" + "+b+" = "+c); } return c; } LMU - Softwareentwicklungspraktikum WS09/10 - V17 17
  • 18. • @throws – Beschreibung einer möglichen Exception – identisch mit @exception • @deprecated – veraltete Methode – Angabe der Version, in der Methode entfernt wurde – Verweis auf neue Methode LMU - Softwareentwicklungspraktikum WS09/10 - V17 18
  • 19. /** * Berechnet das Produkt zweier Werte. * * @throws IllegalArgumentException falls Argumente falsch sind * @deprecated ersetzt seit Version 11/12/09 durch * {@link #produkt(int, int, boolean)} */ public void produkt() throws IllegalArgumentException { //berechne das Produkt... } LMU - Softwareentwicklungspraktikum WS09/10 - V17 19
  • 20. • @see – Verweis innerhalb der Dokumentation – möglich auf Instanzvariablen, Konstruktoren, Methoden, Klassen, Packages – Beispiele: • @see #variable • @see #Konstruktor(Typ) • @see #methode(Typ, Typ) • @see Klasse • @see Klasse#methode(Typ) • @see package.Klasse LMU - Softwareentwicklungspraktikum WS09/10 - V17 20
  • 21. /** * Beispiele für Verweise in javadoc * * @see #faktor * @see #EinfacheMathematik() * @see #produkt(int, int, boolean) * @see EinfacheMathematik */ LMU - Softwareentwicklungspraktikum WS09/10 - V17 21
  • 22. • Die Dokumentation von Packages beschreibt dessen gesamten Inhalt und Zweck und ist daher meist umfangreicher • Beinhaltet die logische Zusammenfassung und Gruppierung der einzelnen Klassen und Interfaces • Verweist auf andere Java-Elemente, die in Zusammenhang mit diesem Programm wichtig sind LMU - Softwareentwicklungspraktikum WS09/10 - V17 22
  • 23. • Packages werden gesondert in einer eignen package.html dokumentiert • Nutzen von Java-Tags und HTML möglich • Erster Satz im <body>- Bereich wird für die Übersicht genutzt • Eine Beispiel-Package-Dokumentation ist auf der Webseite verlinkt LMU - Softwareentwicklungspraktikum WS09/10 - V17 23
  • 24. javadoc • Die Dokumentation kann über die Kommandozeile mit dem Befehl javadoc <parameter> erzeugt werden • Die wichtigsten Konfigurationen im Überblick javadoc *.java Erzeugt Javadoc für alle .java-Dateien im gleichen Verzeichnis javadoc –d doc *.java Erzeugt Javadoc im Unterordner doc/ javadoc –public *.java Nur Elemente, die als public gekennzeichnet sind, werden bei der Dokumentation berücksichtigt. LMU - Softwareentwicklungspraktikum WS09/10 - V17 24
  • 25. • Dokumentationen werden package-spezifisch in Unterverzeichnissen abgelegt LMU - Softwareentwicklungspraktikum WS09/10 - V17 25
  • 27. • Eclipse bringt einen eigenen Assistenten zum Erstellen von Javadoc mit Project » Generate Javadoc… LMU - Softwareentwicklungspraktikum WS09/10 - V17 27
  • 28. Pfad zu javadoc.exe des Java JDK Quelldateien Zielordner LMU - Softwareentwicklungspraktikum WS09/10 - V17 28
  • 29. Titel Ausgabe-Optionen LMU - Softwareentwicklungspraktikum WS09/10 - V17 29
  • 30. zusätzliche Parameter des javadoc-Befehls LMU - Softwareentwicklungspraktikum WS09/10 - V17 30
  • 31. • ANT kann über die build.xml ebenfalls Javadoc generieren • Tag dazu heißt javadoc und bietet ähnliche Möglichkeiten wie die Kommandozeile LMU - Softwareentwicklungspraktikum WS09/10 - V17 31
  • 32. <javadoc sourcepath="src" Quelle, Ziel, einzubeziehende destdir="doc" packagesnames="lib,gui,cli" Packages access="public" Sichtbarkeitslevel der doctitle="Game Of Life - V17" Methoden author="true" use="true" nodeprecated="false" Aussehen nodeprecatedlist="false" noindex="false" nonavbar="false" notree="false" splitindex="true" use="true" version="true"/> LMU - Softwareentwicklungspraktikum WS09/10 - V17 32
  • 33. … oder einfacher mit Eclipse: Javadoc Assistent 3/3 LMU - Softwareentwicklungspraktikum WS09/10 - V17 33
  • 34. Weitere Infos findet ihr unter: http://www.dbs.ifi.lmu.de/Lehre/SEP/WS0910/ gruppen/sep0910/v/V17/ Gruppe V17: Frederik Brudy, Sven Osterwald, Max Kleucker