js设计模式与绘制UML图 - 停车场的面试题

news/2024/7/19 15:24:19 标签: 设计模式, UML, class, js
class="baidu_pl">
class="article_content clearfix">
class="markdown_views prism-atom-one-dark">

题干描述:

  • 某停车场,分 3 层,每层 100 车位
  • 每个车位可以监控车辆的停入和离开
  • 车辆进入前,显示每层的空余车位数量
  • 车辆进入时,摄像头可识别车牌号和时间
  • 车辆出来时,出口显示器显示车牌号和停车时长

绘制class="tags" href="/tags/UML.html" title=UML>UML的官网地址;class="tags" href="/tags/UML.html" title=UML>UML类如下:
在这里插入图片描述
实现代码如下:

class="prism language-javascript">class="token comment">/**
题干描述:
- 某停车场,分 3 层,每层 100 车位
- 每个车位可以监控车辆的停入和离开
- 车辆进入前,显示每层的空余车位数量
- 车辆进入时,摄像头可识别车牌号和时间
- 车辆出来时,出口显示器显示车牌号和停车时长
 */

class="token comment">// 车
class="token keyword">class class="token class-name">Car class="token punctuation">{
    class="token function">constructorclass="token punctuation">(numclass="token punctuation">) class="token punctuation">{
        class="token keyword">thisclass="token punctuation">.num class="token operator">= numclass="token punctuation">;
    class="token punctuation">}
class="token punctuation">}
class="token comment">// 摄像头
class="token keyword">class class="token class-name">Camera class="token punctuation">{
    class="token function">shotclass="token punctuation">(carclass="token punctuation">) class="token punctuation">{
        class="token keyword">return class="token punctuation">{
            numclass="token punctuation">: carclass="token punctuation">.numclass="token punctuation">,
            inTimeclass="token punctuation">: Dateclass="token punctuation">.class="token function">nowclass="token punctuation">(class="token punctuation">)
        class="token punctuation">}
    class="token punctuation">}
class="token punctuation">}

class="token comment">// 出口显示屏幕
class="token keyword">class class="token class-name">Screen class="token punctuation">{
    class="token function">show class="token punctuation">(carclass="token punctuation">, inTimeclass="token punctuation">) class="token punctuation">{
        consoleclass="token punctuation">.class="token function">logclass="token punctuation">(class="token string">"车牌号"class="token punctuation">, carclass="token punctuation">.numclass="token punctuation">)class="token punctuation">;
        consoleclass="token punctuation">.class="token function">logclass="token punctuation">(class="token string">"停车时间"class="token punctuation">, Dateclass="token punctuation">.class="token function">nowclass="token punctuation">(class="token punctuation">) class="token operator">- inTimeclass="token punctuation">)class="token punctuation">;
    class="token punctuation">}
class="token punctuation">}

class="token comment">// 停车场
class="token keyword">class class="token class-name">Park class="token punctuation">{
    class="token function">constructor class="token punctuation">(floorsclass="token punctuation">)class="token punctuation">{
        class="token keyword">thisclass="token punctuation">.floors class="token operator">= floorsclass="token punctuation">; class="token comment">// 停车场的层数
        class="token keyword">thisclass="token punctuation">.carList class="token operator">= class="token punctuation">{class="token punctuation">}class="token punctuation">; class="token comment">// 存储摄像头拍摄返回的车辆信息
        class="token keyword">thisclass="token punctuation">.camera class="token operator">= class="token keyword">new class="token class-name">Cameraclass="token punctuation">(class="token punctuation">)class="token punctuation">; class="token comment">// 摄像头
        class="token keyword">thisclass="token punctuation">.screen class="token operator">= class="token keyword">new class="token class-name">Screenclass="token punctuation">(class="token punctuation">)class="token punctuation">;
    class="token punctuation">}
    class="token comment">// 驶入
    class="token keyword">inclass="token punctuation">(carclass="token punctuation">) class="token punctuation">{
        class="token comment">// 通过摄像头获取car的信息
        class="token keyword">const info class="token operator">= class="token keyword">thisclass="token punctuation">.cameraclass="token punctuation">.class="token function">shotclass="token punctuation">(carclass="token punctuation">)class="token punctuation">;
        class="token keyword">const i class="token operator">= class="token function">parseIntclass="token punctuation">(Mathclass="token punctuation">.class="token function">randomclass="token punctuation">(class="token punctuation">) class="token operator">* class="token number">100 class="token operator">% class="token number">100class="token punctuation">)class="token punctuation">; class="token comment">// 获取一个随机数
        class="token keyword">const place class="token operator">= class="token keyword">thisclass="token punctuation">.floorsclass="token punctuation">[class="token number">0class="token punctuation">]class="token punctuation">.placesclass="token punctuation">[iclass="token punctuation">]class="token punctuation">; class="token comment">// 直接先写入停在第一层
        placeclass="token punctuation">.class="token keyword">inclass="token punctuation">(class="token punctuation">)class="token punctuation">; class="token comment">// 车辆停入
        infoclass="token punctuation">.place class="token operator">= placeclass="token punctuation">; class="token comment">// 该车辆对象添加个停入的位置信息

        class="token comment">// 记录信息
        class="token keyword">thisclass="token punctuation">.carListclass="token punctuation">[carclass="token punctuation">.numclass="token punctuation">] class="token operator">= infoclass="token punctuation">;
    class="token punctuation">}
    class="token comment">// 驶离
    class="token function">outclass="token punctuation">(carclass="token punctuation">) class="token punctuation">{
        class="token comment">// 获取信息
        class="token keyword">const info class="token operator">= class="token keyword">thisclass="token punctuation">.carListclass="token punctuation">[carclass="token punctuation">.numclass="token punctuation">]class="token punctuation">;
        class="token comment">// 将停车位清空
        class="token keyword">const place class="token operator">= infoclass="token punctuation">.placeclass="token punctuation">;
        placeclass="token punctuation">.class="token function">outclass="token punctuation">(class="token punctuation">)class="token punctuation">;
        class="token comment">// 显示时间
        class="token keyword">thisclass="token punctuation">.screenclass="token punctuation">.class="token function">showclass="token punctuation">(carclass="token punctuation">, infoclass="token punctuation">.inTimeclass="token punctuation">)class="token punctuation">;
        class="token keyword">delete class="token keyword">thisclass="token punctuation">.carListclass="token punctuation">[carclass="token punctuation">.numclass="token punctuation">]class="token punctuation">;

    class="token punctuation">}
    class="token function">emptyNumclass="token punctuation">(class="token punctuation">) class="token punctuation">{
        class="token keyword">return class="token keyword">thisclass="token punctuation">.floorsclass="token punctuation">.class="token function">mapclass="token punctuation">(floor class="token operator">=> class="token punctuation">{
            class="token keyword">return class="token template-string">class="token string">`class="token interpolation">class="token interpolation-punctuation punctuation">${floorclass="token punctuation">.indexclass="token interpolation-punctuation punctuation">}class="token string"> 层还有class="token interpolation">class="token interpolation-punctuation punctuation">${floorclass="token punctuation">.class="token function">emptyPlaceNumclass="token punctuation">(class="token punctuation">)class="token interpolation-punctuation punctuation">}class="token string">`
        class="token punctuation">}class="token punctuation">)class="token punctuation">.class="token function">joinclass="token punctuation">(class="token string">'\n'class="token punctuation">)class="token punctuation">;
    class="token punctuation">}
class="token punctuation">}
class="token comment">// 层
class="token keyword">class class="token class-name">Floorclass="token punctuation">{
    class="token function">constructorclass="token punctuation">(indexclass="token punctuation">, placesclass="token punctuation">) class="token punctuation">{
       class="token keyword">thisclass="token punctuation">.index class="token operator">= indexclass="token punctuation">;
       class="token keyword">thisclass="token punctuation">.places class="token operator">= places class="token operator">|| class="token punctuation">[class="token punctuation">]class="token punctuation">;
    class="token punctuation">}
    class="token comment">// 空余的车位
    class="token function">emptyPlaceNumclass="token punctuation">(class="token punctuation">) class="token punctuation">{
        class="token keyword">let num class="token operator">= class="token number">0class="token punctuation">;
        class="token keyword">thisclass="token punctuation">.placesclass="token punctuation">.class="token function">forEachclass="token punctuation">(p class="token operator">=> class="token punctuation">{
            class="token keyword">ifclass="token punctuation">(pclass="token punctuation">.emptyclass="token punctuation">) class="token punctuation">{
                num class="token operator">= num class="token operator">+ class="token number">1class="token punctuation">;
            class="token punctuation">}
            
        class="token punctuation">}class="token punctuation">)class="token punctuation">;
        class="token keyword">return numclass="token punctuation">;
    class="token punctuation">}
class="token punctuation">}
class="token comment">// 停车位
class="token keyword">class class="token class-name">Place class="token punctuation">{
    class="token function">constructorclass="token punctuation">(class="token punctuation">) class="token punctuation">{
        class="token keyword">thisclass="token punctuation">.empty class="token operator">= class="token boolean">trueclass="token punctuation">;
    class="token punctuation">}
    class="token keyword">inclass="token punctuation">(class="token punctuation">) class="token punctuation">{
        class="token keyword">thisclass="token punctuation">.empty class="token operator">= class="token boolean">falseclass="token punctuation">;
    class="token punctuation">}
    class="token function">outclass="token punctuation">(class="token punctuation">) class="token punctuation">{
        class="token keyword">thisclass="token punctuation">.empty class="token operator">= class="token boolean">trueclass="token punctuation">;
    class="token punctuation">}
class="token punctuation">}


class="token comment">// 测试
class="token comment">// 初始化停车场
class="token keyword">const floors class="token operator">= class="token punctuation">[class="token punctuation">]class="token punctuation">;
class="token keyword">forclass="token punctuation">(class="token keyword">let i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">3class="token punctuation">; iclass="token operator">++class="token punctuation">) class="token punctuation">{
    class="token keyword">const places class="token operator">= class="token punctuation">[class="token punctuation">]class="token punctuation">;
    class="token keyword">forclass="token punctuation">(class="token keyword">let j class="token operator">= class="token number">0class="token punctuation">; j class="token operator">< class="token number">100class="token punctuation">; jclass="token operator">++class="token punctuation">) class="token punctuation">{
        placesclass="token punctuation">[jclass="token punctuation">] class="token operator">= class="token keyword">new class="token class-name">Placeclass="token punctuation">(class="token punctuation">)class="token punctuation">;
    class="token punctuation">}
    floorsclass="token punctuation">[iclass="token punctuation">] class="token operator">= class="token keyword">new class="token class-name">Floorclass="token punctuation">(i class="token operator">+ class="token number">1class="token punctuation">, placesclass="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token keyword">const park class="token operator">= class="token keyword">new class="token class-name">Parkclass="token punctuation">(floorsclass="token punctuation">)class="token punctuation">;

class="token comment">// 初始化车辆
class="token keyword">const car1 class="token operator">= class="token keyword">new class="token class-name">Carclass="token punctuation">(class="token number">100class="token punctuation">)class="token punctuation">;
class="token keyword">const car2 class="token operator">= class="token keyword">new class="token class-name">Carclass="token punctuation">(class="token number">200class="token punctuation">)class="token punctuation">;

consoleclass="token punctuation">.class="token function">logclass="token punctuation">(class="token string">"第一辆车进入"class="token punctuation">)class="token punctuation">;
parkclass="token punctuation">.class="token keyword">inclass="token punctuation">(car1class="token punctuation">)
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(parkclass="token punctuation">.class="token function">emptyNumclass="token punctuation">(class="token punctuation">)class="token punctuation">)class="token punctuation">;
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(class="token string">"第二辆车进入"class="token punctuation">)class="token punctuation">;
parkclass="token punctuation">.class="token keyword">inclass="token punctuation">(car2class="token punctuation">)
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(parkclass="token punctuation">.class="token function">emptyNumclass="token punctuation">(class="token punctuation">)class="token punctuation">)class="token punctuation">;

consoleclass="token punctuation">.class="token function">logclass="token punctuation">(class="token string">"第一辆车出去"class="token punctuation">)class="token punctuation">;
parkclass="token punctuation">.class="token function">outclass="token punctuation">(car1class="token punctuation">)class="token punctuation">;
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(parkclass="token punctuation">.class="token function">emptyNumclass="token punctuation">(class="token punctuation">)class="token punctuation">)class="token punctuation">;
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(class="token string">"第二辆车出去"class="token punctuation">)class="token punctuation">;
parkclass="token punctuation">.class="token function">outclass="token punctuation">(car2class="token punctuation">)class="token punctuation">;
consoleclass="token punctuation">.class="token function">logclass="token punctuation">(parkclass="token punctuation">.class="token function">emptyNumclass="token punctuation">(class="token punctuation">)class="token punctuation">)class="token punctuation">;

http://www.niftyadmin.cn/n/1551491.html

相关文章

css渐变色边框的实现的方法

在项目中&#xff0c;边框的样式多种多样&#xff0c;一种常见的渐变色边框出现&#xff1b;而这种渐变色的边框又结合各种各样的设计&#xff0c;这里结果实现的效果与浏览器的兼容性总结渐变色的实现方法&#xff1a; 圆角的渐变边框border-image 点击进入border-image的AP…

使用background多背景与border-radius圆形 - 绘制icon的图标与特别样式的应用

使用css的属性制作一些小众的样式&#xff0c;减少使用对icon图片导入&#xff1b; 使用background多背景实现icon的加减效果 这里应用多背景的属性&#xff0c;书写加减后的图标&#xff1b;代码示例如下&#xff1a; <style> .btn-add, .btn-sub {width: 1.5rem; he…

css变量在静态饼图与进度条上的使用

在项目中&#xff0c;会出现圆形静态饼图或进度条的形式展现当前的进度&#xff1b;或者根据倒计时的进度&#xff0c;展示进度条的剩余比例&#xff1b;这里使用css的变量&#xff0c;结合css的样式来展示进度的情况&#xff0c;也可结合javascript给该css的变量赋值&#xff…

js的设计模式 - 【观察者模式】

当对象间存在一对多关系时&#xff0c;则使用观察者模式&#xff08;Observer Pattern&#xff09;。比如&#xff0c;当一个对象被修改时&#xff0c;则会自动通知它的依赖对象。一对多的关系。 模式演示实例 示例代码如下&#xff1a; // 主题&#xff0c;接受状态的变化&…

font-size有关rem的适配 -无需使用JavaScript代码进行多设备的适配

面对不同设备的适配与响应&#xff1b;这里介绍不同的是media规则进行匹配不同的设备&#xff1b; 不同的设备宽度不尽相同&#xff0c;尺寸有320px,360px,375px,414px…等常见的宽度,面对在不同的尺寸环境下&#xff0c;文字的阅读体验问题&#xff0c;我们常常使用的是CSS单…

typeScript的定义类型:不能将类型“Timeout”分配给类型“number”;

Typescript 给setTimeout 的返回值定义为 number并给于赋值时&#xff0c;会报如下错误&#xff1a; 错误信息&#xff1a;不能将类型“Timeout”分配给类型“number”&#xff1b; 通过点击定位&#xff0c;发现setTimeout在当前项目下 Node.js 下的接口定义文件&#xff1a;…

web前端项目 - cypress自动化测试运行构建

自动化测试 自动化测试是指搭建cypress的环境&#xff0c;去书写流程&#xff0c;并比较实际与预期结果之间的差异。通过cypress&#xff0c;可以把人对软件的测试行为转化为由机器自动执行测试的行为&#xff0c;从而替代大量的手工测试操作&#xff0c;使得测试可以快速&…

typeScript的介绍与变量定义的基本类型

TypeScript的基本使用&#xff08;一&#xff09;TypeScript的简介认识typeScriptTypeScript的编译环境TypeScript的运行环境&#xff08;二&#xff09;变量的声明&#xff08;三&#xff09;JavaScript和TypeScript的数据类型&#xff08;1&#xff09;基本的数据类型与定义&…