日時 : 2023年1月6日22時30分 - 2023年1月7日00時00分
参加者 : 計13人
範囲 : xxix - 6 1. UMLについて 2. 第1章「Iterator 処理を繰り返す」
告知ページ : 『Java言語で学ぶデザインパターン入門 第3版』読書会#1 - connpass
UMLの基本的な書き方
classDiagram
class Parent {
<<abstract>>
field1
static field2$
foo();
foo2()$
}
class Child{
method1()
method2()$
}
Parent --|> Child
- UMLではクラス名、フィールド名、メソッド名の順番で記述する。
abstract
クラスは斜体で記述される(上の図はmermaid記法のクラス名のabstractの示し方がよくわからないので通常の文字になっているけど)。static
のついたフィールドやメソッドには下線が入る。
集約
class 蕎麦{
// ...
}
class カップ麺{
蕎麦 そば;
}
class 赤いタヌキ{
カップ麺[] カップそば;
}
こんなJavaをUMLにすると
classDiagram
direction BT
class カップ麺{
そば
}
class 赤いタヌキ{
カップそば
}
赤いタヌキ o--> カップ麺
カップ麺 o--> 蕎麦
となる。
1個以上のインスタンスを持つ/持たれている関係が成り立っているとき、集約となる。
アクセス制御
+
: Publicなメソッドやフィールド
-
: Privateなメソッドやフィールド
#
: Protectedなメソッドやフィールド
~
: 同じパッケージ内からのみアクセスできるアクセスできるメソッドやフィールド
class 商店{
public int 定価;
private int 白紙の小切手;
protected int 時価;
int 身内割引;
public void PublicField(){
// ...
}
private void PrivateField(){
// ...
}
protected void ProtectedField(){
// ...
}
void OnMethod(){
}
}
classDiagram
class 支払い方法{
+定価
-白紙の小切手
#時価
〜身内割引
+店頭()
-料亭()
#応接室()
〜台所()
}
Q&A
[Q1]xxxivのFig.0-5 クラス関連の例の違いがわからない。
こんな図。
classDiagram
direction LR
Client --> Target: use▶︎
Factory --> Product: Creates▶︎
Subject --> Observer: Notifies▶︎
[A1]▶︎
は関連を示すものとして記されているのではないか。2番目のものはFactoryメソッド、3番目のものはObserverとして、それぞれ4章、17章に出てくる。
第1章「Iterator 処理を繰り返す」#1
繰り返しだよ。for文だよ。続きは今度だよ。