首页 > 其他分享 >11.17

11.17

时间:2024-11-13 08:50:12浏览次数:1  
标签:11.17 void System dog cat public out

[实验任务一]:双向适配器
实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。
实验要求:

  1. 画出对应的类图;

  2. 提交源代码;

package adapter;

// Cat接口
interface Cat {
    void cry();
    void catchMouse();
}

// Dog接口
interface Dog {
    void wang();
    void action();
}

// 具体的猫类
class ConcreteCat implements Cat {
    @Override
    public void cry() {
        System.out.println("猫叫:喵喵喵~");
    }

    @Override
    public void catchMouse() {
        System.out.println("猫抓老鼠");
    }
}

// 具体的狗类
class ConcreteDog implements Dog {
    @Override
    public void wang() {
        System.out.println("狗叫:汪汪汪!");
    }

    @Override
    public void action() {
        System.out.println("狗在追球");
    }
}

// 双向适配器
class TwoWayAdapter implements Cat, Dog {
    private Cat cat;
    private Dog dog;

    public void setCat(Cat cat) {
        this.cat = cat;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    // 实现Cat的方法
    @Override
    public void cry() {
        if (cat != null) {
            cat.cry();
        } else if (dog != null) {
            // 狗学猫叫
            System.out.println("狗学猫叫:喵~汪~");
        }
    }

    @Override
    public void catchMouse() {
        if (cat != null) {
            cat.catchMouse();
        } else if (dog != null) {
            // 狗学猫抓老鼠
            System.out.println("狗学猫抓老鼠");
        }
    }

    // 实现Dog的方法
    @Override
    public void wang() {
        if (dog != null) {
            dog.wang();
        } else if (cat != null) {
            // 猫学狗叫
            System.out.println("猫学狗叫:汪~喵~");
        }
    }

    @Override
    public void action() {
        if (dog != null) {
            dog.action();
        } else if (cat != null) {
            // 猫学狗的动作
            System.out.println("猫学狗追球");
        }
    }
}

// 测试类
public class AdapterDemo {
    public static void main(String[] args) {
        // 创建具体的猫和狗
        Cat cat = new ConcreteCat();
        Dog dog = new ConcreteDog();
        
        // 创建双向适配器
        TwoWayAdapter adapter = new TwoWayAdapter();
        
        // 让猫学狗叫
        System.out.println("===猫学狗===");
        adapter.setCat(cat);
        adapter.wang();  // 猫学狗叫
        adapter.action();  // 猫学狗的动作
        
        // 让狗学猫叫
        System.out.println("\n===狗学猫===");
        adapter.setCat(null);  // 清除猫的引用
        adapter.setDog(dog);
        adapter.cry();  // 狗学猫叫
        adapter.catchMouse();  // 狗学抓老鼠
    }
}

3.注意编程规范。

标签:11.17,void,System,dog,cat,public,out
From: https://www.cnblogs.com/wlxdaydayup/p/18543016

相关文章

  • 11.11 ~ 11.17
    11.11早晨去级部转了一圈然后没看见人就直接回来了PEP说没事?不懂,有老师叫我再说(上午模拟赛。好像是直接搬了场梦熊S组上来,有少部分人看过题......
  • 微信电脑版v3.9.11.17 防撤回版 多开版
    版本特色:1、看到对方撤回的消息2、多账号可正常登录修改原理,如下图:使用说明:解压后,双击start_Wechat.exe来运行软件下载地址:Wechat防撤回版v3.9解压密码:helloh下载时可能会有广告,忽略,等下载结束即可部分杀软会因该版本软件未购买签名证书(如下图)而阻止运行,可通过暂时......
  • 微信电脑版v3.9.11.17 防撤回版 多开版
    版本特色:1、看到对方撤回的消息2、多账号可正常登录修改原理,如下图:使用说明:解压后,双击start.bat来运行软件下载地址:Wechat防撤回版v3.9解压密码:helloh下载时可能会有广告,忽略,等下载结束即可部分杀软会因该版本软件未购买签名证书(如下图)而报毒,可通过加入排除项或者信......
  • 大二打卡(11.17)
    今天做了什么:早上七点,昨天老姐说九点开席,我寻思我直接睡到八点,洗漱啥的半个小时,这不正好,结果炮仗声七点多就给我闹醒了,一堆不认识的亲戚开始上楼下楼,我躲在最深处的我的卧室根本不敢出去,谁也不认识,都不知道该怎么称呼,老爸老妈老姐都在忙,不躲着干嘛啊,过了会儿,八点多快九点了,表哥来......
  • 11.17
    <selectname="sex"id="sex"required><optionvalue="男">男</option><optionvalue="女">女</option></select>、、、、下拉框<p><inputtype="radi......
  • 11.17
    今天实现后端代码packagecom.example.controller;importcom.example.pojo.Department;importcom.example.pojo.Result;importcom.example.pojo.Staff;importcom.example.service.LogONService;importorg.apache.ibatis.annotations.Delete;importorg.apache.ibati......
  • 11.17
    今日学习内容<%--CreatedbyIntelliJIDEA.TochangethistemplateuseFile|Settings|FileTemplates.--%><%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</ti......
  • 2023.11.17-20湖北 武汉 2023第五届全国生物医学数据挖掘与计算学术会议拟于2023年1
     2023第五届全国生物医学数据挖掘与计算学术会议拟于2023年11月17日-20日于华中科技大学举行。会议简介:     全国生物医学数据挖掘与计算学术会议是一个专注于生物医学大数据算法、软件与人工智能方法的重要学术盛会。生物医学领域的快速发展导致了大量的生物医学数据......
  • 11.13-11.17
    11.13今日任务:Java测试(完成)Java作业(完成)英语单词(完成) 11.14今日任务:数据结构上机(完成)英语单词(完成) 11.15今日任务:休息javaweb学习(完成)  11.16今日任务:乒乓球比赛(完成)英语单词(完成) 11.17今日任务:英语单词(完成)......
  • 11.17双向循环链表应用
     #include<bits/stdc++.h>usingnamespacestd;typedefstructf{intdata;f*prior;f*next;}node,*Node;voidbuild(Nodep){intn;cin>>n;while(n--){intx;cin>>x;Nodenow=newnode()......