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

oo第二次博客作业

第五次作业及第六次作业未能顺利完成,在这里不再赘述。

第七次作业:

类图:

本次作业所需要完成的是一个出租车的模拟乘客呼叫与应答系统。在本次作业中,除去提供的GUI内容,我一共编写了7个类。

GetRequest类作为主类,负责获取地图以及请求,并完成各项初始化要求。地图的输入采用文件输入,在地图不符合要求时会报错并退出程序,请求的输入采用控制台输入,对请求的格式检查采用正则匹配的方式,若请求不合乎规范则会输出格式错误的提示,并跳过该请求。

Request类是请求类,储存了一条请求的各类信息,并用于发出请求信号,监测请求范围内是否有符合要求的出租车,并对出租车进行筛选。同时创建计算线程用于计算该请求出发点和目的地到其他各点的最短距离,以供筛选出租车及出租车寻路使用。

Calculate类是计算类,用于计算请求出发地与目的地到地图其余各点的最短距离,只由请求线程创建作为请求线程的子线程。

Taxi类是出租车类,储存出租车的各类信息,同时由请求类分派请求。在等待服务状态进行随机运动,且每20s休息1s。在接单之后,根据计算类已算出的各点的最短距离,按照最短距离减少的规律来搜索最短路径。

Print类、Taximessage类和Pointmessage类均用于储存所需输出的数据,其中Print类用于储存所需输出的所有数据,并进行文件输出;Taximessge用于存储请求发出过程中所有响应的出租车信息;Pointmessage类用于存储出租车在完成请求过程中经过的各点及时间。

bug分析:本次作业在完成过程中忽略了请求出发地和目的地相同的情况,属于失误型的bug;而在设计问题上,由于要考虑代码的执行效率,使用真实的系统时间模拟会产生较大误差,所以采用模拟时间来进行模拟,单也因此会与请求的真实完成情况存在出入。

感想与体会:

多线程设计的学习,对于Java编程技术不甚精通的我确实是一个很大的挑战,多线程操作所要考虑的安全性,以及在模拟时间时需要考虑代码所需的运行时间,这些都给我带来了不小的困难。但是多线程设计也让我看到了更多的可能性,这样的编程方式使得我过去难以解决的问题得以解决,让我开辟出一种新的编程思路。

转载于:https://www.cnblogs.com/black-bob/p/8980055.html

相关文章:

  • react 进行时
  • Spark2.1.0之运行环境准备
  • 静态路由与扩展ACL配置
  • 路由器DHCP服务、VTP、SHRP和PVST+生成树的配置实验
  • 这套方法论,彻底终结MySQL同步延迟问题
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 让代码更容易读
  • 取某个数字的各个位数字
  • mybatis源码解读(二)——构建Configuration对象
  • 创业元老崔姗姗回归背后,百度变革进入深水区
  • jdbc连接Mysql数据库,增删改查
  • 《图解TCP/IP》笔记
  • Power BI连接至Mogo Altas Connector For BI
  • 大数据-10-Spark入门之支持向量机SVM分类器
  • 短视频一对一社交程序源码----布谷鸟直播勇敢的短视频突围者
  • 时间复杂度分析经典问题——最大子序列和
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【RocksDB】TransactionDB源码分析
  • C# 免费离线人脸识别 2.0 Demo
  • ECMAScript6(0):ES6简明参考手册
  • hadoop集群管理系统搭建规划说明
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Python3爬取英雄联盟英雄皮肤大图
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • spring boot下thymeleaf全局静态变量配置
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Vue.js源码(2):初探List Rendering
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 对象管理器(defineProperty)学习笔记
  • 探索 JS 中的模块化
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 一道面试题引发的“血案”
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 阿里云服务器如何修改远程端口?
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (论文阅读11/100)Fast R-CNN
  • (四)汇编语言——简单程序
  • (太强大了) - Linux 性能监控、测试、优化工具
  • ***利用Ms05002溢出找“肉鸡
  • .bat文件调用java类的main方法
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET大文件上传知识整理
  • .sh 的运行
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @Not - Empty-Null-Blank
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [flask]http请求//获取请求头信息+客户端信息