エンジニア成長日記 swaponQ

コンピュータサイエンス専攻の一般人のブログです。

新・明解 Java 入門 演習 11-1 解答

Hello, Terminal!swaponQです!

今回から「第11章:パッケージ」に入ります。

第11章は演習が1題だけなので、大切に解いていきましょう。

それでは演習 11-1 に取り組んでいこうと思います。

  • 演習 11-1

List10-12のクラスDateIdをパッケージidを所属させるように書きかえよ。なお、クラスDateIdTesterは無名パッケージに所属させること。

今回はパッケージを扱うので、以下にディレクトリの構成も示しておきます。

・Tree

.
├── DateIdTester.class
├── DateIdTester.java
└── id
    ├── DateId.class
    └── DateId.java

1 directory, 4 files

・DateId.java

package id;

import java.util.GregorianCalendar;
import static java.util.GregorianCalendar.*;

public class DateId {
	private static int counter;	// 何番までの識別番号を与えたか

	private int id;					// 識別番号

	static {
		GregorianCalendar today = new GregorianCalendar();
		int y = today.get(YEAR);			// 年
		int m = today.get(MONTH) + 1;		// 月
		int d = today.get(DATE);			// 日

		System.out.printf("今日は%04d年%02d月%02d日です。\n", y, m, d);
		counter = y * 1000000 + m * 10000 + d * 100;
	}

	//-- コンストラクタ --//
	public DateId() {
		id = ++counter;			// 識別番号
	}

	//--- 識別番号を取得 ---//
	public int getId() {
		return id;
	}
}

・DateIdTester.java

import id.DateId;

public class DateIdTester {

	public static void main(String[] args) {
		DateId a = new DateId();
		DateId b = new DateId();
		DateId c = new DateId();

		System.out.println("aの識別番号:" + a.getId());
		System.out.println("bの識別番号:" + b.getId());
		System.out.println("cの識別番号:" + c.getId());
	}
}


・実行結果

今日は2020年08月05日です。
aの識別番号:2020080501
bの識別番号:2020080502
cの識別番号:2020080503

「第11章:パッケージ」は以上です。お疲れ様でした!
次回は「第12章:クラスの派生と多相性」です。

Goodbye, Terminal… swaponQでした!