固有のUMLクラス図

この記事では、UMLクラス図を要約します。UMLクラス図について話すつもりはありませんでした。デザインパターンを学習しているときに、UMLを見ると自動的に無視されるため、一見非常に複雑に感じました。しかし、学習が深まるにつれて、UMLクラス図を習得しておらず、デザインパターンや特定のフレームワークを全体的に制御できないことがわかりました。ですから、それを避けるのではなく、あえて直面するほうがよいのです。今日は、UMLクラス図とは何かを理解しましょう。

UMLクラス図と言えば、まずUMLとは何かを見てみましょう。ウィキペディアでは次のように定義されています。

  • UMLは統一モデリング言語(統一モデリング言語)であり、オブジェクト指向のソフトウェア集約型システム製品を開発するためのオープンメソッドを説明、視覚化、構築、および作成するために使用されるオープンメソッドです。UMLは、特にソフトウェアアーキテクチャレベルで、大規模で複雑なシステムのモデリングに効果的であることが証明されている一連のベストエンジニアリングプラクティスを示しています。

定義から少し抽象的かもしれませんが、率直に言って、図で構成される標準化されたモデリング言語です。一般的に、私たちが理解する言語はテキストで構成され、この統一モデリング言語は図で構成されます。プログラマーだけでなく、アナリスト、デザイナー、テスターなどもソフトウェアシステムを開発し、さまざまな人々がこのソフトウェアシステムを理解して伝達できるようにするために、このような言語のセットが生まれたことを私たちは知っています。この言語は図で構成されていると言いました。ここにはいくつかの種類の図があります。最も一般的に使用されるのは、ユースケース図、クラス図、シーケンス図、状態図、アクティビティ図、コンポーネント図、展開図などです。この記事は主にクラス図について説明しているので、他の図については詳しく理解できません。興味のある学生はインターネットでこのコンテンツを検索できます。

それでは、主題に戻りましょう。ソフトウェアシステム内のクラス間の関係を説明するクラス図に焦点を当てましょう。説明はクラスとクラスの関係であるため、最初に次のクラスがどのように表されるかを見てから、次にそれらの間の関係を見てみましょう。まず、非常に単純なPersonクラスを定義します。コードは、次のとおりです。

public class Person {
    
    
   private String name;
   private int age =1;

   public String getName() {
    
    
      return name;
   }
   public int getAge() {
    
    
      return age;
   }
   public void setName(String name) {
    
    
      this.name=name;
   }
   public void setAge(int age) {
    
    
      this.age=age;
   }
}

このPersonクラスは非常に単純で、nameとageの2つのフィールドを定義します。ここで、ageの初期値は1です。また、nameとageのsetメソッドとgetメソッドも定義します。非常に簡単です。次に、このクラスがUMLクラス図でどのように表されるかを見てみましょう。
単一クラス図
長方形を描画し、それを上から下に3つのグリッドに分割したことがわかります。最初のグリッドはクラス名であり、 2番目のグリッドはクラスのField属性です。ここでの属性の式も、次のように特定の形式になっています。

   权限 属性名:类型 [ = 默认值 ]

ここでは名前と年齢が非公開であるため、前に-を追加します。他にもいくつかの権限があります。public、protected、defaultで、それぞれ+、#、〜に対応します。ここでの年齢のデフォルト値は1であるため、タイプの末尾に「= 1」を追加してそれを示します。次に、3番目のボックスを見てみましょう。3番目のボックスはクラスのメソッドです。形式は次のとおりです。

权限  方法名称(参数列表) [ : 返回类型]

また、非常にシンプルで、一目でわかると思います。戻り値の型はオプションなので、ここではあまり説明しません。

クラス間の関係

さて、上記では、クラス図でのクラスの表現方法を簡単に理解してから、次のクラスとクラスの関係を理解し​​ます。クラスとクラスの間には、次のようにいくつかの関係があります。一般化(一般化) 、実装(実現、依存、関連付け、集約、構成。

私はそのような童謡を聞いたに違いありません。私は道路の脇でペニーを見つけ、それを警察の叔父に手渡しました。次に、この話をもとに、クラスとクラスの関係を一つ一つ説明していきます。

一般化関係

一般化関係は、Javaでは継承関係とも呼ばれます。UMLでは、中空の三角形の線を使用してそれを表します。StudenクラスとPolicemenクラスの2つのクラスを追加します。どちらのクラスも、Personクラスから継承し、次に、Theirクラス図は次のように表示されます。
一般化関係

実現関係

ここでの実現関係は、Javaのクラスとインターフェース間の実現関係です。UMLでは、白抜きの三角形の付いた点線を使用して示します。学生と警官の両方が職業であるため、学生の職業は学習であり、警察の職業は人々を保護することです。そこで、ここでは、専門的な方法を持つインターフェースを定義します。

public interface ICareer{
    
    
    void career();
}

このインターフェースは、UMLクラス図で次のように表されます。

インターフェース
これがインターフェースであることを示すために、インターフェース名に余分な<>文字があることがわかります。次に、StudentとPolicemanにこのインターフェイスを実装させます。UMLクラス図は次のとおりです。
実現関係

依存

依存関係は非常に弱い関係であり、一般的にあるクラスが別のクラスを使用することを指します。ここでは、学生がお金を受け取り、警察の叔父に渡します。学生と警察の叔父は一種の依存関係です。学生が警察にお金を見つけるのは事故であるため、警察に引き渡された後は、彼らの間に関係はありません。学生クラスに支払い方法と警察のクラスでお金を集める方法を追加します。学生の支払い方法が呼び出されると、警察のお金を集める方法が呼び出されます。学生のコードは次のとおりです。

public class Student{
    
    
....
....
public Policemen policemen;

.....
public void sendCoin(){
    
    
    policemen.receiveCoin();
}
}

StudentクラスはPolicemenクラスを参照していることがわかります。つまり、StudentはPolicemenに依存しています。この依存関係は矢印の付いた点線で表され、矢印は依存オブジェクトを指しています。警官UMLクラス図は次のように表示されます。
依存

接続関係

アソシエーション関係は比較的強い関係であり、それらの関係は比較的持続的で安定しています。たとえば、学生が家を出るとき、学生と家は一種の関係です。この関係は比較的安定しています。アソシエーションは、一方向アソシエーションと双方向アソシエーションに分けられます。一方のクラスが別のクラスを知っているか参照していて、もう一方のクラスがこのクラスを知らないか参照していない場合、2つのクラスは一方向に関連しています。たとえば、すべての学生が家を持っているため(孤児は考慮されていません)、学生と家の関係は一方向ですが、すべての家に学生がいるとは言えません。一方向の関連付けは矢印の付いた実線で表され、矢印は参照または含まれているクラス(ここではホームクラス)を指しています。例は次のとおりです。
一方向の関連付け

双方向の関連付けとは、2つのクラスがお互いの存在を知っていることを意味します。たとえば、教師と生徒の関係は双方向です。XiaoMingの中国人教師はTeacherZhangであり、TeacherZhangの生徒にはXiaoMingがいます。双方向の関連付けでは、矢印のない実線を使用して2つのクラスを接続します。例は次のとおりです。
双方向の関連付け

集約関係

集約関係は特殊な関連関係であり、集約関係は全体と部分の関係を強調し、部分は全体がなくても存在できます。たとえば、ガチョウの群れと大きなガチョウの関係は集約関係であり、大きなガチョウが群れを離れても独立して存在することができます。もう一つの例は、警察と制服の関係です。制服も警察の一部であり、制服は警察なしで存在することができます。UMLクラス図では、集約は中空のひし形の付いた直線で表され、ひし形は全体を指しています。
集約関係

組み合わせ関係

組み合わせ関係も特殊な連想関係であり、集約関係と非常によく似ており、全体と部分の関係も強調されていますが、全体がないと部分は存在できないという違いがあります。たとえば、学生が手でお金を受け取る場合、手は学生の一部ですが、手は学生から独立して存在することはできません。手が独立して存在できるとしたら、それについて考えるのはひどいことです。ここでは、学生と手を組み合わせ関係と呼びます。これは、ひし形が全体を指している実線のひし形で表されています。

組み合わせ関係
さて、これらの関係はここではほとんど同じです。実際、依存関係、関連付け、集約、および組み合わせの強みはますます強くなっていることがわかります:組み合わせ>集約>関係>依存関係。

最後に、UMLクラス図を無意識のうちに使用して、生徒がお金を拾うという上記の話を完成させたことがわかります。
完全なクラス図

おすすめ

転載: blog.csdn.net/qq_32505207/article/details/109594114