题目一

分析:

打车时,可以打专车和快车,热河车都有车牌号和名称 从这句话可以得出需要定义一个Car类 属性有车牌号和名称,快车和专车继承这个类

不同的车价格不同,快车每公里一元,专车每公里2元 说明每个子类都有自己的price属性 而且是不同的

行程开始显示车辆信息,行程结束,相识打车金额(假定行程就5公里) 这里我们可以再定义一个Trip 类 行为有 start 和 end

画UML类图

代码编写


class Car {constructor(carId, carName) {this.carId = carIdthis.carName = carName}
}class Kuaiche extends Car {constructor(carId, carName) {super(carId, carName)this.price = 1}
}class Zhuanche extends Car {constructor(carId, carName) {super(carId, carName)this.price = 5}
}class Trip {constructor(car) {this.car = car}start() {console.log(`行程开始,车辆名称:${this.car.carName}.车牌号:${this.car.carId}`)}end() {console.log(`行程结束,价格:${this.car.price * 5}`)}
}let car = new Kuaiche(13551, '法拉利')
let trip = new Trip(car)
console.log(trip.start())
console.log(trip.end())let car1 = new Zhuanche(13552, '宝马')
let trip1 = new Trip(car1)
console.log(trip1.start())
console.log(trip1.end())

题目二

分析:

莫停车场,分三层,每层100车位 这边可以定义三个类 Park,Floor,Place

每个车位都能监控到车辆的驶入和离开 可以看出 车位有连个行为 驶入(in)和离开(out)

车辆进入前,显示每层的空余车位数量 Park有一个显示空余车位的行为

车辆进入时,摄像头可识别车牌号和时间 这里可以看出还可以建立一个摄像头的类 并且 Park 有监听车辆进入的行为

车辆出来时,出口显示器显示车牌号和停车时长 需要定义一个显示器类(显示器有显示的行为) 并且Park有监听车辆出来的行为

UML类图

代码实现

class Park {constructor(floors, camera, screen) {this.floors = floorsthis.camera = camerathis.screen = screenthis.carList = {}}emptyNum() {let str = this.floors.map(floor => {return `第${floor.index}层还要${floor.showEmptyNum()}个空位.`}).join('\n')console.log(str)}in(car) {let info = this.camera.shot(car)let floor_index = Math.floor(Math.random() * 3)let place_index = Math.floor(Math.random() * 100)let place = this.floors[floor_index].places[place_index]place.in()info.place = placethis.carList[car.carId] = infoconsole.log(info)}out(car) {let info = this.carList[car.carId]console.log(info)this.screen.show(car, info.inTime)info.place.out()delete this.carList[car.carId]}
}class Floor {constructor(index, places) {this.places = placesthis.index = index}showEmptyNum() {let emptyNum = 0this.places.forEach(item => {if (item.empty) {emptyNum++;}})return emptyNum;}
}class Place {constructor(empty = true) {this.empty = empty}in() {this.empty = false}out() {this.empty = true}
}class Screen {constructor() {}show(car, inTime) {let now_date = new Date()console.log(`车牌号:${car.carId},停车时长:${now_date.getTime() - inTime.getTime()}`)}
}class Camera {constructor() {}shot(car) {console.log(`${car.carId}进入停车场`)return {inTime: new Date(),carId: car.carId}}
}class Car {constructor(carId) {this.carId = carId}
}
let floors = []
for (let i = 0; i < 3; i++) {let places = []for (let j = 0; j < 100; j++) {let place = new Place()places.push(place)}let floor = new Floor(i + 1, places)floors.push(floor)
}let camera = new Camera()
let screen = new Screen()
let park = new Park(floors, camera, screen)
console.log(park)let car1 = new Car(43243)
let car2 = new Car(7857)
let car3 = new Car(110)
park.emptyNum()
park.in(car1)
park.emptyNum()
park.out(car1)
park.emptyNum()
park.in(car2)
park.emptyNum()
park.in(car3)park.out(car3)
park.out(car2)

设计原则 小既是美

面向对象 公司面试题相关推荐

  1. 你要知道的21道软件设计 + 面向对象的面试题

    不管大家参加任何的编程面试,都逃不过关于系统设计和软件设计的问题.如果你想做的更好,你可以试试准备这个话题.以前我分享过我的一个关于编程面试问题的清单,也分享了一些关于系统设计的问题,但好多人比较感兴 ...

  2. 常见的面向对象的面试题(附答案)

    常见的面向对象的面试题(附答案) 1.JavaScript是怎么样实现继承的?请举例说明. JavaScript通过 prototype属性实现继承,继承的属性方法是共享的,例如Chid子类继承 Pa ...

  3. java面向对象编程考试题,202514HJava面向对象编程答案试题题目及答案,期末考试题库,章节测验答案...

    202514HJava面向对象编程答案试题题目及答案,期末考试题库,章节测验答案 更多相关问题 导游人员在服务过程中,不得().A.向游客兜售物品 B.向游客购买物品C.接受游客给予小费 D.欺 &l ...

  4. 回答华为公司面试题一头牛重800公斤一座桥承重700公斤问牛怎么过桥?

    如何回答华为公司面试题一头牛重800公斤一座桥承重700公斤问牛怎么过桥? 作者:ICEplate 链接:https://www.zhihu.com/question/455269838/answer ...

  5. 2016Android公司面试题

    2016年4月某公司面试题及面试流程. 静态内部类.内部类.匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它? 静态内部类:使用static修饰的内部类 内部类:就是在某个类 ...

  6. 世界500强公司面试题(很多)

    世界500强公司面试题(很多) 快到春节了,很多朋友又在酝酿跳槽的事,找了许多经典的面试题目,估计这些题目全部研究过了,针对非技术的面试应该足够了:) 第一章 微软面试题 面试官:现在我们要问一个问题 ...

  7. 南京中软/软通/金证/易宝等外包公司面试题

    楼主以两年工作经验去面试,以下所属公司未标注(面的太多,记不清了.),不按顺序: 一. 1.项目中多态的应用? 2.接口和抽象类的异同? 3.使用过哪些集合?ArrayList和LinkedList异 ...

  8. 2012届it公司面试题

    九月腾讯,创新工场,淘宝等公司最新面试十三题 引言 曾记否,去年的10月份也同此刻一样,是找工作的高峰期,本博客便是最初由整理微软等公司面试题而发展而来的.如今,又即将迈入求职高峰期--10月份,而本 ...

  9. java面试官:程序员,请你告诉我是谁把公司面试题泄露给你的?

    前情提要: **面试官:**你好!请先做一下自我介绍! **程序员:**balabalabala- 前戏先过了- **面试官:**先介绍SpringCloud核心组件及其作用 **程序员:**Spri ...

最新文章

  1. 我摊牌了,大厂面试Linux就这5个问题
  2. 有汇编功能的python编译器_7.12 计算机基础理念与python解释器编译器安装使用
  3. C# web实现word 转Html、office转Html、pdf转图片 在线预览文件
  4. POJ3133(插头dp)
  5. 【Python-ML】神经网络激励函数-Sigmoid
  6. 用cn.hutool工具包进行图片上传下载示例
  7. Vagrant挂载目录失败mount: unknown filesystem type ‘vboxsf’
  8. 【Android开发】线程与消息处理-Handler消息传递机制之Looper
  9. 收藏 | 李飞飞经典CS231N《卷积神经网络视觉识别》第十一讲!
  10. 怎么修改SQL Server服务器选项,Analysis Services 实例的 SPN 注册 | Microsoft Docs
  11. 运维测试工作笔记0002---网站访问的UV,IP,PV,VV是什么意思
  12. ansible常用模块入门
  13. 激活策略 查询_苹果手机未激活也可能不是原装货,激活过的手机到底能不能买?...
  14. 速达3000怎么找不到服务器,速达软件服务器无法启动怎么办?
  15. html视频全套教程,用Dreamweaver讲解html全套视频教程分享
  16. 解密百度前端技术体系
  17. Scala基本语法-面向对象
  18. CSS奇思妙想—使用 mask 实现视频弹幕人物遮罩过滤
  19. 往哪里看低买高卖和利润之间
  20. 腾讯视频转换mp4格式用什么转换器?电脑怎么把腾讯视频转换成mp4?

热门文章

  1. Sublime3 设置 Fortran 代码高亮
  2. 图像处理基础——图像相关术语总结
  3. CRM进化论 移动CRM会有怎样的未来?
  4. [ahk]获取招商证券中的资金
  5. 【大咖有约】平安科技金海峰:平安数据库SQL审核平台
  6. 算法设计——数学运算:数的整除问题
  7. [Visio] 如何导出Visio中的高清矢量图
  8. Mit6.006-problemSession04
  9. MacOS下无法打开软件。原因apple无法检查其是否包含恶意软件。解决办法
  10. 使用python代码画折线图【matplotlib】