アダプタ、コンバインモード

目的とタスク

目的:UMLに精通し、アダプタ、コンバインモードに精通。

タスク:実験の内容以下は、完全なアダプター、実験の組み合わせ機能モードの実装を必要とします。

コンテンツのプレビュー

UMLアダプタの使用、組み合わせモードに精通し、コースの内容を確認します。

実験内容と要件

  • アダプタモード:

1、クラススクエアSQU(フロートの従来の方法  正方形の面積を算出するためのL)は、今正方形面積の円クラス内接円を算出するために必要とされる、アダプタモードの出力領域、多重請求スクエアを実装、クラス図とコーディングを描きます。

  • 複合モード:

次のシーンがあります。大学の構造は次のとおりです。大学 - カレッジ - 部門、私たちの学校によると、たとえば(指定行にメッセージを送ることができる構造と大学の要件をインスタンス化してください:コンピュータ理工学研究科は、ソフトウェア工学にメッセージを送ることができますベース)、クラスとコーディング図の組み合わせでモードを描くください。

結果(利用可能続き)

A:アダプタモード

 

ターゲット(抽象クラスを対象):

Circle.java:

パッケージの対象。

 

パブリック インターフェイスサークル{

    公共 フロート inter_squ(フロート L)。

    公共 フロート SQU(フロート L)。

}

 

アダプタ(アダプタクラス):

Adapter.java:

 

Adaptee (カテゴリー別適応):

Square.java:

 

メイン:

Main.java:

II:コンバインモード

Component(抽象构件):

univComponent.java:

 

Leaf(叶子构件):

Department.java:

 

Composite(容器构件):

College,java:

 

Univ.java:

package Composite;

import java.util.ArrayList;

import Component.univComponent;

import Composite.College;

public class Univ extends univComponent{

    private String name;

    private java.util.List<College> collegeList=new ArrayList<College>();

    public Univ(String name){

        this.name=name;

    }

    public void add(univComponent univComponent) {

        // TODO Auto-generated method stub

        collegeList.add((College)univComponent);

       

    }

    public java.util.List<College> getCollegeList(){

        return collegeList;

    }

    public void setCollegeList(java.util.List<College> collegeList){

        this.collegeList=collegeList;

    }

    @Override

    public void sendMessage(String msg,univComponent univComponent) {

        College college=(College)univComponent;

        if(collegeList.contains(univComponent)){

           System.out.println(this.name+"发送信息"+college.getName()+":"+msg+"");

 

        }

    }

    public void remove(univComponent univComponent){

        collegeList.remove(univComponent);

    }

    @Override

    public String getName() {

        // TODO Auto-generated method stub

        return name;

    }

    public void setName(String name){

        this.name=name;

    }

 

}

 

Main:

Main.java:

 

 

 

思考题:

  1. 如何区别类适配器和对象适配器?

类适配器需要通过创建自身创建出一个新的Adapter,对象适配器可以通过已有的Adapter对象来装换接口类适配器通过覆写来扩展specificRequest(),对象适配器是包含关系不能扩展类适配器因为是继承所以相对静态,对象适配器是包含,所以相对灵活

2、算术运算:1+2中1、2是运算量,+是运算符,另外1+(2*3)也是算术运算,但是包含了(2*3),本身也是算术运算,请结合组合模式给出该算术运算的类图。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: blog.csdn.net/yszbrzdd/article/details/93521322