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

>233         return this.day;

>234     }

>235

>236     /**

>237      * Возвращает код, представляющий день недели.

>238      *

>239      * Коды определяются в классе {@link SerialDate} следующим образом:

>240      * SUNDAY, MONDAY, TUESDAY,

>241      * WEDNESDAY, THURSDAY, FRIDAY и

>242      * SATURDAY.

>243      *

>244      * @return Код, представляющий день недели.

>245      */

>246     public int getDayOfWeek() {

>247         return (this.serial + 6) % 7 + 1;

>248     }

>249

>250     /**

>251      * Проверяет равенство текущей даты с другим произвольным объектом.

>252      *

>253      * Метод возвращает true ТОЛЬКО в том случае, если объект является

>254      * экземпляром базового класса {@link SerialDate} и представляет тот же

>255      * день, что и {@link SpreadsheetDate}.

>256      *

>257      * @param object  объект для сравнения (допускается null).

>258      *

>259      * @return Логический признак.

>260      */

>261     public boolean equals(final Object object) {

>262

>263         if (object instanceof SerialDate) {

>264             final SerialDate s = (SerialDate) object;

>265             return (s.toSerial() == this.toSerial());

>266         }

>267         else {

>268             return false;

>269         }

>270

>271     }

>272

>273     /**

>274      * Возвращает хеш-код для экземпляра класса.

>275      *

>276      * @return хеш-код.

>277      */

>278     public int hashCode() {

>279         return toSerial();

>280     }

>281

>282     /**

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

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

>285      *

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

>287      *


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

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

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

>290      */

>291     public int compare(final SerialDate other) {

>292         return this.serial - other.toSerial();

>293     }

>294

>295     /**

>296      * Реализует метод, необходимый для интерфейса Comparable.

>297      *

>298      * @param other  другой объект (обычно другой объект SerialDate).

>299      *

>300      * @return отрицательное целое, нуль или положительное целое число,

>301      *         если объект меньше, равен или больше заданного объекта.

>302      */

>303     public int compareTo(final Object other) {

>304         return compare((SerialDate) other);

>305     }

>306

>307     /**

>308      * Возвращает true, если текущий объект SerialDate представляет ту же дату,

>309      * что и заданный объект SerialDate.

>310      *

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