mohuneko’s blog

かんばる駆け出しエンジニアのブログです

【Java】UMLについて【デザインパターン】

駆け出しエンジニアがデザインパターンをもくもく勉強します

 こんな本で勉強しています🌟



目次

UMLについて

UMLとは

  • Unified Modeling Languageの略称で、ソフトウェアを形式化するための統一されたモデリング言語です
  • システムを視覚化したり、使用や設計を文章化するために使用します
  • デザインパターンに登場するクラスやインスタンスの関係を表現するためにUMLを使いますので、UMLの基本から勉強します

UMLのクラス図

  • クラス図とは、UMLの一つで、システムの静的な構造・関係性を視覚的に表現するための図です
  • クラス、インスタンス、インターフェースの関係をグラフィカルに表現することができます

例1:継承の関係

f:id:mohuNeko:20201226144433p:plain

  • クラス図では、長方形でクラスを表現します
  • 上から線で区切り、クラス名、フィールド名、メソッド名を書きます
  • 白抜きの矢印はサブクラスからスーパークラスを指定します

例2:実装の関係

f:id:mohuNeko:20201226151730p:plain

  • 白抜き破線の矢印は、実装クラスからインターフェースを指定します
    • この場合、PrintableインターフェースをPrintClassが実装しています

例3:集約の関係

f:id:mohuNeko:20201226151722p:plain

  • 白抜きのひし形矢印は、集約を表します
  • 集約(aggregation)とは、あるクラスの機能を持つクラスのことです
    • あるクラスの機能を、他のクラスにも持たせたい場合に、フィールドとしてそのクラスを持ち、そのクラスのメソッドを呼び出すメソッドを実装します
  • 例えば、上の関係は"家の中に猫が数匹いて、それぞれ色がついている" という関係を表しています。つまり、以下のような関係です

例4:アクセス制御

f:id:mohuNeko:20201226153033p:plain * 上の例は、アクセス制御を明示したクラス図です

表記 意味
+ public:どこからでもアクセス可能
# protected:クラス内および派生したクラスからアクセス可能
- private:クラス内でのみアクセス可能
~ package:パッケージ内でアクセス可能
  • 以下の順番で記述します
    • フィールド:アクセス制御 名前:型 = 初期値
    • メソッド:アクセス制御 名前(引数リスト):返り値
    • 引数リスト:アクセス制御:型 をコンマで区切る*

例5:クラスの関連

f:id:mohuNeko:20201226154227p:plain

  • 関連の名前に▶︎をつけて表記することができます
    • 1番目の図は、ClientがTargetを使用する
    • 2番目の図は、FactoryがPriductを生成する

シーケンス図

f:id:mohuNeko:20201226160549p:plain

  • シーケンス図はUMLの一つで、クラスやオブジェクト間のやりとりを時間軸に沿って表現する図です
  • クラス図が時間によって変化しない静的な関係を表していたのに対し、シーケンス図は、時間によって変化する動的な振る舞いを表します

ライフライン

メソッドの呼び出しとreturn

  • 横方向の黒矢印は、メソッドの呼び出しを表します
    • ここではclientがserverのopenメソッドを呼び出しているということです
  • 横方向の黒破線矢印は、メソッドの戻りを表します
    • ここでは、制御がserverに戻ったことを示しています

今日のポイント

  • UMLとは、ソフトウェアを形式化するための統一されたモデリング言語です
  • クラス図とは、UMLの一つで、システムの静的な構造・関係性を視覚的に表現するための図です
    • クラス、インスタンス、インターフェースの関係をグラフィカルに表現することができます
  • シーケンス図はUMLの一つで、クラスやオブジェクト間のやりとりを時間軸に沿って表現する図です
    • クラス図が時間によって変化しない静的な関係を表していたのに対し、シーケンス図は、時間によって変化する動的な振る舞いを表します
  • シーケンス図では、ライフラインを辿りながら上から順に読んでいきます

 本日もお疲れ様です😊