• 面向对象第二单元总结


    面向对象第二单元总结

    设计策略

    调度器

    负责协调输入线程和电梯线程,维护等待乘客的队列,负责给电梯分配任务,负责分析乘客应该在哪层换乘。电梯可以从队列中获取乘客的信息,输入部分也可以向队列中添加乘客的信息。调度器要保证两个部分是线程安全的。

    电梯

    维护自己从调度器获取的等待乘客的队列,可以从调度器获取乘客的信息。不关心怎样接人效率高、不关心有没有载人、不关心载的人在几层下。电梯需要知道的只是要往几层跑以及到一层时要不要开门。

    输入部分

    负责向调度器提供乘客请求的信息

    乘客

    工具人,没有自己的思想,电梯到了就上,让在哪层换乘就在哪层换乘,到达目的楼层就离开电梯。

    可扩展性分析

    • 在设计上采取了工厂模式来进行电梯类对象的创建,可扩展性比较好
    • 电梯、调度器和输入是分别进行工作的,对于某一类的扩展不会影响到其他类的工作
    • 在电梯调度上主要采取了随机分配的方法,对于多个电梯对象的情况下可能会出现问题
    • 在换乘问题上是针对特定情况下进行的换乘方案,可扩展性比较差

    程序结构分析

    第五次作业

    UML

    复杂度分析

    第六次作业

    UML

    复杂度分析

    第七次作业

    UML

    复杂度分析

    自己程序的bug

    由于在调度电梯的时候我采取的方式是随机分配,即所有电梯竞争一个资源,所以有可能出现一个电梯竞争到了所有的资源,而其他电梯还空着的情况,从而造成RTE。

    寻找他人bug的策略

    记录下自己的测试样例,尤其是自己调试过程中出错的样例,然后对他人的代码进行测试。

    心得体会

    在这一单元的学习过程中,我学会了java多线程的使用方法,并且了解了java项目的一些基本架构。

    线程安全方面,一是注意临界资源使用的同步,二是注意避免死锁,临界区应该尽量的短,不用同步时立即释放锁,尽力避免锁内拿锁。

    设计方面,应该分离各部分功能,使得更改要求时不至于全部更改,注意对一个类功能的抽象,建立完后审视,那些是这个,类必须具有的方法,那些是这个类可有可无的方法,对类进行瘦身,才能在后来更好的继承,增加功能总比增删功能要简单些也不容易出错。

  • 相关阅读:
    Electron+Vue开发跨平台桌面应用
    vue-cli3.0 脚手架搭建项目的过程详解
    dart-sass与node-sass介绍
    创建vue-cli4项目,报错 ERROR command failed: yarn
    CSS Grid 网格布局教程
    总结5种自适应方式
    前端实战:electron+vue3+ts开发桌面端便签应用
    SDK 和 API 的区别是什么?
    Pinia 快速入门
    返回数组中最大的三个数
  • 原文地址:https://www.cnblogs.com/spookydreamr/p/12728378.html
Copyright © 2020-2023  润新知