Чистый код. Создание, анализ и рефакторинг (Мартин) - страница 274

>825                                    calendar.get(Calendar.YEAR));

>826

>827     }

>828

>829     /**

>830      * Возвращает порядковый номер для даты, где 1 January 1900 = 2 (что почти

>831      * соответствует системе нумерации, используемой в Microsoft Excel for

>832      * Windows и Lotus 1-2-3).

>833      *

>834      * @return порядковый номер даты.

>835      */

>836     public abstract int toSerial();

>837

>838     /**

>839      * Возвращает java.util.Date. Поскольку java.util.Date превосходит SerialDate

>840      * по точности, необходимо определить схему выбора ‘времени суток’.

>841      *

>842      * @return текущий объект в виде java.util.Date.

>843      */

>844     public abstract java.util.Date toDate();

>845

>846     /**

>847      * Возвращает описание даты.

>848      *

>849      * @return описание даты.

>850      */

>851     public String getDescription() {

>852         return this.description;

>853     }

>854

>855     /**

>856      * Задает описание даты.

>857      *

>858      * @param description  новое описание даты.

>859      */

>860     public void setDescription(final String description) {

>861         this.description = description;

>862     }

>863

>864     /**

>865      * Преобразует дату в строку.

>866      *

>867      * @return  строковое представление даты.

>868      */

>869     public String toString() {

>870         return getDayOfMonth() + "-" + SerialDate.monthCodeToString(getMonth())

>871                                + "-" + getYYYY();

>872     }

>873

>874     /**

>875      * Возвращает год (в действительном диапазоне от 1900 до 9999).

>876      *

>877      * @return год.

>878      */

>879     public abstract int getYYYY();

>880

>881     /**

>882      * Возвращает месяц (январь = 1, февраль = 2, март = 3).

>883      *

>884      * @return месяц.

>885      */

>886     public abstract int getMonth();

>887

>888     /**


Листинг Б.1 (продолжение)

>889      * Возвращает день месяца.

>890      *

>891      * @return день месяца.

>892      */

>893     public abstract int getDayOfMonth();

>894

>895     /**

>896      * Возвращает день недели.

>897      *

>898      * @return день недели.

>899      */

>900     public abstract int getDayOfWeek();

>901

>902     /**

>903      * Возвращает разность (в днях) между текущей и заданной

>904      * 'другой' датой.

>905      *

>906      * Результат положительный, если текущая дата следует после 'другой',

>907      * или отрицателен, если текущая дата предшествует 'другой'.

>908      *

>909      * @param other  дата для сравнения.

>910      *

>911      * @return разность между текущей и другой датой.

>912      */

>913     public abstract int compare(SerialDate other);