Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save imachange/574eeb548428e15a8fecbf03e49def70 to your computer and use it in GitHub Desktop.
Save imachange/574eeb548428e15a8fecbf03e49def70 to your computer and use it in GitHub Desktop.

日時 : 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文だよ。続きは今度だよ。

次回

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment