前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >How to design a parking lot using object-oriented principles?

How to design a parking lot using object-oriented principles?

原创
作者头像
vanguard
修改于 2020-03-31 06:41:46
修改于 2020-03-31 06:41:46
1.3K0
举报
文章被收录于专栏:vanguardvanguard

Design a parking lot using object-oriented principles.

Asked In : Amazon, Apple, Google and many more interviews

Solution:

For our purposes right now, we’ll make the following assumptions. We made these specific assumptions to add a bit of complexity to the problem without adding too much. If you made different assumptions, that’s totally fine. 1) The parking lot has multiple levels. Each level has multiple rows of spots. 2) The parking lot can park motorcycles, cars, and buses. 3) The parking lot has motorcycle spots, compact spots, and large spots. 4) A motorcycle can park in any spot. 5) A car can park in either a single compact spot or a single large spot. 6) A bus can park in five large spots that are consecutive and within the same row. It cannot park in small spots.

信息来源于网络,突出多对多数据模型设计,以下是另一个更复杂的例子,同样来源于网络。

A parking lot or car park is a dedicated cleared area that is intended for parking vehicles. In most countries where cars are a major mode of transportation, parking lots are a feature of every city and suburban area. Shopping malls, sports stadiums, megachurches, and similar venues often feature parking lots over large areas.

System Requirements

We will focus on the following set of requirements while designing the parking lot:

  1. The parking lot should have multiple floors where customers can park their cars.
  2. The parking lot should have multiple entry and exit points.
  3. Customers can collect a parking ticket from the entry points and can pay the parking fee at the exit points on their way out.
  4. Customers can pay the tickets at the automated exit panel or to the parking attendant.
  5. Customers can pay via both cash and credit cards.
  6. Customers should also be able to pay the parking fee at the customer’s info portal on each floor. If the customer has paid at the info portal, they don’t have to pay at the exit.
  7. The system should not allow more vehicles than the maximum capacity of the parking lot. If the parking is full, the system should be able to show a message at the entrance panel and on the parking display board on the ground floor.
  8. Each parking floor will have many parking spots. The system should support multiple types of parking spots such as Compact, Large, Handicapped, Motorcycle, etc.
  9. The Parking lot should have some parking spots specified for electric cars. These spots should have an electric panel through which customers can pay and charge their vehicles.
  10. The system should support parking for different types of vehicles like car, truck, van, motorcycle, etc.
  11. Each parking floor should have a display board showing any free parking spot for each spot type.
  12. The system should support a per-hour parking fee model. For example, customers have to pay $4 for the first hour, $3.5 for the second and third hours, and $2.5 for all the remaining hours.

Use case diagram

Here are the main Actors in our system:

  • Admin: Mainly responsible for adding and modifying parking floors, parking spots, entrance, and exit panels, adding/removing parking attendants, etc.
  • Customer: All customers can get a parking ticket and pay for it.
  • Parking attendant: Parking attendants can do all the activities on the customer’s behalf, and can take cash for ticket payment.
  • System: To display messages on different info panels, as well as assigning and removing a vehicle from a parking spot.

Here are the top use cases for Parking Lot:

  • Add/Remove/Edit parking floor: To add, remove or modify a parking floor from the system. Each floor can have its own display board to show free parking spots.
  • Add/Remove/Edit parking spot: To add, remove or modify a parking spot on a parking floor.
  • Add/Remove a parking attendant: To add or remove a parking attendant from the system.
  • Take ticket: To provide customers with a new parking ticket when entering the parking lot.
  • Scan ticket: To scan a ticket to find out the total charge.
  • Credit card payment: To pay the ticket fee with credit card.
  • Cash payment: To pay the parking ticket through cash.
  • Add/Modify parking rate: To allow admin to add or modify the hourly parking rate.

Class diagram

Here are the main classes of our Parking Lot System:

  • ParkingLot: The central part of the organization for which this software has been designed. It has attributes like ‘Name’ to distinguish it from any other parking lots and ‘Address’ to define its location.
  • ParkingFloor: The parking lot will have many parking floors.
  • ParkingSpot: Each parking floor will have many parking spots. Our system will support different parking spots 1) Handicapped, 2) Compact, 3) Large, 4) Motorcycle, and 5) Electric.
  • Account: We will have two types of accounts in the system: one for an Admin, and the other for a parking attendant.
  • Parking ticket: This class will encapsulate a parking ticket. Customers will take a ticket when they enter the parking lot.
  • Vehicle: Vehicles will be parked in the parking spots. Our system will support different types of vehicles 1) Car, 2) Truck, 3) Electric, 4) Van and 5) Motorcycle.
  • EntrancePanel and ExitPanel: EntrancePanel will print tickets, and ExitPanel will facilitate payment of the ticket fee.
  • Payment: This class will be responsible for making payments. The system will support credit card and cash transactions.
  • ParkingRate: This class will keep track of the hourly parking rates. It will specify a dollar amount for each hour. For example, for a two hour parking ticket, this class will define the cost for the first and the second hour.
  • ParkingDisplayBoard: Each parking floor will have a display board to show available parking spots for each spot type. This class will be responsible for displaying the latest availability of free parking spots to the customers.
  • ParkingAttendantPortal: This class will encapsulate all the operations that an attendant can perform, like scanning tickets and processing payments.
  • CustomerInfoPortal: This class will encapsulate the info portal that customers use to pay for the parking ticket. Once paid, the info portal will update the ticket to keep track of the payment.
  • ElectricPanel: Customers will use the electric panels to pay and charge their electric vehicles.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
MongoDB 常用
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4O4
2022/04/25
3110
MongoDB数据库的基本使用总结
江湖有缘
2023/09/14
1.8K0
MongoDB数据库的基本使用总结
三、MongoDB高级操作
测试:age添加索引情况 语法:db.c1.createIndex({age: 1}) 继续:db.c1.find({age:18}).explain(‘executionStats’)
Dreamy.TZK
2020/07/09
1.7K0
三、MongoDB高级操作
MongoDB,入门看这一篇足矣!
在介绍 MongoDB 之前,我先介绍一下业务开发的时候遇到的痛点,以便大家对它有一个更加清晰的认识!
Java极客技术
2022/12/04
1.7K0
MongoDB,入门看这一篇足矣!
Linux下mongodb用户管理和设置远程登陆
前提:已经在linux上安装好了mongodb。安装方法这里不说了,网上各种有。 本地用到的工具(windows):mongoChef(一个可视化操作工具,可以用于3.xx版本,romongo不行)
ACK
2020/01/14
3.6K0
Linux下mongodb用户管理和设置远程登陆
Linux 安装 MongoDB
一、下载 Linux:CentOS 7.3 64位 MongoDB:3.6.4 安装目录:/usr/local cd /usr/local wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.6.4.tgz 回到顶部 二、解压缩     解压缩安装包并重命名(方便管理) tar -zxvf mongodb-linux-x86_64-rhel62-3.6.4.tgz mv mongodb-linux-x86_64-rhel62
JMCui
2018/06/14
2.2K0
零基础学习MongoDB (三)—— 管理用户
在b站上听了几个老师的课,有涉及到mongodb的一些历史,比如删库勒索,因此开放的数据库是很危险的,所以我们需要给它们添加管理用户,这样为我们的数据安全加一道墙
小丞同学
2021/08/16
2910
实战 | MongoDB的安装配置
通过上面的安装MongoDB目前还处于裸奔状态,我们必须给其配置上用户密码认证登录。首先我们给MongoDB配置一个超级管理员,操作步骤如下:
JAVA日知录
2021/04/07
6110
实战 | MongoDB的安装配置
MongoDB学习笔记-3、MongoDB权限介绍
MongoDB数据库其安全性并不高,为了防止被一些好心人进行攻击,有效的方法是启用身份验证、不允许远程访问或者添加IP访问限制。
pbinlog
2022/03/13
6340
MongoDB学习笔记-3、MongoDB权限介绍
MongoDB 使用系列(一)-- 安装
环境 系统:Ubuntu 16.04 MongoDB 版本:3.6 安装 添加软件源 1.添加 MongoDB 签名到 APT $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 2.创建/etc/apt/sources.list.d/mongodb-org-3.6.list文件并写入命令 Ubuntu 14.04 $ echo "deb [ arch=amd64 ] https://repo.m
木制robot
2018/04/13
1.3K0
mongodb用户管理
mongodb安装好后第一次进入是不需要密码的,也没有任何用户。 在安装MongoDB之后,先关闭auth认证,启动服务端:
切图仔
2022/09/14
8720
mongodb用户管理
MongoDB从入门到实战之Docker快速安装MongoDB
      在上一篇文章中带领带同学们快速入门MongoDB这个文档型的NoSQL数据库,让大家快速的了解了MongoDB的基本概念。这一章开始我们就开始实战篇教程,为了快速把MongoDB使用起来我将会把MongoDB在Docker容器中安装起来作为开发环境使用。然后我这边MongoDB的可视化工具用的是Navicate。废话不多说,我们先花了几分钟开始的把MongoDB环境搭建起来。
追逐时光者
2023/05/26
8880
MongoDB从入门到实战之Docker快速安装MongoDB
CentOS 6 上mongodb安装与使用
版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/79797705
shaonbean
2019/05/26
9600
MongoDB认证和授权
MongodDB存储所有的用户信息在admin数据库的集合system.users中,保存数据库、密码和数据库信息。MongoDB默认不启用权限认证,只要能连接到服务器,就可连接到mongod。 若要启用安全认证,需要更改配置文件Authorization,也可简写为 auth。或者在命令行启动MongoDB时加上 -auth参数启动,这样当MongoDB启动后就需要用户和密码进行认证了。
拓荒者
2019/09/17
5.8K0
MongoDB安装与应用 原
epel自带2.6版本的MongoDB,在此安装MongoDB v3.4,方法如下: 官方安装文档: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
阿dai学长
2019/04/03
6310
MongoDB运维与开发(三)
今天来看MongoDB的用户相关的内容,用户、权限,这块儿的内容还是比较多的。慢慢来看
AsiaYe
2020/11/03
1.9K0
超硬核的MongoDB基础讲解。《记得收藏,不然看着看着就找不到了》
目前我们常用的MS SQL数据库、ACCESS数据库、MongoDB、My SQL数据库等等。 之前我讲过My SQL数据库,有兴趣的朋友可以去看看。今天我们主要讲讲MongoDB。
苏州程序大白
2021/08/13
8690
超硬核的MongoDB基础讲解。《记得收藏,不然看着看着就找不到了》
MongoDB基础
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。在nosql数据库里,大部分的查询都是键值对(key、value)的方式。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的。其特征NoSQL、文档存储、Json数据模型、支持事务。
KaliArch
2018/05/30
1.7K2
MongoDB基础
初识 MongoDB 服务
一、了解 MongoDB 之前认识了两种相同类型的缓存技术(关系型数据库)memcached 和 Redis, MongoDB是与之前两款完全不同的一个类型的缓存技术!称之为:文档型数据库! 提到文档,一个新概念JSON,MongoDB的文档类似于JSON对象! JSON:JavaScript 对象表示法(JavaScript Object Notation)。 JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快,更易解析。 来看一下JSON文档: { "employee
老七Linux
2018/05/31
7500
mongodb设置密码 原
rote:dbOwner 代表数据库所有者角色,拥有最高该数据库最高权限。比如新建索引等
拓荒者
2019/03/11
2.4K0
相关推荐
MongoDB 常用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档