پنج شنبه ۱۱ بهمن ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش جاوا - مستندسازی

زبان جاوا سه نوع نظر (comment) را پشتیبانی می‌کند:

شماره نظر و توضیحات
1

/* متن */

کامپایلر هر چیزی را از /* تا */ نادیده می‌گیرد.

2

//متن

کامپایلر هر چیزی را از // تا انتهای خط نادیده می‌گیرد.

3

/** مستندسازی */

این یک نظر مستندسازی است که به طور کلی به آن نظر مستند گفته می‌شود. ابزار JDK javadoc از نظرات مستند برای تهیه مستندات تولید شده به صورت خودکار استفاده می‌کند.

این فصل درباره توضیح Javadoc است. خواهیم دید چگونه می‌توانیم از Javadoc برای تولید مستندات مفید برای کد جاوا استفاده کنیم.

چیستی Javadoc؟

Javadoc ابزاری است که با JDK همراه است و برای تولید مستندات کد جاوا به فرمت HTML از کد منبع جاوا استفاده می‌شود و نیاز به مستندسازی به فرمت مشخصی دارد.

مثال ساده‌ای را می‌توانید در زیر مشاهده کنید که خطوط داخل /*...*/ نظرات چندخطی جاوا هستند. به طور مشابه، خطی که به // پیش می‌آید، یک نظر یک خطی جاوا است.

مثال


/**
* The HelloWorld program implements an application that
* simply displays "Hello World!" to the standard output.
*
* @author  Zara Ali
* @version 1.0
* @since   2014-03-31 
*/
public class HelloWorld {

   public static void main(String[] args) {
      // Prints Hello, World! on standard output.
      System.out.println("Hello World!");
   }
}

شما می‌توانید برچسب‌های HTML مورد نیاز را در قسمت توضیحات قرار دهید. به عنوان مثال، مثال زیر از <h1>...</h1> برای عنوان و از <p> برای ایجاد شکست پاراگراف استفاده کرده است −

مثال


/**
* <h1>Hello, World!</h1>
* The HelloWorld program implements an application that
* simply displays "Hello World!" to the standard output.
* <p>
* Giving proper comments in your program makes it more
* user friendly and it is assumed as a high quality code.
* 
*
* @author  Zara Ali
* @version 1.0
* @since   2014-03-31 
*/
public class HelloWorld {

   public static void main(String[] args) {
      // Prints Hello, World! on standard output.
      System.out.println("Hello World!");
   }
}

برچسب‌های javadoc

ابزار javadoc از برچسب‌های زیر پشتیبانی می‌کند −

برچسب توضیحات نحو
@author نویسنده یک کلاس را اضافه می‌کند. @author نام-متن
{@code} متن را به صورت کد نمایش می‌دهد بدون تفسیر متن به عنوان علامت گذاری HTML یا برچسب‌های جاواداک تو در تو. {@code متن}
{@docRoot} مسیر نسبی به فهرست ریشه مستندات تولید شده از هر صفحه تولید شده را نشان می‌دهد. {@docRoot}
@deprecated یک نظری را اضافه می‌کند که نشان دهد این API دیگر باید استفاده نشود. @deprecated متن-قدیمی
@exception یک زیرعنوان Throws به مستندات تولید شده اضافه می‌کند با نام کلاس و توضیحات. @exception نام-کلاس توضیحات
{@inheritDoc} نظر را از کلاس نزدیک‌تر قابل وراثت یا رابط قابل پیاده‌سازی به ارث برمی‌گیرد. از نظر فوری کلاس وراثت می‌شود.
{@link} یک لینک درون خطی با برچسب متن قابل نمایش که به مستندات بسته، کلاس یا نام عضو یک کلاس مرجع اشاره دارد را درج می‌کند. {@link بسته.کلاس#عضو برچسب}
{@linkplain} مشابه {@link} است، با این تفاوت که برچسب لینک به صورت متن ساده نمایش داده می‌شود و نه به صورت کد. {@linkplain بسته.کلاس#عضو برچسب}
@param یک پارامتر با نام پارامتر مشخص شده و توضیحات مشخص شده را به بخش "پارامترها" اضافه می‌کند. @param نام-پارامتر توضیحات
@return بخش "برگشت‌ها" را با متن توضیحات اضافه می‌کند. @return توضیحات
@see یک عنوان "ببینید همچنین" با یک لینک یا ورودی متن اضافه می‌کند که به مرجع اشاره می‌کند. @see مرجع
@serial در نظرات مستند برای فیلد سریالیزه پیش‌فرض استفاده می‌شود. @serial توضیحات-فیلد | شامل | مستثنی
@serialData داده‌هایی را که توسط متدهای writeObject( ) یا writeExternal( ) نوشته شده است را مستند می‌کند. @serialData توضیحات-داده
@serialField یک مؤلفه ObjectStreamField را مستند می‌کند. @serialField نام-فیلد نوع-فیلد توضیحات-فیلد
@since یک عنوان "از نسخه" با متن مشخص شده را به مستندات تولید شده اضافه می‌کند. @since نسخه
@throws برچسب‌های @throws و @exception مترادف هستند. @throws نام-کلاس توضیحات
{@value} وقتی {@value} در نظرات مستند یک فیلد استاتیک استفاده می‌شود، مقدار آن ثابت نشان داده می‌شود. {@value بسته.کلاس#فیلد}
@version یک زیرعنوان "نسخه" با متن نسخه مشخص شده را به مستندات تولید شده اضافه می‌کند هنگام استفاده از گزینه -version. @version متن-نسخه

مثال

برنامه زیر از چندین برچسب مهم موجود برای نظرات مستند استفاده می‌کند. می‌توانید بر اساس نیازهای خود از سایر برچسب‌ها استفاده کنید.

مستندات درباره کلاس AddNum در فایل HTML به نام AddNum.html تولید می‌شود اما در عین حال یک فایل اصلی با نام index.html نیز ایجاد خواهد شد.


import java.io.*;

/**
* <h1>Add Two Numbers!</h1>
* The AddNum program implements an application that
* simply adds two given integer numbers and Prints
* the output on the screen.
* <p>
* <b>Note:</b> Giving proper comments in your program makes it more
* user friendly and it is assumed as a high quality code.
*
* @author  Zara Ali
* @version 1.0
* @since   2014-03-31
*/
public class AddNum {
   /**
   * This method is used to add two integers. This is
   * a the simplest form of a class method, just to
   * show the usage of various javadoc Tags.
   * @param numA This is the first paramter to addNum method
   * @param numB  This is the second parameter to addNum method
   * @return int This returns sum of numA and numB.
   */
   public int addNum(int numA, int numB) {
      return numA + numB;
   }

   /**
   * This is the main method which makes use of addNum method.
   * @param args Unused.
   * @return Nothing.
   * @exception IOException On input error.
   * @see IOException
   */

   public static void main(String args[]) throws IOException {
      AddNum obj = new AddNum();
      int sum = obj.addNum(10, 20);

      System.out.println("Sum of 10 and 20 is :" + sum);
   }
}

حالا، فایل AddNum.java بالا را با استفاده از ابزار javadoc به صورت زیر پردازش کنید:


$ javadoc AddNum.java
Loading source file AddNum.java...
Constructing Javadoc information...
Standard Doclet version 1.7.0_51
Building tree for all the packages and classes...
Generating /AddNum.html...
AddNum.java:36: warning - @return tag cannot be used in method with void return type.
Generating /package-frame.html...
Generating /package-summary.html...
Generating /package-tree.html...
Generating /constant-values.html...
Building index for all the packages and classes...
Generating /overview-tree.html...
Generating /index-all.html...
Generating /deprecated-list.html...
Building index for all classes...
Generating /allclasses-frame.html...
Generating /allclasses-noframe.html...
Generating /index.html...
Generating /help-doc.html...
1 warning
$

شما می‌توانید تمام مستندات تولید شده را در اینجا بررسی کنید - AddNum. اگر از JDK 1.7 استفاده می‌کنید، javadoc یک stylesheet.css عالی تولید نمی‌کند، بنابراین پیشنهاد می‌کنیم از stylesheet استاندارد را از https://docs.oracle.com/javase/7/docs/api/stylesheet.css دانلود و استفاده کنید.