15 Commits

Author SHA1 Message Date
d8cb8763cd Stept 9 2026-09-17 15:45:10 +09:00
7939c7aa1c Stept 8 2026-09-17 13:52:40 +09:00
16b21456b3 Day 3 stept 7 2026-09-17 13:38:10 +09:00
602cecfff8 Day 3Stept 6 2026-09-16 16:38:47 +09:00
a9f7040157 Day 3 Stept 4 2026-09-16 14:25:42 +09:00
53bf20a116 Day3 Stept3 2026-09-16 13:39:01 +09:00
67baf3374c Day3 Stept2 2026-09-16 13:33:37 +09:00
a9e99590ca Day3 Stept 1 2026-09-16 13:03:32 +09:00
1d934f30d9 heijn 2026-09-16 12:41:30 +09:00
5ebadc1694 Stept 9 (Today All Done) 2026-09-15 15:42:19 +09:00
6381bb2825 Stept 8 done 2026-09-15 15:36:26 +09:00
3811f93f39 Stept 7 Done 2026-09-15 15:28:42 +09:00
eacd21df50 Stept 9 done 2026-09-14 16:39:04 +09:00
b655390c6f Stept 8 done 2026-09-14 16:24:59 +09:00
1c9dcdd6c9 hein stept 5 done 2026-09-14 15:55:38 +09:00
24 changed files with 714 additions and 620 deletions

6
.classpath Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="src" path="em-oop/src"/>
<classpathentry kind="output" path="bin"/>
</classpath>

1
.gitignore vendored
View File

@@ -25,3 +25,4 @@ hs_err_pid*
replay_pid*
/.metadata/
/bin/

17
.project Normal file
View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>java-cui-em-oop</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@@ -1,388 +0,0 @@
# CUI_EM_OOP ミッション課題【2日目】コンストラクタ・カプセル化・static
## このミッションについて
このミッションは、最終的に **「社員メンテナンス(ファイルシステム版)」(CUI_EM_OOP)** を完成させることを目標にした、複数回に分かれたミッション課題の**2日目**です。
**前回(1日目)作成したプロジェクトのファイルを、そのまま引き続き使います。** 同じプロジェクトに追記・修正を加えていってください(`Book`、`Student`、`Item`、`EmployeeData`、`Main`、`BasicCheck1〜3`など)。
今日は、1日目に作った「まだ簡易版」のクラスたちを、今日習う道具を使って、完成形にぐっと近づけていきます。それでも、まだ以下の内容は習っていないため使いません。今後のミッションでさらにバージョンアップしていきます。
* 継承・多態性(`extends`、抽象クラス)
* コレクション(`ArrayList`など)
* 例外処理
* ファイルの読み書き
## 今日の講義内容
* コンストラクタ
* コンストラクタのオーバーロード
* メソッドのオーバーライド(`Object`クラスの`toString`など)
* アクセス修飾子
* ゲッター・セッター
* `static`、静的メンバ
## 基本の書き方(文法メモ)
今日はじめて出てくる書き方をまとめておきます。各段階で迷ったときは、ここに戻って確認してください。
### コンストラクタ
```java
public class クラス名 {
public クラス名() {
// インスタンスが作られたときに実行される処理(何もしなくてもOK)
}
public クラス名(型 引数名, 型 引数名) {
// 引数を使ってフィールドを設定する処理
}
}
```
* コンストラクタの名前は、**必ずクラス名とまったく同じ**にします。
* コンストラクタには**戻り値の型を書きません**(`void`も書きません)。ここがメソッドとの大きな違いです。
* `new クラス名();`と書けば引数なしのコンストラクタが、`new クラス名(値, 値);`のように引数を渡せば対応する引数ありのコンストラクタが呼ばれます。渡す引数の数や型によって、Javaが自動的にどちらを実行するか選んでくれます。これを**コンストラクタのオーバーロード**と呼びます。
* **注意**:Javaは本来、コンストラクタを1つも書かないクラスに対して「何もしない引数なしコンストラクタ」を自動的に用意してくれます。しかし、コンストラクタを1つでも自分で書くと、この自動生成は行われなくなります。そのため、引数なしでの生成もこれまで通り使いたい場合は、引数なしコンストラクタも自分で明示的に書く必要があります(5段階目で2つとも作るのはこのためです)。
### アクセス修飾子(`private`)
フィールドに`private`をつけると、そのフィールドは**自分のクラスの中からしか直接アクセスできなく**なります。クラスの外からは、これから作るゲッター・セッターというメソッドを経由してアクセスすることになります。
### ゲッター・セッターの命名ルール
* ゲッター:`get` + フィールド名(先頭を大文字にしたもの)というメソッド名にし、フィールドの値を`return`する。引数はなし。
* 例:フィールド`price`(`int`型) → `public int getPrice() { return this.price; }`
* セッター:`set` + フィールド名(先頭を大文字にしたもの)というメソッド名にし、引数で受け取った値をフィールドに代入する。戻り値は`void`。
* 例:フィールド`price`(`int`型) → `public void setPrice(int price) { this.price = price; }`
* 自分のクラスの中から自分のゲッター・セッターを呼び出すときは、`this.getPrice()`のように書いても、`this.`を省略して`getPrice()`のように書いても、どちらも同じ意味になります。
### `static`(静的メンバ)
フィールドやメソッドに`static`をつけると、そのフィールド・メソッドは**インスタンスごとではなく、クラス全体で1つだけ共有される**ものになります。
```java
public class クラス名 {
static 型 フィールド名;
public static 戻り値の型 メソッド名() {
return フィールド名;
}
}
```
呼び出すときは、インスタンス経由ではなく`クラス名.メソッド名()`のように、**クラス名から直接**呼び出します。
### メソッドのオーバーライドと`@Override`
すべてのクラスは、`Object`という共通のクラスを自動的に受け継いでいます(`extends`と書いていないクラスも、実は見えないところで`Object`を継承しています)。そのため、どのクラスも`toString`のようなメソッドを最初から持っています。この中身を自分のクラス用に書き直すことを**オーバーライド(Override)**と呼びます。
* オーバーライドするメソッドの前には`@Override`をつけましょう。これは「このメソッドは親のメソッドを上書きしていますよ」とJavaに伝えるための目印です。書き忘れても動作は変わりませんが、書いておくとメソッド名のスペルミスなどにJavaが気づいてくれるので、必ずつける習慣にしましょう。
* **重要**:`toString`は`Object`クラスの中で`public`として宣言されています。オーバーライドする側は、元のメソッドより公開範囲を狭くすることができないというルールがあるため、**オーバーライドする`toString`メソッドには必ず`public`をつけてください**(`public`をつけずに書くと、コンパイルエラーになります)。
### 「オーバーロード」と「オーバーライド」は別物です
名前が似ていて混同しやすいので、ここで整理しておきます。
* **オーバーロード(Overload)**:同じクラスの中に、同じ名前だけど引数の型や数が違うメソッド(コンストラクタ)を複数作ること。今日の`Book`のコンストラクタが例です。
* **オーバーライド(Override)**:親のクラス(`Object`など)がもともと持っているメソッドを、自分のクラスで上書きして中身を変えること。今日の`toString`が例です。
### `public`をつける習慣について
コンストラクタ・ゲッター・セッターは、特に指定がない限り`public`で宣言してください。今はすべてのクラスを同じ場所(パッケージ)に置いているので`public`をつけなくても動いてしまいますが、後日パッケージ分けをしたときに「他のクラスから呼び出せない」という問題が起きないよう、今のうちから`public`をつける習慣にしておきましょう。
## すすめかた
1. 1段階目から順番に取り組んでください。むずかしそうに見えても、飛ばさないでください。
2. 各段階の「お題」をよく読んで、「何を作るのか」を最初に理解してから手を動かしましょう。
3. コードが書けたら、必ず実行して**「実行例」と同じ結果になるか**確認しましょう。
4. わからない言葉が出てきたら、まず自分で調べてみましょう。調べてもわからないときは、講師に質問してください。
5. コピー&ペーストではなく、自分の手で入力して理解しましょう。
## 提出物
* 今日修正・作成した`.java`ファイル一式
---
## 【基礎確認ゾーン】1〜3段階目
このゾーンは、CUI_EM_OOPとは直接関係のない練習問題です。1日目に作った`Book`・`Item`・`Student`クラスを、今日習った道具でバージョンアップしながら、基本がしっかり身についているかを確認しましょう。
### 1段階目(Bookクラスにコンストラクタを作ろう)
**お題**
`Book`クラスに、コンストラクタを2つ(オーバーロード)追加してください。コンストラクタは2つとも`public`で宣言してください。
**<作成フローとポイント>**
1. `Book.java`に、以下の**引数なしコンストラクタ**を追加してください。
* `title`に`"タイトル未設定"`、`author`に`"著者未設定"`、`price`に`0`を代入する
2. `Book.java`に、以下の**3つの引数を持つコンストラクタ**を追加してください(1と合わせて2つのコンストラクタになります=コンストラクタのオーバーロード)。
* 引数:`String title, String author, int price`
* 処理:渡された3つの引数を、それぞれ対応するフィールドに代入する
3. `BasicCheck1.java`を修正し、`main`メソッドの中で以下を行ってください。
* 引数なしコンストラクタを使って`book1`を作成し、そのまま`title`・`author`・`price`を出力する
* 3つの引数を持つコンストラクタを使って、`book2`を`"銀河鉄道の夜"`・`"宮沢賢治"`・`500`で作成し、同様に出力する
**<実行例>**
```
タイトル未設定
著者未設定
0
銀河鉄道の夜
宮沢賢治
500
```
### 2段階目(Itemクラスをカプセル化し、toStringをオーバーライドしよう)
**お題**
`Item`クラスのフィールドを`private`にして、ゲッター・セッターを作成しましょう。また、`Object`クラスから受け継いでいる`toString`メソッドをオーバーライドしてみましょう。
**<作成フローとポイント>**
1. `Item.java`の3つのフィールド(`name`、`price`、`stock`)に、すべて`private`をつけてください。
2. 3つのフィールドそれぞれに、ゲッター・セッターを作成してください。
* `getName()` / `setName(String name)`
* `getPrice()` / `setPrice(int price)`
* `getStock()` / `setStock(int stock)`
3. `sell`メソッドの中身を、フィールドに直接アクセスする書き方(`this.stock = this.stock - amount;`)から、作成したゲッター・セッターを使う書き方に直してください。
* 例:`this.setStock(this.getStock() - amount);`
4. `Item.java`に、以下のメソッドを追加してください。
* アクセス修飾子:`public`(**必須**です。理由は冒頭の「基本の書き方(文法メモ)」を参照してください)
* `@Override`をつける
* メソッド名:`toString`
* 引数:なし
* 戻り値:`String`
* 中身:`getName() + " " + getPrice() + "円 (残り" + getStock() + "個)"` のような文字列を`return`する
5. `BasicCheck3.java`を修正してください。
* `items[i].name = ...`のようにフィールドへ直接代入していた箇所を、すべて`items[i].setName(...)`のようにセッター経由に書き換える
* 出力部分を、`System.out.println(items[i]);`のように、**オブジェクトをそのまま渡す形**に書き換える
* ※`System.out.println`は、渡されたオブジェクトの`toString`メソッドの戻り値を自動的に出力してくれます。
**<実行例>**
```
ノート 120円 (残り45個)
消しゴム 80円 (残り25個)
鉛筆 60円 (残り95個)
```
### 3段階目(Studentクラスにコンストラクタとstaticメンバを追加しよう)
**お題**
`Student`クラスにコンストラクタを追加し、「これまで何人の生徒が作られたか」を数える仕組みを`static`で作ってみましょう。
**<作成フローとポイント>**
1. `Student.java`に、以下のコンストラクタを追加してください。
* 引数:`int studentId, String name`
* 処理:渡された引数を、それぞれ対応するフィールドに代入する
2. `Student.java`に、以下の`static`フィールドを追加してください。
* `static int studentCount = 0;`(生徒が何人作られたかを数えるための、クラス全体で共有するフィールド)
3. 2で作ったコンストラクタの中で、`studentCount`を1増やす処理を追加してください(`studentCount++;`)。
4. `Student.java`に、以下の`static`メソッドを追加してください。
* メソッド名:`getStudentCount`
* 引数:なし
* 戻り値:`int`
* 中身:`studentCount`の値を`return`する
5. `BasicCheck2.java`を修正してください。
* コンストラクタを使って、`student1`(`1`, `"鈴木一郎"`)、`student2`(`2`, `"田中花子"`)、`student3`(`3`, `"佐藤次郎"`)の3人分のインスタンスを作成する
* それぞれの`printProfile`メソッドを呼び出す
* 最後に、`Student.getStudentCount()`のように**インスタンスではなくクラス名から直接**呼び出し、結果を`"現在の生徒数:" + 件数 + "人"`という形式で出力する
**<考え方のヒント>**
* `static`がついたフィールドやメソッドは、`this.name`のような個々のインスタンスが持つデータとは違い、**そのクラス全体で1つだけ共有される**データです。だからこそ、インスタンスを経由せず`Student.getStudentCount()`のようにクラス名から直接呼び出せます。
**<実行例>**
```
学籍番号:1 名前:鈴木一郎
学籍番号:2 名前:田中花子
学籍番号:3 名前:佐藤次郎
現在の生徒数:3人
```
---
## 【CUI_EM_OOP制作ゾーン】4〜6段階目
ここからは、1日目に作った`EmployeeData`・`Main`を、今日習った道具でバージョンアップし、完成形の姿にぐっと近づけていきます。
### 4段階目(EmployeeDataをカプセル化しよう)
**お題**
`EmployeeData`クラスの6つのフィールドを`private`にして、ゲッター・セッターを作成しましょう。
**<作成フローとポイント>**
1. `EmployeeData.java`の6つのフィールドすべてに、`private`をつけてください。
2. 6つのフィールドそれぞれに、以下の名前でゲッター・セッターを作成してください(今後も同じ名前を使い続けるので、統一しておきましょう。すべて`public`で宣言してください)。
* `getIdEmployee()` / `setIdEmployee(String idEmployee)`
* `getNmEmployee()` / `setNmEmployee(String nmEmployee)`
* `getKnEmployee()` / `setKnEmployee(String knEmployee)`
* `getMailAddress()` / `setMailAddress(String mailAddress)`
* `getPassword()` / `setPassword(String password)`
* `getIdDepartment()` / `setIdDepartment(String idDepartment)`
3. `showInfo`メソッドの中身を、フィールドに直接アクセスする書き方(`this.idEmployee`など)から、1で作ったゲッターを使う書き方に直してください。
4. `Main.java`を見直し、`employee.idEmployee = "10000";`のようにフィールドへ直接代入している箇所を、**すべて**`employee.setIdEmployee("10000");`のようにセッター経由の書き方に直してください。
* 4〜6段階目だけでなく、7〜9段階目(検索機能)で作った箇所も含めて、すべて探して直しましょう。
**<実行例>**
これまでと同じ表示になります(6段階目・9段階目の実行例と見比べて確認してください)。
### 5段階目(EmployeeDataにコンストラクタを作ろう)
**お題**
`EmployeeData`クラスに、コンストラクタを2つ(オーバーロード)追加しましょう。
**<作成フローとポイント>**
1. `EmployeeData.java`に、**引数なしコンストラクタ**を追加してください。
* 中身は空のままでOKです(何もしなくて構いません)。
2. `EmployeeData.java`に、**6つの引数を持つコンストラクタ**を追加してください(1と合わせてオーバーロードになります)。
* 引数:`String idEmployee, String nmEmployee, String knEmployee, String mailAddress, String password, String idDepartment`
* 処理:渡された6つの引数を、直接フィールドに代入するのではなく、対応する**セッターを呼び出して**設定する
* 例:`this.setIdEmployee(idEmployee);`
3. `Main.java`の4段階目で作った「1件分の社員データを作る部分」を、新しく作った6引数コンストラクタを使う形に書き換えてください。
* 例:`EmployeeData employee = new EmployeeData("10000", "山田龍也", "ヤマダタツヤ", "yamada@hoge.jp", "aaa", "10");`
4. 6段階目(5人分)・7〜9段階目(検索機能)で社員データを作っている部分は、これまで通り「引数なしコンストラクタ+セッター」の形のままで構いません。
> **補足**:CSVファイルのようなデータを1項目ずつ読み込んで詰め替えていく場面では、あえて「引数なしコンストラクタ+セッター」の組み合わせが使われることもよくあります(このシステムでも、後日ファイルを扱うミッションでそのような作り方が登場します)。今回作った6引数コンストラクタは、実務でもよく使われる便利な書き方ですが、「どちらが正しい」ということではなく、状況に応じて使い分けるものだと覚えておいてください。
**<実行例>**
これまでと表示内容は変わりません。
### 6段階目(toStringをオーバーライドしよう)
**お題**
`showInfo`メソッドを、`Object`クラスの`toString`メソッドをオーバーライドする形に作り直しましょう。
**<作成フローとポイント>**
1. `EmployeeData.java`の`showInfo`メソッドを、以下のルールで書き換えてください。
* メソッド名を`showInfo`から`toString`に変える
* アクセス修飾子を`public`にする(`showInfo`は修飾子なしでしたが、`toString`は`Object`クラスの`public`なメソッドをオーバーライドするため`public`が**必須**です。つけないとコンパイルエラーになります)
* メソッドの前に`@Override`をつける
* 戻り値を`void`から`String`に変える
* 中で`System.out.println`していた部分はやめて、その文字列を`return`するようにする
2. `Main.java`の中で、`employee.showInfo();`や`employees[i].showInfo();`のように呼び出していた箇所を、**すべて**`System.out.println(employee);`・`System.out.println(employees[i]);`のように、オブジェクトをそのまま渡す形に書き換えてください。
3. 7〜9段階目(検索機能)の中で`showInfo()`を呼んでいた箇所も、同様に書き換えてください。
**<実行例>**
1日目の6段階目・9段階目とまったく同じ表示になることを確認してください。
```
10000 山田龍也 ヤマダタツヤ yamada@hoge.jp aaa 10
10001 高橋準 タカハシジュン jtaka@hoge.jp bbb 10
10002 麻枝史明 マエダフミアキ fmak@hoge.jp ccc 11
10003 丸戸章介 マルトショウスケ marusyo@hoge.jp ddd 12
10004 三宅武 ミヤケタケシ miya@hoge.jp eee 13
```
---
## 【挑戦問題ゾーン】7〜9段階目
ここからは応用問題です。今日習った内容に加えて、自分で少し調べながら進める部分があります。難しく感じても焦らず、じっくり調べながら取り組んでみましょう(経験者の方でも、多少時間がかかる内容です)。
### 7段階目(staticで社員データの件数を数えよう)
**お題**
`EmployeeData`クラスに、これまで何件のインスタンスが作られたかを数える仕組みを追加してください。
**<お題の条件>**
* `private static int empCount = 0;`のような`static`フィールドを追加する
* 2つのコンストラクタ(引数なし・6引数)の**両方**の中で、`empCount`を1増やす処理を追加する
* `static int getEmpCount()`のような`static`メソッドを追加し、`empCount`の値を返せるようにする
* `Main.java`で、6段階目の5人分のインスタンスをすべて生成し終えたあとに、`EmployeeData.getEmpCount()`のように**クラス名から直接**呼び出し、作られた件数を出力する
**<考え方のヒント>**
* `static`がついたフィールドやメソッドは、個々の社員データ(`idEmployee`など)とは違い、「全員で1つを共有する」データです。コンストラクタが呼ばれるたびに増える、という点を意識してみましょう。
**<余裕がある人向け(任意)>**
`static final`をつけると、あとから値を変更できない「定数」を作ることができます。試しに`EmployeeData`クラスに`static final String COMPANY_NAME = "Rhizome";`のような定数を追加し、どこかで出力してみましょう。今回のシステムでは必須ではありませんが、後日のミッションでよく使う書き方です。
**<実行例>**
```
10000 山田龍也 ヤマダタツヤ yamada@hoge.jp aaa 10
10001 高橋準 タカハシジュン jtaka@hoge.jp bbb 10
10002 麻枝史明 マエダフミアキ fmak@hoge.jp ccc 11
10003 丸戸章介 マルトショウスケ marusyo@hoge.jp ddd 12
10004 三宅武 ミヤケタケシ miya@hoge.jp eee 13
現在の社員データ件数:5件
```
### 8段階目(セッターに簡単なチェックを入れてみよう)
**お題**
今の`setNmEmployee`は、どんな値を渡されてもそのまま代入してしまいます。空文字や空白だけの値が渡された場合は代入しないように直してみましょう。
**<お題の条件>**
* `setNmEmployee`の引数`nmEmployee`が、`null`、または前後の空白を取り除いた結果が空文字になる場合、「社員名が空のため設定できませんでした」と表示し、**フィールドへの代入を行わない**
* それ以外の場合は、これまで通りフィールドに代入する
**<考え方のヒント>**
* 文字列の前後の空白を取り除くメソッドと、文字列の長さ(または空文字かどうか)を調べるメソッドを、それぞれ調べてみましょう。
* `null`かどうかを確認する条件を、他の条件より**先に**書かないと、`null`の状態で文字列用のメソッドを呼び出そうとして`NullPointerException`というエラーで止まってしまいます。条件を書く順番に気をつけましょう。
**<実行例>**(`Main.java`で試しに空文字を`setNmEmployee`に渡してみた場合)
```
社員名が空のため設定できませんでした
```
### 9段階目(チェックをもう1つの項目にも広げ、コンストラクタと統一しよう)
**お題**
8段階目で作った「空文字チェック」の考え方を、`idEmployee`(社員ID)にも広げましょう。また、コンストラクタが本当にセッター経由になっているかを見直し、統一します。
**<お題の条件>**
1. `setIdEmployee`メソッドにも、8段階目の`setNmEmployee`と同じような空文字チェックを追加してください。
* `idEmployee`が`null`、または前後の空白を取り除いた結果が空文字になる場合、「社員IDが空のため設定できませんでした」と表示し、フィールドへの代入を行わない
* それ以外の場合は、これまで通りフィールドに代入する
2. 8段階目で作ったチェックは、セッターを直接呼び出したときにしか働きません。5段階目で作った6引数コンストラクタの中身を見直し、**6つのフィールドすべてが、直接代入ではなくセッターを呼び出す形**(`this.setNmEmployee(nmEmployee);`のような形)になっているか確認してください。
* もし直接代入の書き方(`this.nmEmployee = nmEmployee;`など)が残っていた場合は、すべてセッターを呼び出す形に書き換えてください。
**<確認方法>**
`Main.java`で、6引数コンストラクタの`nmEmployee`引数に空文字`""`を渡して`EmployeeData`を生成してみましょう。「社員名が空のため設定できませんでした」と表示され、生成されたインスタンスの`nmEmployee`が設定されない(`null`のままになる)ことを確認してください。同様に、`idEmployee`引数を空文字にした場合も「社員IDが空のため設定できませんでした」と表示されることを確認してください。
**<実行例>**
```
社員名が空のため設定できませんでした
社員IDが空のため設定できませんでした
```
> **ポイント**:「値のチェックはセッターに1回だけ書き、コンストラクタも含めて全員がセッター経由で値を設定する」という作りは、実務でもよく使われる、堅牢なクラス設計の基本パターンです。
---
## まとめ
今日は「コンストラクタ」「アクセス修飾子」「ゲッター・セッター」「メソッドのオーバーライド」「`static`」という道具を使って、1日目に作った土台を大きくバージョンアップしました。特に`EmployeeData`クラスは、フィールドが`private`で守られ、コンストラクタとゲッター・セッターを備え、`toString`で自分の情報を表現できる、完成形にかなり近い姿になりました。
今日書いたコードも消さずに残しておいてください。次回以降のミッションで、継承・多態性・コレクション・例外処理・ファイル入出力などを習いながら、最終的に本物の「社員メンテナンス(ファイルシステム版)」システムに近づけていきます。

View File

@@ -3,26 +3,23 @@ public class BasicCheck1 {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Book book = new Book();
book.title = "吾輩は猫である";
book.author = "夏目漱石";
book.price = 800;
System.out.println(book.title);
System.out.println(book.author);
System.out.println(book.price);
System.out.println();
//9/15段階1
Book book1 = new Book();
//Book book = new Book();
// book.title = "吾輩は猫である";
// book.author ="夏目漱石";
// book.price = 800;
Book book1 = new Book () ;
System.out.println(book1.title);
System.out.println(book1.author);
System.out.println(book1.price);
Book book2 = new Book("銀河鉄道の夜","宮沢賢治",500);
Book book2 = new Book("銀河鉄道の夜", "宮沢賢治", 500);
System.out.println(book2.title);
System.out.println(book2.author);
System.out.println(book2.price);
}

View File

@@ -1,15 +1,18 @@
public class BasicCheck2 {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
// Student student = new Student();
// student.studentId=1;
// student.name="鈴木一郎";
Student student1 = new Student(1, "鈴木一郎");
Student student2 = new Student(2, "田中花子");
Student student3 = new Student(3, "佐藤次郎");
Student student2 = new Student(2, "田中花子");
Student student3 = new Student(3, "佐藤次郎");
student1.printProfile();
student2.printProfile();
student3.printProfile();
System.out.println("現在の生徒数:" + Student.getStudentCount() + "人");
System.out.println("現在の生徒数は:"+Student.getStudentCount());
}
}

View File

@@ -3,24 +3,54 @@ public class BasicCheck3 {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Item[] items = new Item[3];
for (int i = 0; i < items.length; i++) {
items[i] = new Item();
}
items[0].setName("ノート");
items[0].setPrice(120);
items[0].setStock(50);
items[1].setName("消しゴム");
items[1].setPrice(80);
items[1].setStock(30);
items[2].setName("鉛筆");
items[2].setPrice(60);
items[2].setStock(100);
Item []items = new Item[3];
// items[0]= new Item();
// items[0].name = "ノート";
// items[0].price = 120;
// items[0].stock = 50;
//
// items[1] = new Item();
// items[1].name = "消しゴム";
// items[1].price = 80;
// items[1].stock = 30;
//
// items[2] = new Item();
// items[2].name = "鉛筆";
// items[2].price = 60;
// items[2].stock = 100;
items[0] = new Item();
items[0].setName("ノート");
items[0].setPrice(120);
items[0].setStock(50);
items[1] = new Item();
items[1].setName("消しゴム");
items[1].setPrice(80);
items[1].setStock(30);
items[2] = new Item();
items[2].setName("鉛筆");
items[2].setPrice(60);
items[2].setStock(100);
// Item[] items = {
// new Item("ノート", 120, 50),
// new Item("消しゴム", 80, 30), //this is also fine but the question is make items[i].setName(...),so we should be change
// new Item("鉛筆", 60, 100)
// };
for (int i = 0; i < items.length; i++) {
items[i].sell(5);
System.out.println(items[i]);
}
for (Item i : items) {
i.sell(5);
System.out.println(i);
}
}
}

View File

@@ -3,18 +3,18 @@ public class Book {
String title;
String author;
int price;
//コンストラクタ
public Book() {
title = "タイトル未設定";
author = "著者未設定";
price = 0;
public Book () {
this.title="タイトル未設定";
this.author = "著者未設定";
this.price=500;
}
public Book (String title, String author, int price) {
this.title= title;
this.author= author;
this.price= price;
}
//引数ありコンストラクタ
public Book(String title, String author, int price) {
this.title = title;
this.author = author;
this.price = price;
}
}

View File

@@ -6,56 +6,18 @@ public class EmployeeData {
private String mailAddress;
private String password;
private String idDepartment;
private static int empCount = 0;
static final String COMPANY_NAME = "Rhizome";
//コンストラクタ
public EmployeeData() {
empCount++;
}
//引数ありコンストラクタ
public EmployeeData(String idEmployee, String nmEmployee, String knEmployee,
String mailAddress, String password, String idDepartment) {
this.setIdEmployee(idEmployee);
this.setNmEmployee(nmEmployee);
this.setKnEmployee(knEmployee);
this.setMailAddress(mailAddress);
this.setPassword(password);
this.setIdDepartment(idDepartment);
empCount++;
}
@Override
public String toString() {
return this.idEmployee + "\t" + this.nmEmployee
+ "\t" + this.knEmployee + "\t" + this.mailAddress
+ "\t" + this.password + "\t" + this.idDepartment;
}
public boolean isMatchId(String id) {
return getIdEmployee().equals(id);
}
public static boolean isMatchId(EmployeeData[] employees, String id) {
for (EmployeeData e : employees) {
if (e.isMatchId(id))
return true;
}
return false;
}
public String getIdEmployee() {
return idEmployee;
}
public void setIdEmployee(String idEmployee) {
if (!check(idEmployee, "社員ID"))
return;
this.idEmployee = idEmployee;
// null ဖြစ်နေသလား (သို့မဟုတ်) ရှေ့နောက် Space များကို ဖယ်ရှားလိုက်လျှင် စာသားအလွတ် ဖြစ်သွားသလား စစ်ဆေးခြင်း
if (idEmployee == null || idEmployee.trim().isEmpty()) {
System.out.println("社員Idが空のため設定できませんでした");
} else {
this.idEmployee = idEmployee;
}
}
public String getNmEmployee() {
@@ -63,9 +25,13 @@ public class EmployeeData {
}
public void setNmEmployee(String nmEmployee) {
if (!check(nmEmployee, "社員名"))
return;
this.nmEmployee = nmEmployee;
// null ဖြစ်နေသလား (သို့မဟုတ်) ရှေ့နောက် Space များကို ဖယ်ရှားလိုက်လျှင် စာသားအလွတ် ဖြစ်သွားသလား စစ်ဆေးခြင်း
if (nmEmployee == null || nmEmployee.trim().isEmpty()) {
System.out.println("社員名が空のため設定できませんでした");
} else {
this.nmEmployee = nmEmployee;
}
}
public String getKnEmployee() {
@@ -100,16 +66,43 @@ public class EmployeeData {
this.idDepartment = idDepartment;
}
private static int empCount = 0;
public void showInfo() {
System.out.println(this.idEmployee + "\t" + this.nmEmployee + this.knEmployee + this.mailAddress + this.password
+ this.idDepartment);
// System.out.println("社員ID: " + this.getIdEmployee());
// System.out.println("社員氏名: " + this.getNmEmployee());
// System.out.println("フリガナ: " + this.getKnEmployee());
// System.out.println("メールアドレス: " + this.getMailAddress());
// System.out.println("パスワード: " + this.getPassword());
// System.out.println("部署ID: " + this.getIdDepartment());
}
public EmployeeData() {
empCount++;
}
public EmployeeData(String idEmployee, String nmEmployee, String knEmployee, String mailAddress, String password,
String idDepartment) {
this.setIdEmployee(idEmployee);
this.setNmEmployee(nmEmployee);
this.setKnEmployee(knEmployee);
this.setMailAddress(mailAddress);
this.setPassword(password);
this.setIdDepartment(idDepartment);
empCount++;
}
public static int getEmpCount() {
return empCount;
}
private boolean check(String str, String stringName) {
if (str == null || str.strip().length() == 0) {
System.out.println(stringName + "が空のため設定できませんでした");
return false;
}
return true;
}
// boolean isMatchId(String id) { //stept 7
// return this.idEmployee.equals(id);
//
// }
}

View File

@@ -4,18 +4,12 @@ public class Item {
private int price;
private int stock;
void sell(int amount) {
this.setStock(this.getStock() - amount);
}
@Override
public String toString() {
return this.getName() + " " + this.getPrice() + "円(残り" + this.getStock() + "個)";
}
int totalPrice() {
return this.price * this.stock;
}
// public Item(String name, int price, int stock) {
// this.name = name;
// this.price = price;
// this.stock = stock;
//
// }
public String getName() {
return name;
@@ -40,4 +34,15 @@ public class Item {
public void setStock(int stock) {
this.stock = stock;
}
}
public void sell(int amount) {
this.stock = this.stock - amount;
}
@Override
public String toString() {
return getName() + " " + getPrice() + "円 (残り" + getStock() + "個)";
}
}

View File

@@ -1,121 +1,147 @@
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("会社名:" + EmployeeData.COMPANY_NAME);
// EmployeeData employee = new EmployeeData("10000", "山田龍也", "ヤマダタツヤ",
// "yamada@hoge.jp", "aaa", "10");
// System.out.println(employee);
//
// System.out.println();
// TODO 自動生成されたメソッド・スタブ
EmployeeData[] employees = new EmployeeData[5];
EmployeeData employee1 = new EmployeeData();
employee1.setIdEmployee("10000");
employee1.setNmEmployee("山田太郎");
employee1.setKnEmployee("ヤマダタツヤ");
employee1.setMailAddress("yamada@hoge.jp");
employee1.setPassword("aaa");
employee1.setIdDepartment("10");
//1st person
//EmployeeData employee = new EmployeeData("10000", "山田龍也", "ヤマダタツヤ", "yamada@hoge.jp", "aaa", "10");
// employees[0] = new EmployeeData();
// employees[0].idEmployee = "10000";
// employees[0].nmEmployee = "山田龍也";
// employees[0].knEmployee = "ヤマダタツヤ";
// employees[0].mailAddress = "yamada@hoge.jp";
// employees[0].password = "aaa";
// employees[0].idDepartment = "10";
EmployeeData employee2 = new EmployeeData();
employee2.setIdEmployee("10001");
employee2.setNmEmployee("高橋準");
employee2.setKnEmployee("タカハシジュン");
employee2.setMailAddress("jtaka@hoge.jp");
employee2.setPassword("bbb");
employee2.setIdDepartment("10");
// //2nd person
// employees[1] = new EmployeeData();
// employees[1].idEmployee = "10001";
// employees[1].nmEmployee = "高橋準";
// employees[1].knEmployee = "タカハシジュン";
// employees[1].mailAddress = "jtaka@hoge.jp";
// employees[1].password = "bbb";
// employees[1].idDepartment = "10";
// //3rd person
EmployeeData employee3 = new EmployeeData();
employee3.setIdEmployee("10002");
employee3.setNmEmployee("麻枝史明");
employee3.setKnEmployee("マエダフミアキ");
employee3.setMailAddress("fmak@hoge.jp");
employee3.setPassword("ccc");
employee3.setIdDepartment("11");
// employees[2] = new EmployeeData();
// employees[2].idEmployee = "10002";
// employees[2].nmEmployee = "麻枝史明";
// employees[2].knEmployee = "マエダフミアキ";
// employees[2].mailAddress = "fmak@hoge.jp";
// employees[2].password = "ccc";
// employees[2].idDepartment = "11";
EmployeeData employee4 = new EmployeeData();
employee4.setIdEmployee("10003");
employee4.setNmEmployee("丸戸章介");
employee4.setKnEmployee("マルトショウスケ");
employee4.setMailAddress("marusyo@hoge.jp");
employee4.setPassword("ddd");
employee4.setIdDepartment("12");
// //4th person
// employees[3] = new EmployeeData();
// employees[3].idEmployee = "10003";
// employees[3].nmEmployee = "丸戸章介";
// employees[3].knEmployee = "マルトショウスケ";
// employees[3].mailAddress = "marusyo@hoge.jp";
// employees[3].password = "ddd";
// employees[3].idDepartment = "12";
EmployeeData employee5 = new EmployeeData();
employee5.setIdEmployee("10004");
employee5.setNmEmployee("三宅武");
employee5.setKnEmployee("ミヤケタケシ");
employee5.setMailAddress("miya@hoge.jp");
employee5.setPassword("eee");
employee5.setIdDepartment("13");
// //5th pe5rson
// employees[4] = new EmployeeData();
// employees[4].idEmployee = "10004";
// employees[4].nmEmployee = "三宅武";
// employees[4].knEmployee = "ミヤケタケシ";
// employees[4].mailAddress = "miya@hoge.jp";
// employees[4].password = "eee";
// employees[4].idDepartment = "13";
// stept6
// for (int i = 0; i < employees.length; i++) {
// employees[i].showInfo();
// }
employee1.showInfo();
employee2.showInfo();
employee3.showInfo();
employee4.showInfo();
employee5.showInfo();
//stept 7
//System.out.println("10002 を検索します");
// System.out.println(employees[2].isMatchId("10002"));
//
// System.out.println("99999 を検索します");
// System.out.println(employees[2].isMatchId("99999"));
//stept 5
// employee.showInfo();
// stept6
// System.out.println(employee.idEmployee);
// System.out.println(employee.nmEmployee);
// System.out.println(employee.knEmployee);
// System.out.println(employee.mailAddress);
// System.out.println(employee.password);
// System.out.println(employee.idDepartment);
// Scanner scan = new Scanner(System.in);
// while (true) {
// System.out.println("検索したい社員IDを入力してください(終了する場合は0)");
//
// //stept 8
//
// //System.out.println("検索したい社員IDを入力してください");
// String serchId = scan.nextLine();
//
// if (serchId.equals("0")) { //stept 9
// System.out.println("システムを終了します");
// break;
// }
// boolean found = false; //←if it haven't this boolean , they can't be decided true or false, so we should be make boolan name (found)
for (int i = 0; i < employees.length; i++) {
employees[i] = new EmployeeData();
}
employees[0].setIdEmployee("10000");
employees[0].setNmEmployee("山田龍也");
employees[0].setKnEmployee("ヤマダタツヤ");
employees[0].setMailAddress("yamada@hoge.jp");
employees[0].setPassword("aaa");
employees[0].setIdDepartment("10");
employees[1].setIdEmployee("10001");
employees[1].setNmEmployee("高橋準\t");
employees[1].setKnEmployee("タカハシジュン");
employees[1].setMailAddress("jtaka@hoge.jp");
employees[1].setPassword("bbb");
employees[1].setIdDepartment("10");
employees[2].setIdEmployee("10002");
employees[2].setNmEmployee("麻枝史明");
employees[2].setKnEmployee("マエダフミアキ");
employees[2].setMailAddress("fmak@hoge.jp");
employees[2].setPassword("ccc");
employees[2].setIdDepartment("11");
employees[3].setIdEmployee("10003");
employees[3].setNmEmployee("丸戸章介");
employees[3].setKnEmployee("マルトショウスケ");
employees[3].setMailAddress("marusyo@hoge.jp");
employees[3].setPassword("ddd");
employees[3].setIdDepartment("12");
employees[4].setIdEmployee("10004");
employees[4].setNmEmployee("三宅武\t");
employees[4].setKnEmployee("ミヤケタケシ");
employees[4].setMailAddress("miya@hoge.jp");
employees[4].setPassword("eee");
employees[4].setIdDepartment("13");
for (EmployeeData e : employees) {
System.out.println(e);
;
}
System.out.println("現在の社員のデータ件数:" + EmployeeData.getEmpCount() + "件");
System.out.println();
//nullおよび前後の空白を取り除いた結果が空文字チェック
EmployeeData emp = new EmployeeData("10000", "デフォルト", "ヤマダタツヤ", "yamada@hoge.jp", "aaa", "10");
System.out.println(emp);
emp.setNmEmployee(null);
System.out.println(emp);
emp.setNmEmployee("   ");
System.out.println(emp);
System.out.println();
EmployeeData emptyEmployee = new EmployeeData("", "", "", "", "", "");
System.out.println(emptyEmployee);
System.out.println();
//IDが一致するか
boolean matchIdBool = false;
System.out.println("10002 を検索します");
for (EmployeeData e : employees) {
matchIdBool = e.isMatchId("10002");
if (matchIdBool)
break;
}
System.out.println(matchIdBool);
System.out.println("99999 を検索します");
System.out.println(EmployeeData.isMatchId(employees, "99999"));
System.out.println("10003 を検索します");
System.out.println(EmployeeData.isMatchId(employees, "10003"));
System.out.println();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("検索したい社員IDを入力してください(終了する場合は0)");
System.out.print(">>>>");
String findId = scanner.nextLine();
if (findId.equals("0")) {
System.out.println("システムを終了します");
return;
}
boolean matchFlag = false;
for (EmployeeData e : employees) {
if (e.isMatchId(findId)) {
System.out.println(e);
matchFlag = true;
break;
}
}
if (!matchFlag) {
System.out.println("該当する社員が見つかりませんでした");
}
System.out.println();
}
System.out.println("現在社員データ数:" + EmployeeData.getEmpCount() + "件");
// if (employees[i].isMatchId(serchId)) {
// employees[i].showInfo();
// found = true;
// break;
// }
//
// }
// if (!found) {
// System.out.println("該当する社員が見つかりませんでした");
// }
System.out.println("--- 空文字のテスト ---");
employee1.setNmEmployee(""); // စာသားအလွတ်
employee1.setIdEmployee(" "); // Space သီးသန့်
employee1.setNmEmployee(null); // null တန်ဖိုး
}
//scan.close();
}

View File

@@ -1,20 +1,24 @@
public class Student {
int studentId;
String name;
static int studentCount = 0;
void printProfile() {
System.out.println("学籍番号:" + this.studentId + " 名前:" + this.name);
}
private int studentId;
private String name;
public Student(int studentId, String name) {
this.studentId = studentId;
this.name = name;
studentCount++;
}
private static int studentCount = 0;
public static int getStudentCount() {
return studentCount;
}
void printProfile() {
System.out.println("学籍番号:" + this.studentId + " 名前:" + this.name);
}
}

View File

@@ -0,0 +1,10 @@
package day3Keisho;
public abstract class BaseData {
public abstract String toString();
public abstract String toCSV();
public abstract String getPrimaryKeyValue();
}

View File

@@ -0,0 +1,22 @@
package day3Keisho;
public class Circle extends Shape {
private double radius;
public Circle (double radius) {
super("円");
this.radius= radius;
}
@Override
public double area() {
return Math.PI * radius * radius;
}
@Override
public void showInfo() {
super.showInfo();
System.out.println("(半径:" + this.radius + ")");
}
}

View File

@@ -0,0 +1,13 @@
package day3Keisho;
public class Day3Check1 {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Circle circle = new Circle(2.0);
circle.showInfo();
}
}

View File

@@ -0,0 +1,15 @@
package day3Keisho;
public class Day3Check2 {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Rectangle rect = new Rectangle(3.0, 4.0);
rect.showInfo();
Greeting greeting = new JapaneseGreeting();
System.out.println(greeting.hello());
}
}

View File

@@ -0,0 +1,14 @@
package day3Keisho;
public class Day3Check3 {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Shape shape1 = new Circle(2);
shape1.showInfo();
Shape shape2 = new Rectangle(3, 4);
shape2.showInfo();
}
}

View File

@@ -0,0 +1,41 @@
package day3Keisho;
public class DepartmentData extends BaseData {
private String idDepartment;
private String nmDepartment;
public String getIdDepartment() {
return idDepartment;
}
public void setIdDepartment(String idDepartment) {
this.idDepartment = idDepartment;
}
public String getNmDepartment() {
return nmDepartment;
}
public void setNmDepartment(String nmDepartment) {
this.nmDepartment = nmDepartment;
}
@Override
public String toString() {
// TODO 自動生成されたメソッド・スタブ
return getIdDepartment() + "\t" + getNmDepartment();
}
@Override
public String toCSV() {
// TODO 自動生成されたメソッド・スタブ
return getIdDepartment() + "," + getNmDepartment();
}
@Override
public String getPrimaryKeyValue() {
// TODO 自動生成されたメソッド・スタブ
return getIdDepartment();
}
}

View File

@@ -0,0 +1,99 @@
package day3Keisho;
public class EmployeeData extends BaseData {
private String idEmployee;
private String nmEmployee;
private String knEmployee;
private String mailAddress;
private String password;
private String idDepartment;
public EmployeeData(String idEmployee, String nmEmployee, String knEmployee, String mailAddress, String password, String idDepartment) {
this.idEmployee = idEmployee;
this.nmEmployee = nmEmployee;
this.knEmployee = knEmployee;
this.mailAddress = mailAddress;
this.password = password;
this.idDepartment = idDepartment;
}
public EmployeeData() {
}
public String getIdEmployee(String idEmployee) {
return idEmployee;
}
public void setIdEmployee(String idEmployee) {
// null ဖြစ်နေသလား (သို့မဟုတ်) ရှေ့နောက် Space များကို ဖယ်ရှားလိုက်လျှင် စာသားအလွတ် ဖြစ်သွားသလား စစ်ဆေးခြင်း
if (idEmployee == null || idEmployee.trim().isEmpty()) {
System.out.println("社員Idが空のため設定できませんでした");
} else {
this.idEmployee = idEmployee;
}
}
public String getNmEmployee() {
return nmEmployee;
}
public void setNmEmployee(String nmEmployee) {
// null ဖြစ်နေသလား (သို့မဟုတ်) ရှေ့နောက် Space များကို ဖယ်ရှားလိုက်လျှင် စာသားအလွတ် ဖြစ်သွားသလား စစ်ဆေးခြင်း
if (nmEmployee == null || nmEmployee.trim().isEmpty()) {
System.out.println("社員名が空のため設定できませんでした");
} else {
this.nmEmployee = nmEmployee;
}
}
public String getKnEmployee() {
return knEmployee;
}
public void setKnEmployee(String knEmployee) {
this.knEmployee = knEmployee;
}
public String getMailAddress() {
return mailAddress;
}
public void setMailAddress(String mailAddress) {
this.mailAddress = mailAddress;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getIdDepartment() {
return idDepartment;
}
public void setIdDepartment(String idDepartment) {
this.idDepartment = idDepartment;
}
@Override
public String toString() {
return idEmployee + "\t" + nmEmployee + "\t" + knEmployee + "\t" + mailAddress + "\t" + password + "\t" + idDepartment;
}
@Override
public String toCSV() {
return idEmployee + "," + nmEmployee + "," + knEmployee + "," + mailAddress + "," + password + "," + idDepartment;
}
@Override
public String getPrimaryKeyValue() {
return idEmployee;
}
}

View File

@@ -0,0 +1,6 @@
package day3Keisho;
public interface Greeting {
String hello();
}

View File

@@ -0,0 +1,11 @@
package day3Keisho;
public class JapaneseGreeting implements Greeting {
@Override
public String hello() {
return "こんにちは";
}
}

View File

@@ -0,0 +1,126 @@
package day3Keisho;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
//EmployeeData[] employees = new EmployeeData[5];
BaseData[] employees = new BaseData[5];
employees[0] = new EmployeeData("10000", "山田龍也", "ヤマダタツヤ", "yamada@hoge.jp", "aaa", "10");
employees[1] = new EmployeeData("10001", "高橋準", "タカハシジュン", "jtaka@hoge.jp", "bbb", "10");
employees[2] = new EmployeeData("10002", "麻枝史明", "マエダフミアキ", "fmak@hoge.jp", "ccc", "11");
employees[3] = new EmployeeData("10003", "丸戸章介", "マルトショウスケ", "marusyo@hoge.jp", "ddd", "12");
employees[4] = new EmployeeData("10004", "三宅武", "ミヤケタケシ", "miya@hoge.jp", "eee", "13");
System.out.println(employees[0].toCSV());
System.out.println(employees[0].getPrimaryKeyValue());
System.out.println("10002 を検索します");
System.out.println(employees[2].getPrimaryKeyValue().equals("10002"));
BaseData[] allData = new BaseData[11];
for (int i = 0; i < employees.length; i++) {
allData[i] = employees[i];
}
DepartmentData dept1 = new DepartmentData();
dept1.setIdDepartment("10");
dept1.setNmDepartment("役員");
allData[5] = dept1;
DepartmentData dept2 = new DepartmentData();
dept2.setIdDepartment("11");
dept2.setNmDepartment("人事・総務部");
allData[6] = dept2;
DepartmentData dept3 = new DepartmentData();
dept3.setIdDepartment("12");
dept3.setNmDepartment("経理部");
allData[7] = dept3;
DepartmentData dept4 = new DepartmentData();
dept4.setIdDepartment("13");
dept4.setNmDepartment("システム開発事業部");
allData[8] = dept4;
DepartmentData dept5 = new DepartmentData();
dept5.setIdDepartment("14");
dept5.setNmDepartment("教育事業部");
allData[9] = dept5;
DepartmentData dept6 = new DepartmentData();
dept6.setIdDepartment("15");
dept6.setNmDepartment("営業企画部");
allData[10] = dept6;
for (BaseData data : allData) {
System.out.println(data.toString());
}
//Stept 7
int employeeCount =0;
int departmentCount =0;
for(BaseData data: allData) {
if(data instanceof EmployeeData) { //instanceof is looking for inside
employeeCount++;
}else if(data instanceof DepartmentData) {
departmentCount++;
}
}
System.out.println("社員データ:" + employeeCount + "件");
System.out.println("部署データ:" + departmentCount + "件");
//Strpt 8
for (BaseData data : allData) {
if (data instanceof EmployeeData) {
// EmployeeData သို့ Cast လုပ်ခြင်း
EmployeeData emp = (EmployeeData) data;
System.out.println(emp.getMailAddress());
}
}
// Stept 9
Scanner scanner = new Scanner(System.in);
System.out.print("検索したい部署名を入力してください: ");
String targetDepartmentName = scanner.nextLine();
String targetDepartmentId = null;
// ၁။ ဌာနနာမည်မှတစ်ဆင့် ဌာန ID (idDepartment) ကို ရှာခြင်း
for (BaseData data : allData) {
if (data instanceof DepartmentData) {
DepartmentData dept = (DepartmentData) data;
if (targetDepartmentName.equals(dept.getNmDepartment())) {
targetDepartmentId = dept.getIdDepartment();
break;
}
}
}
// ၂။ ဌာန ID တူညီသည့် ဝန်ထမ်းများကို ရှာဖွေပြီး ထုတ်ပြခြင်း
if (targetDepartmentId != null) {
boolean found = false;
for (BaseData data : allData) {
if (data instanceof EmployeeData) {
EmployeeData emp = (EmployeeData) data;
if (targetDepartmentId.equals(emp.getIdDepartment())) {
System.out.println(emp.getNmEmployee() + "\t" + emp.getMailAddress());
found = true;
}
}
}
if (!found) {
System.out.println("その部署に所属する社員は見つかりませんでした");
}
} else {
System.out.println("該当する部署が見つかりませんでした");
}
scanner.close();
}
}

View File

@@ -0,0 +1,21 @@
package day3Keisho;
public class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double width,double height) {
super("四角形");
this.height=height;
this.width=width;
}
@Override
public double area() {
// TODO 自動生成されたメソッド・スタブ
//super.showInfo();
return width*height;
}
}

View File

@@ -0,0 +1,22 @@
package day3Keisho;
//public class Shape { //stept 1
public abstract class Shape{ //stept 2
private String name;
public Shape(String name) {
this.name = name;
}
public abstract double area(); //stept 2
// public double area() { //stept 1
// return 0.0;
//
// }
public void showInfo() {
System.out.println(this.name + "の面積は" + this.area() + "です");
}
}