当前位置: 首页 > news >正文

java设计模式课后作业(待批改)

 此文章仅记录学习,欢迎各位大佬探讨

实验(一)     面向对象设计

实验目的

①使用类来封装对象的属性和功能;

②掌握类变量与实例变量,以及类方法与实例方法的区别;

知识回顾

详情见OOP课件

实验内容

1.编程创建一个Point类

  • 实验要求:

在其中定义两个变量表示一个点的坐标值,再定义构造函数初始化为坐标原点,然后定义一个方法实现点的移动,再定义一个方法打印当前点的坐标。并创建一个对象验证。

public class T1 {public static void main(String[] args) {point p = new point();p.OrginPoint(10, 10);p.MovePoint(-5, 6);p.PrintPoint();}
}class point {int x, y;void OrginPoint(int a, int b) {this.x = a;this.y = b;}void MovePoint(int a, int b) {this.x += a;this.y += b;}void PrintPoint() {System.out.print("当前坐标为:" + this.x + "_" + this.y);}
}

2.继承

  • 实验要求:

 super实例编写一个Java应用程序,该程序包括4个类:Teacher类、JavaTeacher 类、DBTeacher 和主类T3。要求

(1) Teacher类中有成员变量name和age,有构造方法:Teacher(String name,int age),并且有个teaching()方法,在teaching()方法中输出“上课......”的信息。

(2)JavaTeacher 类是Teacher 类的子类,有构造方法:JavaTeacher(String name,int age),在JavaTeacher 类中重写方法teaching(),在teaching()中调用父类teaching()方法,输出“打开eclipse,编写Java程序”的信息。

(3)DBTeacher 类是Teacher 类的子类,有个构造方法:DBTeacher(String name,int age),在DBTeacher类中重写方法teaching(),在teaching()中调用父类teaching()方法,输出“打开oracle,编写pl-sql程序”的信息。

(4)在主类T2的main方法中创建JavaTeacher DBTeacher 类的对象类测试这2个类的功能。

public class T2 {public static void main(String[] args) {JavaTeacher jt=new JavaTeacher("张三",20);jt.teaching();DBTeacher dbt=new DBTeacher("李四",19);dbt.teaching();}
}class Teacher {String name;int age;public Teacher(String n, int a){this.name=n;this.age=a;}public void teaching(){System.out.print("上课......");}
}class JavaTeacher extends Teacher{public JavaTeacher(String n, int a) {super(n, a);}public void teaching(){super.teaching();System.out.print("打开eclipse,编写Java程序");}
}
class DBTeacher extends Teacher{public DBTeacher(String n, int a) {super(n, a);}public  void teaching(){super.teaching();System.out.print("打开oracle,编写pl-sql程序");}
}

3.接口

  • 实验要求:

创建一个描述平面图形的接口Figure,添加1个area( ) 方法计算平面图形的面积。再创建2个类Circle(圆类)和Square(正方形类)分别实现接口Figure的area( )方法,并写出测试类计算并输出1个圆和一个正方形的面积。

public class T3 {public static void main(String[] args) {Circle c=new Circle();c.area(3);Square s=new Square();s.area(4);}
}
interface Figure {default void area() {}
}
class Circle implements Figure {public void area(int radius){System.out.println(3.14*radius*radius);}
}
class Square implements Figure {public void area(int length){System.out.println(length*length);}
}

4.多态

不够灵活的影院售票系统

某软件公司为某电影院开发了一套影院售票系统,在该系统中需要为不同类型的用户提供不同的电影票打折方式,具体打折方案如下:

(1) 学生凭学生证可享受票价8折优惠;

(2) 年龄在10周岁及以下的儿童可享受每张票减免10元的优惠(原始票价需大于等于20元);

(3) 影院VIP用户除享受票价半价优惠外还可进行积分,积分累计到一定额度可换取电影院赠送的奖品。

该系统在将来可能还要根据需要引入新的打折方式。

重新设计该软件:

public class T4 {public static void main(String[] args) {StudentTicket st=new StudentTicket();st.count();}
}
interface Preferential{double price=80.00;default void count(){}
}class StudentTicket implements Preferential{public void count() {System.out.println(0.8*this.price);}
}
class ChildTicket implements Preferential{public void count(){System.out.println(this.price-10);}
}
class VipTicket implements Preferential{public  void  count(){System.out.println(0.5*this.price);}
}

相关文章:

java设计模式课后作业(待批改)

此文章仅记录学习,欢迎各位大佬探讨 实验(一) 面向对象设计 实验目的 ①使用类来封装对象的属性和功能; ②掌握类变量与实例变量,以及类方法与实例方法的区别; 知识回顾 详情见OOP课件 实验内容…...

qt 语音引擎 QTextToSpeech Microsoft SAPI

QT中语音播报的代码 在QT中实现语音播报可以使用QTextToSpeech类&#xff0c;具体代码如下&#xff1a; #include <QCoreApplication> #include <QTextToSpeech> #include <QDebug>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);// 创…...

react hook: useimperativeHandle

通过 useImperativeHandle&#xff0c;子组件可以选择性地暴露给父组件某些属性或方法&#xff0c;而不是将所有属性和方法暴露出去。 父组件 获得自组件的 ref&#xff0c;就能通过该 ref 来调用 focus来聚焦等功能 在 forwardRef 包装的组件中&#xff0c;ref 固定地是第二个…...

30天自制操作系统(第28天)

28.1 alloca __alloca 会在下述情况下被 C 语言的程序调用&#xff08;采用 near-CALL 的方式&#xff09;。 1、要执行的操作从栈中分配 EAX 个字节的内存空间&#xff08; ESP - EAX; &#xff09; 2、要遵守的规则不能改变 ECX 、 EDX 、 EBX 、 EBP 、 ESI 、 EDI的值&am…...

Nginx启动服务

Nginx启动服务 一、启动前置 下载地址 如已安装Docker&#xff0c;下一步拉取Nginx最新的Docker镜像&#xff1a; docker pull nginx:latest查看拉取下来的镜像&#xff1a; docker images二、启动服务 创建Docker容器&#xff1a; docker run --name {projectname} -p 80…...

coqui-ai/TTS 案例model文件

GitHub - coqui-ai/TTS: &#x1f438;&#x1f4ac; - a deep learning toolkit for Text-to-Speech, battle-tested in research and production Coqui AI的TTS是一款开源深度学习文本转语音工具&#xff0c;以高质量、多语言合成著称。它提供超过1100种语言的预训练模型库&…...

如何利用API接口进行高效的商品变体管理?

要利用API接口进行高效的商品变体管理&#xff0c;您需要执行一系列策略和技术步骤来确保数据的准确性和实时性。以下是详细的指南&#xff1a; 1. 确定变体管理需求 分析产品&#xff1a;识别具有变体的产品&#xff0c;并明确这些变体的属性&#xff08;如尺寸、颜色、材质…...

扼杀网络中的环路:STP、RSTP、MSTP

目录 前言&#xff1a; 一、STP&#xff08;Spanning Tree Protocol&#xff09; 1.1 STP功能 1.2 STP应用 二、RSTP&#xff08;Rapid Spanning Tree Protocol&#xff09; 2.1 RSTP功能 2.2 RSTP应用 三、MSTP&#xff08;Multiple Spanning Tree Protocol&#xff0…...

青少年如何从零开始学习Python编程?有它就够了!

文章目录 写在前面青少年为什么要学习编程 推荐图书图书特色内容简介 推荐理由粉丝福利写在最后 写在前面 本期博主给大家带来一本非常适合青少年学习编程的图书&#xff0c;快来看看吧~ 青少年为什么要学习编程 青少年学习编程&#xff0c;就好比在他们年轻时就开始掌握一种…...

触发HTTP preflight预检及跨域的处理方法

最近在做需求的过程中&#xff0c;遇到了很多跨域和HTTP预检的问题。下面对我所遇到过的HTTP preflight和跨域的相关问题进行总结&#xff1a; 哪些情况会触发HTTP preflight preflight属于cors规范的一部分&#xff0c;在有跨域的时候&#xff0c;在一定情况下会触发preflig…...

【算法可视化】搜索算法专题

运行平台 Algorithm Visualizer 选数 [NOIP2002 普及组] 选数 // 导入可视化库 { const { Tracer, Array1DTracer, LogTracer, Layout, VerticalLayout } require(algorithm-visualizer); // }const N 4, K 3; //从包含4个元素的集合中选出3个数 let ans 0 //方案数 co…...

编写dockerfile挂载卷、数据容器卷

编写dockerfile挂载卷 编写dockerfile文件 [rootwq docker-test-volume]# vim dockerfile1 [rootwq docker-test-volume]# cat dockerfile1 FROM centosVOLUME ["volume01","volume02"]CMD echo "------end------" CMD /bin/bash [rootwq dock…...

理解OAuth 2.0

OAuth是一个关于授权&#xff08;authorization&#xff09;的开放网络标准&#xff0c;在全世界得到广泛应用&#xff0c;目前的版本是2.0版。 本文对OAuth 2.0的设计思路和运行流程&#xff0c;做一个简明通俗的解释&#xff0c;主要参考材料为RFC 6749。 一、应用场景 为了…...

8. Go实现Gin服务优雅关机与重启

文章目录 优雅关机优雅重启 无论是优雅关机还是优雅重启归根结底都是通过监听特定系统信号&#xff0c;然后执行一定的逻辑处理保障当前系统正在处理的请求被正常处理后再关闭当前进程。 优雅关机 优雅关机就是服务端关机命令发出后不是立即关机&#xff0c;而是等待当前还在…...

SQL 注入攻击 - cookie base64编码注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、Base64编码介绍 原理 Base64编码的原理是将三个字节的二进制数据(共24位)转换成四个ASCII字符。由于每个ASCII字符可以表示64种状态(2^6),刚好可以用来表示24位二进制数…...

Outlook邮箱后缀如何修改?怎么添加后缀?

Outlook邮箱后缀是什么&#xff1f;Outlook邮箱后缀可以改吗&#xff1f; Outlook邮箱广泛应用于企业和个人用户之间。在使用过程中&#xff0c;有时我们可能会因为某些原因需要修改Outlook邮箱后缀。那么&#xff0c;Outlook邮箱后缀如何修改呢&#xff1f;下面&#xff0c;A…...

[LeetBook]【学习日记】图书整理 II——用两个栈实现队列

题目 图书整理 II 读者来到图书馆排队借还书&#xff0c;图书管理员使用两个书车来完成整理借还书的任务。书车中的书从下往上叠加存放&#xff0c;图书管理员每次只能拿取书车顶部的书。排队的读者会有两种操作&#xff1a; push(bookID)&#xff1a;把借阅的书籍还到图书馆。…...

5G智能制造食品工厂数字孪生可视化平台,推进食品行业数字化转型

5G智能制造食品工厂数字孪生可视化平台&#xff0c;推进食品行业数字化转型。随着科技的飞速发展&#xff0c;食品工业正迎来一场前所未有的数字化转型。在这场转型中&#xff0c;5G智能制造工厂数字孪生可视化平台发挥着至关重要的作用。它不仅提高了生产效率&#xff0c;降低…...

一个系列很多样式的wordpress外贸建站模板

菌菇干货wordpress跨境电商模板 食用菌、羊肚菌、牛肝菌、香菇、干黄花菜、梅干菜、松茸wordpress跨境电商模板。 https://www.jianzhanpress.com/?p3946 餐饮调味wordpress跨境电商模板 豆制品、蛋黄糖、烘焙、咖啡、调料、调味酱、餐饮调味wordpress跨境电商模板。 http…...

Wireshark_labs TCP

在本实验中&#xff0c;我们将详细研究著名的TCP协议的行为。我们将通过从您的电脑向远程服务器传输一份150KB 的文件(一份Lewis Carrol 的“爱丽丝梦游仙境”文本)&#xff0c; 并分析TCP传输内容的发送和接收过程来实现。我们将研究TCP对序列和确认号的使用&#xff0c;以提供…...

用Python+OpenCV实现双目相机三维重建:从标定到triangulatePoints的完整流程

PythonOpenCV双目三维重建实战&#xff1a;从标定到点云生成的完整指南 当你第一次看到双目相机生成的彩色点云在屏幕上缓缓旋转时&#xff0c;那种震撼感难以言表。两个普通的USB摄像头&#xff0c;经过精确标定和算法处理&#xff0c;竟能重建出真实世界的三维结构。本文将带…...

信号分析避坑指南:MATLAB里算相位差,为什么你的结果总是不准?

MATLAB相位差计算避坑指南&#xff1a;从频谱泄漏到四象限陷阱的深度解析 在信号处理领域&#xff0c;相位差计算看似简单却暗藏玄机。许多工程师在使用MATLAB进行相位差分析时&#xff0c;经常会遇到结果跳变、误差过大甚至完全不符合预期的情况。这并非MATLAB的"bug&quo…...

鸿蒙ArkTS项目避坑指南:从零搭建外卖应用时,我踩过的那些‘坑’

鸿蒙ArkTS实战避坑手册&#xff1a;外卖应用开发中的12个致命陷阱 第一次在DevEco Studio里看到ArkTS的语法高亮时&#xff0c;我以为这不过是又一个前端框架的变种——直到我的外卖应用项目在模拟器上连续崩溃了七次。作为从Android原生开发转向鸿蒙的"老手"&#x…...

从零部署一个AI对话机器人:实战对比Gradio的Streaming UI与FastAPI的轻量API方案

从零部署一个AI对话机器人&#xff1a;实战对比Gradio的Streaming UI与FastAPI的轻量API方案 在AI应用开发领域&#xff0c;构建一个可交互的对话机器人已成为开发者验证想法、展示成果的标配需求。不同于传统Web开发的复杂架构&#xff0c;现代工具链让开发者能够用极简代码实…...

AgiBot World数据集实战:如何用百万级轨迹训练你的机器人策略(附避坑指南)

AgiBot World数据集实战&#xff1a;百万级轨迹训练机器人策略的完整指南 1. 数据集的革命性价值 在机器人学习领域&#xff0c;数据质量与规模直接决定了策略模型的性能上限。AgiBot World作为当前最大的开源机器人操作数据集&#xff0c;其核心突破在于&#xff1a; 规模突…...

对于对话中的文本简化,OpenClaw 的压缩比和可读性如何平衡?

关于文本简化中压缩比与可读性的平衡&#xff0c;这其实是一个在工程实践中经常遇到的核心矛盾。OpenClaw 的处理方式&#xff0c;仔细推敲起来&#xff0c;背后反映的是一种偏向实用主义的权衡思路。 压缩比高&#xff0c;通常意味着文本被大幅度精简&#xff0c;只保留最核心…...

JavaScript快速入门:10个基础概念让你轻松掌握编程核心

JavaScript快速入门&#xff1a;10个基础概念让你轻松掌握编程核心 【免费下载链接】You-Dont-Know-JS &#x1f4d7;&#x1f4d2; (PT-Br translation) JS Book Series. 项目地址: https://gitcode.com/gh_mirrors/you/You-Dont-Know-JS JavaScript作为现代Web开发的基…...

【仅限核心开发者知晓】Polars 2.0清洗Pipeline的4层IR抽象:为何比Pandas快11.8倍?源码注释级解读

第一章&#xff1a;Polars 2.0清洗Pipeline的演进本质与性能跃迁全景Polars 2.0 将清洗 Pipeline 从“惰性执行显式优化提示”升级为“全图级自动重写零拷贝流式调度”&#xff0c;其本质是将数据清洗从过程式编排转向声明式语义图推理。核心突破在于 LazyFrame 的物理计划生成…...

Translumo:打破语言屏障的实时屏幕翻译利器

Translumo&#xff1a;打破语言屏障的实时屏幕翻译利器 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是否曾在游戏中遇…...

手把手教你修复conda的HTTP 404错误:从错误日志分析到快速解决

深度解析Conda的HTTP 404错误&#xff1a;从日志分析到高效修复 当你满怀期待地输入conda create -n myenv python3.9准备创建新环境时&#xff0c;终端却无情地抛出一堆红色错误信息&#xff0c;最扎眼的就是那个requests.exceptions.HTTPError: 404 Client Error。这种突如其…...