面向对象设计作业(二)

1.机器人设计

设计一种机器人,可以移动,变形。机器人有控制芯片,可以更换,并且根据机器人内部的芯片,更改行为方式,比如移动方式有步行,跑步等,变形可以变成汽车,飞机等。

要求:

1、给出面向对象的设计(类图);

2、给出Java代码实现。

interface ControlChip{void move(); //控制芯片接口void transform();
}
class Robot{//机器人类ControlChip controlChip;public Robot(ControlChip controlChip){this.controlChip=controlChip; //构造方法}public void move(){controlChip.move(); //控制芯片对应的移动方法}public void transform(){controlChip.transform();}
}
class WalkControlChip implements ControlChip{//步行芯片@Overridepublic void move() {System.out.println("步行。。。");}@Overridepublic void transform() {System.out.println("变形");}
}
class RunningControlChip implements ControlChip{//跑步芯片@Overridepublic void move() {System.out.println("跑步。。。");}@Overridepublic void transform() {System.out.println("变形");}
}
class CarControlChip implements ControlChip{//汽车芯片@Overridepublic void move() {System.out.println("移动");}@Overridepublic void transform() {System.out.println("汽车变形");}
}
class AirPlaneControlChip implements ControlChip{//飞机芯片@Overridepublic void move() {System.out.println("移动");}@Overridepublic void transform() {System.out.println("飞机变形");}
}
public class RobotTest {public static void main(String[] args) {WalkControlChip w=new WalkControlChip();RunningControlChip r=new RunningControlChip();CarControlChip c=new CarControlChip();AirPlaneControlChip a=new AirPlaneControlChip();Robot r1=new Robot(w);r1.move();r1.transform();Robot r2=new Robot(c);r2.move();r2.transform();}
}

2.智能形状识别器

设计一种智能形状识别器,能够识别出具体形状并输出相关信息。如传入圆形对象,则识别器则输出圆形、半径与面积等信息;传入矩形对象,能输出矩形、面积、长宽信息。

程序中识别功能不能使用if语句进行形状判断。

要求:

    1、给出面向对象的设计(类图);

    2、给出Java代码实现。

import java.util.List;interface Shape{double calculateArea();//形状接口,抽象出求面积方法
}
class Circle implements Shape{//圆类double radius;double area; //面积public Circle(double radius){this.radius=radius;}@Overridepublic double calculateArea() {return Math.PI*radius*radius;}public double getRadius(){return this.radius;}}
class Rect implements Shape{//矩形类double length;double width;public Rect(double length,double width){this.length=length;this.width=width;}@Overridepublic double calculateArea(){return length*width;}public double getLength(){return length;}public double getWidth(){return width;}
}
class Recognize{//识别器类Shape shape; //形状public Recognize(Shape shape){this.shape=shape;double area=shape.calculateArea();if(shape instanceof Circle){//判断是圆Circle circle=(Circle) shape; //向下转换System.out.println("Shape: Circle");System.out.println("Circle Radius:"+circle.getRadius());System.out.println("Circl Areae:"+area);}else if(shape instanceof Rect){Rect rect=(Rect) shape;System.out.println("Shape: Rect");System.out.println("Rect Length:"+rect.getLength());System.out.println("Rect Width:"+rect.getWidth());System.out.println("Rect Area:"+area);}}}
public class RecognizerTest {public static void main(String[] args) {Circle circle=new Circle(10);Rect rect=new Rect(6,8);Recognize recognize1=new Recognize(circle);Recognize recognize2=new Recognize(rect);}
}

3.狗嗅+狗咬人

狗有多种嗅的功能,嗅到骨头流口水,嗅到老虎吓得跑,嗅到主人很高兴。

人有生命值(假设100),所有的狗都会咬人,藏獒(或泰迪)攻击一次可减少50(或1)个生命值。我先后养了藏獒、泰迪,都取了相同的宠物名-小黄。

结构小黄都咬人了。

要求:

    1、给出面向对象的设计(类图);

    2、给出Java代码实现。

class Person{//人类int health=100;private Dog dog;public int getHealth(){return health;}public void setDog(Dog dog) {this.dog = dog;}public void setHealth(int health){this.health=health;}
}
class  Dog{String name;public void sniff(Object object){if(object instanceof Bone){System.out.println(name+"嗅到骨头流口水");}else if(object instanceof Tiger){System.out.println(name+"嗅到老虎吓得跑");}else if(object instanceof Person){System.out.println(name+"嗅到主人很高兴");}}public void bite(Person person){System.out.println(name+"咬人");}
}
class Bone{}
class Tiger{}
class Tibetan extends Dog{public Tibetan(String name){this.name=name;}@Overridepublic void bite(Person person){person.setHealth(person.getHealth()-50);System.out.println(name+"咬人了");}
}
class Teddy extends Dog{public Teddy(String name){this.name=name;}@Overridepublic void bite(Person person){person.setHealth(person.getHealth()-1);System.out.println(name+"咬人了");}
}
public class DogTest {public static void main(String[] args) {Person p=new Person();Tibetan t1=new Tibetan("小黄1");Teddy t2=new Teddy("小黄2");Bone b=new Bone();p.setDog(t1);t1.sniff(b);t1.bite(p);System.out.println(p.getHealth());p.setDog(t2);t2.sniff(b);t2.bite(p);System.out.println(p.getHealth());}
}

4.银行账户攻防

假定银行账户能够提供存款、取款和查询余额操作。

系统受到黑客攻击,设计出一种程序,将取款多少变成存款多少。请实现上述要求。

要求:

    1、给出面向对象的设计(类图);

    2、给出Java代码实现。

class BankAccount{private double balance;public  BankAccount(double balance){this.balance=balance; //原有多少钱}public void deposit(double money){this.balance=balance+money;}public void withdraw(double money){deposit(money);} //取款变成存款public double getBalance(){return balance;}
}
public class BankTest {public static void main(String[] args) {BankAccount bankAccount=new BankAccount(1400);System.out.println(bankAccount.getBalance());bankAccount.deposit(400);System.out.println(bankAccount.getBalance());bankAccount.withdraw(500);System.out.println(bankAccount.getBalance());}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/123463.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React-表单受控绑定和获取Dom元素

一、表单受控组件 1.声明一个react状态 说明&#xff1a;useState const [value,setValue]useState("") 2.核心绑定流程 2.1绑定react状态 <div><input value{value}type"text"></input> 2.2绑定onChange事件 说明&#xff1a;e.…

Postgresqlddl在事务中可以回滚,truncate时relfilenode在当前会话会改变

Postgresql的事务里面ddl可以回滚,这点和oracle不太一样。其中postgresql alter table事务操作中&#xff0c;包括回滚的整个过程中表对象的relfilenode不变&#xff0c;但是postgresql truncate事务操作中&#xff0c;一旦执行truncate操作表对象的relfilenode在当前会话就变了…

rust学习-LinkedList

介绍 A doubly-linked list with owned nodes. 自有节点的双向链表 pub struct LinkedList<T, A = Global> whereA: Allocator, {/* private fields */ }使用 Vec 或 VecDeque 几乎总是更好,因为基于数组的容器通常更快、内存效率更高,并且可以更好地利用 CPU 缓存 …

Scrum敏捷开发企业级实战培训// Leangoo领歌 //

课程概述 Scrum是目前运用最为广泛的敏捷开发方法&#xff0c;是一个轻量级的项目管理和产品研发管理框架。 这是一个两天的实训课程&#xff0c;面向研发管理者、项目经理、产品经理、研发团队等&#xff0c;旨在帮助学员全面系统地学习Scrum和敏捷开发, 帮助企业快速启动敏…

《系统之美》读书笔记 - 系统及系统的三大特征

目录 什么是系统&#xff1f; 如何理解系统的三种构成要件&#xff1f; 系统的三大特征是什么&#xff1f; 对我们有什么启发&#xff1f; 什么是系统&#xff1f; 系统不仅仅是一些事务的简单集合&#xff0c;而是一个由一组相互连接的要素构成的、能够实现某个目标的整体…

队列(Queue)概念+通过单、双链表来模拟队列+环形队列+OJ面试题(用队列实现栈、用栈实现队列、设计环形队列)

文章目录 队列(Queue)一、 概念1.尾进头出 二、模拟队列1.单链表实现队列1.1 设置结点1.2 入队offer1.3出队 poll1.4 empty方法&#xff0c;peek方法&#xff0c;getUsedSize方法 2.双链表实现队列2.1 创建结点2.2 入队列2.3 出队列2.4 peek、size、isEmpty方法 三、环形队列1.…

LeetCode--1.两数之和

文章目录 1 题目描述2 解题思路2.1 暴力破解2.2 使用 Map 1 题目描述 给定一个整数数组 nums 和一个整数目标值 target, 请你在该数组中找出 和为目标值 target 的那 两个 整数, 并返回它们的数组下标 你可以假设每种输入只会对应一个答案。但是, 数组中同一个元素在答案里不…

Java排序学习

int[] 数组排序 升序排序&#xff1a; Arrays.sort(num);降序排序&#xff1a; num IntStream.of(num) // 变为 IntStream.boxed() // 变为 Stream<Integer>.sorted(Comparator.reverseOrder()) // 按自然序相反排序.mapToInt(Integer::intValue) …

vivo自研AI大模型即将问世,智能手机行业加速迈向AI时代

当前&#xff0c;以大模型为代表的人工智能技术已发展为新一轮科技革命和产业变革的重要驱动力量&#xff0c;被视作推动经济社会发展的关键增长极。 AI大模型潮起&#xff0c;千行百业走向百舸争流的AI创新应用期&#xff0c;前沿信息技术向手机、PC、车机等消费级终端加速渗…

AJAX原理及介绍

文章目录 AJAX&#xff08;Asynchronous Javascript And Xml&#xff09;传统请求及缺点AJAX概述XMLHttpRequest对象AJAX GET请求AJAX GET请求的缓存问题AJAX POST请求基于JSON的数据交换基于XML的数据交换AJAX乱码问题AJAX的异步与同步AJAX代码封装AJAX实现省市联动AJAX跨域问…

[Unity][VR]透视开发系列3-Passthrough应用的真机测试方法

【视频讲解】 视频讲解地址请关注我的B站。 专栏后期会有一些不公开的高阶实战内容或是更细节的指导内容。 B站地址: https://www.bilibili.com/video/BV1Zg4y1w7fZ/ 我还有一些免费和收费课程在网易云课堂(大徐VR课堂): https://study.163.com/provider/480000002282025/…

nodejs+vue食力派网上订餐系统-计算机毕业设计

采用当前流行的B/S模式以及3层架构的设计思想通过 技术来开发此系统的目的是建立一个配合网络环境的食力派网上订餐系统&#xff0c;这样可以有效地解决食力派网上订餐管理信息混乱的局面。 本设计旨在提高顾客就餐效率、优化餐厅管理、提高订单准确性和客户的满意度。本系统采…

Android问题笔记四十三:JNI 开发如何快速定位崩溃问题

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

vue3 Teleport组件

<Teleport> 是一个内置组件&#xff0c;它可以将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层 的位置去。 <template><el-button click"dialogVisible true">打开弹窗</el-button><el-dialogv-model"dialogVisible&…

python爬虫selenium和ddddocr使用

python爬虫selenium和ddddocr使用 selenium使用 selenium实际上是web自动化测试工具&#xff0c;能够通过代码完全模拟人使用浏览器自动访问目标站点并操作来进行web测试。 通过pythonselenium结合来实现爬虫十分巧妙。 由于是模拟人的点击来操作&#xff0c;所以实际上被反…

Gitee 发行版

Gitee 发行版 1、Gitee 发行版管理2、项目仓库中创建发行版本3、项目中导入3.1 gradle配置3.2 dependencies执行正常&#xff0c;包没有下载 1、Gitee 发行版管理 Gitee 发行版&#xff08;Release&#xff09;管理 2、项目仓库中创建发行版本 按照Gitee官网操作就行 3、项目…

NUUO摄像头远程命令执行漏洞复现 [附POC]

文章目录 NUUO 摄像头远程命令执行漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 NUUO 摄像头远程命令执行漏洞复现 [附POC] 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff…

Linux 命令|服务器相关

1. 在公共 linux 上创建 python 虚拟环境 【精选】在公共Linux服务器上创建自己的python虚拟环境_服务器创建自己的环境-CSDN博客 2. 查看现存的状态&#xff0c;看有没有程序在跑 nvidia-smi命令详解-CSDN博客 3. 上传本地文件到服务器 在本地 Mac 计算机的终端中&#x…

3D RPG Course | Core 学习日记一:初识URP

前言 最近开始学习Unity中文课堂M_Studio&#xff08;麦大&#xff09;的3D RPG Course&#xff0c;学习一下3D RPG游戏核心功能的实现&#xff0c;第一课我们学习到的是地图场景的编辑&#xff0c;其中涉及到了URP渲染。 我们首先进入Unity资源商店把地图素材和人物素材导入好…

简单明了!网关Gateway路由配置filters实现路径重写及对应正则表达式的解析

问题背景&#xff1a; 前端需要发送一个这样的请求&#xff0c;但出现404 首先解析请求的变化&#xff1a; http://www.51xuecheng.cn/api/checkcode/pic 1.请求先打在nginx&#xff0c;www.51xuecheng.cn/api/checkcode/pic部分匹配到了之后会转发给网关进行处理变成localho…