博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一道关于面向对象面试题
阅读量:5873 次
发布时间:2019-06-19

本文共 2283 字,大约阅读时间需要 7 分钟。

/**
* 某停车厂,分3层,每层100车位
* 每个车位都能监控到车辆的是驶入和离开
* 车辆进入前,显示每层的空余车位数量
* 车辆进入时,摄像头可识别车牌号和时间
* 车辆出来时,出口显示器显示车牌和停车时间
*/

// 画出UML类图

//车辆类class Car {  constructor(num) {    this.num = num;  }}//摄像头类class Camera {  constructor() {}  shot(car) {    return {      num: car.num,      inTime: Date.now()    };  }}//显示屏类class Screen {  constructor() {}  show(car, inTime) {    console.log('车牌号:', car.num);    console.log('停车时间:', Date.now() - inTime);  }}//停车场类class Park {  constructor(floors) {    this.floors = floors || [];    this.carList = {}; //存储摄像头拍摄返回的车辆信息    this.camera = new Camera(); //摄像头    this.screen = new Screen();  }  in(car) {    // 通过摄像头获取车辆进入信息    const info = this.camera.shot(car);    // 停到某个车位,这里取随机数    const i = parseInt((Math.random() * 100) % 100);    // 先假设位于一层的该车位    const place = this.floors[0].places[i];    place.in();    info.place = place;    //记录信息    this.carList[car.num] = info;  }  out(car) {    //获取信息    const info = this.carList[car.num];    //将车位清空    const place = info.place;    place.out();    //显示时间    this.screen.show(car, info.inTime);    //清空记录    delete this.carList[car.num];  }  emptyNum() {    return this.floors      .map(floor => {        return `${floor.index} 层还有 ${floor.emptyPlaceNum()}个空闲车位`;      })      .join('\n');  }}// 层类class Floor {  constructor(index, places) {    this.index = index;    this.places = places || [];  }  emptyPlaceNum() {    let num = 0;    this.places.forEach(p => {      if (p.empty) num++;    });    return num;  }}//车位类class Place {  constructor() {    this.empty = true;  }  in() {    this.empty = true;  }  out() {    this.empty = false;  }}复制代码
//测试代码//初始化停车场const floors = [];for (let i = 0; i < 3; i++) {  const places = [];  for (let j = 0; j < 100; j++) {    places[j] = new Place();  }  floors[i] = new Floor(i + 1, places);}const park = new Park(floors);var car1 = new Car(100);var car2 = new Car(200);var car3 = new Car(300);console.log('第一辆车进入');park.in(car1);console.log(park.emptyNum());console.log('第二辆车进入');park.in(car2);console.log(park.emptyNum());console.log('第一辆车离开');park.out(car1);console.log(park.emptyNum());console.log('第二辆车离开');park.out(car2);console.log(park.emptyNum());console.log('第三辆车进入');park.in(car3);console.log(park.emptyNum());console.log('第三辆车离开');park.out(car3);复制代码

转载地址:http://ttenx.baihongyu.com/

你可能感兴趣的文章
浏览器内核比较
查看>>
CSS样式表——超链接样式
查看>>
如何让C#像JavaScript一样编程
查看>>
C++ 复制控制
查看>>
OC -- 第一个类
查看>>
图片文件Exif信息详细说明(转)
查看>>
打开jnlp Faild to validate certificate, the application will not be executed.
查看>>
Codeforces Round #296 (Div. 2) A. Playing with Paper
查看>>
用java解析在OpenStreetMap上下载的地图数据(SAX版,适合比较大的xml文件)
查看>>
ibatis 架构
查看>>
xampp默认项目文件夹htdocs
查看>>
swift2.0 UIImagePickerController 拍照 相册 录像
查看>>
虚拟机上网设置
查看>>
android soundpool 參数说明
查看>>
InstallShield高级应用--检查是否安装ORACLE或SQL Server
查看>>
JAVA软件开发职责
查看>>
如何使用angularjs操作cookie
查看>>
POJ 3321 Apple Tree DFS序+fenwick
查看>>
POJ 1789-Truck History
查看>>
【Android】8.4 让主题自适应不同的Android版本
查看>>