Pair Project 1 elevator

结对编程——电梯调度

12061181 高孟烨

12061182 郝倩

1、结对编程的优缺点:

优点:结对编程可以结合两个人各自擅长之地,充分发挥两个人各自的优势,两个人一起合作效率会更高。一份工作两个人一起完成,每个人的强项、弱项不同,如果分工合理,便可以事半功倍

缺点:如果两个人的实力相差太大,则会造成沟通困难,一起写程序也会遇到一定的麻烦。或者如果有人态度不端正,无法进行好的沟通交流,则会使任务失败,两个人也得不到应有的锻炼。

2、各自优缺点:

高孟烨:算法构建能力较强;做事认真,细致;善于思考。动手能力相对较弱。

郝倩:时间观念强;代码能力不弱;很认真。做事情不是很细致,构建算法时会有一些漏洞。

3、一起合作编程的照片

4、Design by Contract, Code Contract

契约式设计的核心是断言(assertion)。所谓“断言”,是指永远为真的布尔型语句,如果不为真,则程序必然存在错误。它使用了三类断言:后继条件(post-conditions),前提条件(pre-conditions),以及不变量(invariants)。

  由于信息隐蔽原则,我们在调用一个接口时,并不知道它内部实现的细节。为了顺利使用接口,首先需要满足前提条件。这个前提条件就是指在执行操作之前,期望具备的环境。满足前提条件接口使用顺利后,自然而然得到了一个后继条件——指操作执行完之后的情况。不变量是关于类(class)的断言,无论是否能对该对象调用某种操作都需要满足的条件。

5、算法思想:

电梯的状态从大的方面无非可以分为两种:

(1)电梯停止时:若电梯内有人,则目的地为该楼层的乘客离开电梯,发出请求的楼层为该楼层的乘客进入电梯,接着调度离当前楼层最近的请求。若电梯内没人,选择等待队列里离当前楼层最近的请求,如果等待队列也为空,则电梯停止不动。

(2)电梯运动时:在每层判断是否有该层到当前目标楼层之间的的外部请求,若有则判断方向是否与电梯运行方向一致,以及请求发出时间是否在电梯到达发出请求所在楼层的时间之前,若符合以上条件,则电梯在该外部请求发出的楼层停,开门使乘客进入,关门;若不符合,则继续顺序执行。

另外在判断以上各条件完成之后,能使乘客真正进入电梯并有电梯完成其请求,还要判断一下几个条件:

a)该请求的fromfloor以及tofloor是否为该部电梯的可达楼层

b)若乘客可以进入电梯,电梯是否会超载(参考每部电梯的重量和人数限制)

如果这两个条件至少有一个不满足,那么这位乘客就不能进入这部电梯到达自己的目的地,只能等待其他符合条件的电梯来搭乘。

6、unittest

7、UML图

时间: 2024-10-28 09:57:39

Pair Project 1 elevator的相关文章

Pair Project —— Elevator Scheduler

结对编程人员 12061153 刘丽萍 12061154 冯飘飘 说明结对编程的优点和缺点. 结对编程的优点: 以前都是自己一个人编程,对于相互结对或者团队编程都没有接触过.而自己在写代码时不可避免的会出现小错误,有时是打字错误,有时候是算法并没有完全用代码展现完整,而结对编程刚好实现了这种“两个程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘,同一个鼠标一起工作.他们一起分析,一起设计,一起写测试用例,一起编码,一起单元测试,一起集成测试,一起写文档等”的环境,使我们的代码处在不断的

pair project elevator

结对编程——电梯调度 12061181 高孟烨 12061182 郝倩 1.结对编程的优缺点: 优点:可以充分发挥两个人各自的优势,每个人擅长的地方不同,两个人一起合作效率会更高. 缺点:如果两个人的实力相差太大或者态度不端正无法较好的沟通交流,则会使任务失败. 2.各自优缺点: 高孟烨:能够想出各种算法:细致.动手能力相对较弱. 郝倩:时间观念强:代码能力不弱.做事情不是很细致. 3.一起合作编程的照片 4.Design by Contract, Code Contract 契约式设计的核心是

Pair Project:电梯控制程序

12061160刘垚鹏 & 12061166宋天舒 1.1结对编程的优缺点结对编程相对于个人编程有很多优点.首先,督促作用,在讨论过程中能够很快投入工作,为了不耽误对方时间,我们会尽快完成各自的任务:第二,节约时间,相互交流,能够更快的确定算法方案,比起一个人苦思冥想要来的快得多:第三,提高效率,一些简单的unit,一个人能够很简单的完成就可以分给不同的人去做:对于核心的unit,比如说此次项目电梯调度的算法部分,这是一个核心的部分,需要我们共同讨论,经过讨论后确定较优的方案再去实现:或者在遇到

pair project

一:题目简介 这个java项目是一款打字游戏,运行后点击开始会从屏幕上方掉落数字或字母,且数字及字母为无顺序随机掉落,玩家可以在看到字母或数字后在键盘上输入相应字母或数字将其消除,消除相应个数的字母或数字后,玩家将进入下一关,即加速状态:若在规定时间内没有消除相应字母或数字,则游戏失败. 游戏速度有快有慢,玩家可以在游戏开始之前选择适合自己的游戏速度,稳定练习或者挑战极限. 二:结对分工1:闻保东:负责代码找寻与编写部分2:孙婧   :负责代码修改与运行测试部分 三:测试截图 1.开始界面  

代码复审结果报告

在本次代码复审的作业中,我审阅的是我的pair project的partner郝倩的个人项目代码.下面我汇报一下本次代码复审的结果. 首先我说一下她的代码的优点.首先,她的代码在关键的地方都加上了注释,我在读她的代码的过程中会感觉到轻松很多.同时她的注释基本上没有加在那些显而易见的代码的部分,而是加在必要的点上.第二,从整个程序的结构上看,这份代码的思路十分清晰,并且每一个模块的实现都是使用尽可能简单的方法,这对于日后代码的维护有很好的作用.第三,从细节上来看,这份代码在变量命名上非常好,基本上

查询表达式和LINQ to Objects

查询表达式实际上是由编译器“预处理”为“普通”的C#代码,接着以完全普通的方式进行编译.这种巧妙的发式将查询集合到了语言中,而无须把语义改得乱七八糟 LINQ的介绍 LINQ中的基础概念 降低两种数据模型之间的阻抗失配过程中,遇到的一个问题就是,通常会涉及创建另一个模型来作为桥梁 序列 它通过IEnumerable和IEnumerable<T>接口进行封装 序列和其他集合数据结构最大的区别:当你从序列读取数据的时候,通常不知道还有多少数据项等待读取,或者不能访问任意的数据项——只能是当前这个

Team Foundation Server 2013 with Update 3 Install LOG

[Info   @10:14:58.155] ====================================================================[Info   @10:14:58.163] Team Foundation Server Administration Log[Info   @10:14:58.175] Version  : 12.0.30723.0[Info   @10:14:58.175] DateTime : 10/03/2014 18:1

Python练习题 048:Project Euler 021:10000以内所有亲和数之和

本题来自 Project Euler 第21题:https://projecteuler.net/problem=21 ''' Project Euler: Problem 21: Amicable numbers Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into n). If d(a) = b and d(b) = a, where a ≠ b

RFID Exploration and Spoofer a bipolar transistor, a pair of FETs, and a rectifying full-bridge followed by a loading FET

RFID Exploration Louis Yi, Mary Ruthven, Kevin O'Toole, & Jay Patterson What did you do? We made an Radio Frequency ID (RFID) card reader and, while attempting to create a long-range spoofer, created an jammer which overcomes card's signals. The read