《3+1团队》第七次作业:团队项目设计完善&编码
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 任课教师博客主页链接 |
| 这个作业的要求在哪里 | 作业链接地址 |
| 团队名称 | 3+1团队 |
| 团队博客地址 | https://home.cnblogs.com/u/3-1group |
| 项目名称 | 一起种水果 |
1.团队项目github仓库地址链接
https://github.com/HaiYou667/3-1Growingfruits
(1)Github仓库上传《软件设计方案说明书》
(2)Github仓库上传《软件编码规范说明书》
(3)Github仓库上传项目已完成源码
2.项目技术设计方案软件设计准则
●抽象:
在定义一个类的时候,实际上就是把一类事物的公有的属性和行为提取出来,形成一个物理模型,这种研究问题的方法称为抽象。
接口和抽象类实际就是抽象的体现,以系统的用户类为例,定义了用户注册、查询等接口,在后期如果用户有新的需求,可以进行扩充。
接口

实现

(1)强内聚/弱耦合/模块化
本系统划分了三大模块、会员管理、买家管理、管理员管理。我们组的设计采用三层架构将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL),区分层次的目的即为了“高内聚,低耦合”的思想。
内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系;
耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。

(2)信息隐藏和封装:
封装是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
●良好的封装能够减少耦合。
● 类内部的结构可以自由修改。
●可以对成员变量进行更精确的控制。
●隐藏信息,实现细节。类结构分离了接口与实现,从而支持了信息隐藏
在我们的系统中,以Admin实体为例,把Admin的属性封装,private仅能自己访问。

(3)界面和实现的分离:
本系统采用三层架构,三层架构将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。
●表现层(UI):就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
●业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
●数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
MVC把三层架构中的UI层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。MVC主要用于表现层,3层主要用于体系架构,3层一般是表现层、中间层、数据层,其中表现层又可以分成M、V、C,(Model View Controller)模型-视图-控制器。三层架构模式与MVC模式就很好的体现了系统界面和功能实现的分离。

(4)错误情况处理
java有两种错误情况,如下图所示:

本系统采用java的异常处理机制(try…catch…finally),代码区如果有错误,就会返回所写异常的处理。e.printStackTrace();在命令行打印异常信息在程序中出错的位置及原因。

(5)程序模块对于运行环境、关联模板、输入输出参数有什么假设
运行环境:
JDK:1.8
Tomcat :9.0
Eclipse:4.6.3
数据库:Oracle
(6)设计方案对于应对变化的灵活性
在系统设计时我们定义了各种接口,便于系统功能的扩充,也体现了面向对象的思想。
(7)设计方案的软件重用情况
软件成分的重用课划分为三个级别:【代码重用】【设计结果重用】【分析结果重用】。
典型的可重用软件成分有项目计划、成本估计、体系结构、需求模型和规格说明、设计、源代码、用户文档和技术文档、用户界面、数据、测试用例。
我们系听中的重用部分有源代码、用户界面。源代码的重用体现在登录注册功能,采用了以往写过的登录注册的代码。用户界面我们模仿了京东的界面。
(8)设计中采用的启发式规则
启发式规则是一种经验规律,对该经设计和提高软件质量具有重要的参考价值,在我们的系统中,设计结果十分的清晰易懂,用词一致且定义明确。均设计了简单的类,并且没有包含太多的属性。
3.作业总结
(1)团队分工及所占比例
| 团队成员 | 分工 | 工作量比例 | 完成时间 |
|---|---|---|---|
| 王雯涵 | 编码、编写博客,编写《软件设计方案说明书》 | 30% | 10h |
| 郭佳 | 编码、编写《软件编码规范说明书》,编写《软件设计方案说明书》 | 30% | 10h |
| 麻存滔 | 编码,燃尽图 | 20% | 6h |
| 邹立源 | 编码,燃尽图 | 20% | 6h |

(2)本系统燃尽图

(3)每位成员结合任务分工总结本次实验心得,最后由项目组长进行总结陈述。
本次实验我们更加深了面向对象分析与设计的思想,面向对象的分析设计方法是致力于解决传统软件研发过程中由于软件模块化结构化程度不够高带来的软件重用行差、软件可维护性差、开发出的软件不能满足用户需要等方面的问题。面向对象包括对象、对象的状态和行为、类、类的结构、消息和方法。对象包含对象的唯一性、抽象性、继承性多态性的重要特征。面向对象的要素包含抽象、封装、共享三方面。
在系统设计过程中,我们坚持面向对象软件设计原则,有已调配是单一职责原则,所以我们尽可能的去分解了这些职责,用不同的类去承担不同的职责。
OOA与OOD之间没有明显的界限。OOA与OOD的不可分割性正好说明了OO思想的强大,即软件过程阶段的无缝连接,在交流与沟通中不会产生很大的鸿沟,这也正是相对于结构化的优点之一,因为从功能模块到模块详细控制逻辑设计两者之间的联系十分紧密,需要分析人员的再沟通。
本次实验让我们对面向对象的理念,以及相关方法、设计模式有了更深刻的理解与掌握。慢慢认识到面向对象分析设计的学习就是培养思想的一种过程,这种思维方式还是要大量的时间才能灵活的运用。目前的阶段是能说是知到有这样一种设计思想,有这种解决问题的房按,至于在何时使用、应该怎么使用就需要在今后的经验中去积累了。
《3+1团队》第七次作业:团队项目设计完善&编码的更多相关文章
- 《你说对就队》第七次作业:团队项目设计完善&编码
<你说对就队>第七次作业:团队项目设计完善&编码 项目 内容 这个作业属于哪个课程 [教师博客主页链接] 这个作业的要求在哪里 [作业链接地址] 团队名称 <你说对就队> ...
- 《毛毛虫团队》第七次作业:团队项目设计完善&编码
一:实验名称:团队项目设计完善&编码 二:实验目的与要求 掌握软件编码实现的工程要求. 三:实验步骤 任务一:团队软件项目设计完善: 任务二:团队软件项目编码实现: 任务三:在团队博客发布博文 ...
- 《快活帮》第七次作业:团队项目设计完善&编码
项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十一 团队作业7-团队项目设计完善&编码 团队名称 快活帮 作业学习目标 掌握 ...
- 《逆袭团队》第七次作业:团队项目设计完善&编码
实验十一 团队作业7:团队项目设计完善&编码 内容 项目 软件工程 任课教师博客主页链接 作业链接地址 团队作业7:团队项目设计完善&编码 团队名称 逆袭团队 具体目标 (1)完善团队 ...
- 《hello-world团队》第七次作业:团队项目设计完善&编码
项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十一 团队作业7:团队项目设计完善&编码 团队名称 <hello--w ...
- 《奋斗吧!菜鸟》 第七次作业:团队项目设计完善&编码
项目 内容 这个作业属于哪个课程 任课教师链接 作业要求 https://www.cnblogs.com/nwnu-daizh/p/10980707.html 团队名称 奋斗吧!菜鸟 作业学习目标 团 ...
- 实验十一 团队作业7:团队项目设计完善&编码
实验十一 团队作业7:团队项目设计完善&编码 实验时间 2019-6-6 Deadline: 2019-6-12 10:00,以团队随笔博文提交至班级博客的时间为准. 评分标准: 按时交 – ...
- 实验十一 团队作业7—团队项目设计完善&编码测试
实验十一 团队作业7—团队项目设计完善&编码测试 实验时间 2018-6-8 Deadline: 2018-6-20 10:00,以团队随笔博文提交至班级博客的时间为准. 评分标准: 按时交 ...
- 《ABCD组》实验十一 团队作业7:团队项目设计完善&编码
<ABCD组>实验十一 团队作业7:团队项目设计完善&编码 项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在 ...
- Spring_Four -- 团队项目设计完善&编码测试
团队项目设计完善&编码测试 1.文档<软件设计方案说明书>github地址:https://github.com/gzyt/SRS 2.项目集成开发环境 数据库:Mysql 5.0 ...
随机推荐
- 【GStreamer开发】GStreamer播放教程04——既看式流
目的 在<GStreamer基础教程--流>里面我们展示了如何在较差的网络条件下使用缓冲这个机制来提升用户体验.本教程在<GStreamer基础教程--流>的基础上在扩展了一下 ...
- android基础---->传感器的使用
现在每部Android 手机里面都会内置有许多的传感器,它们能够监测到各种发生在手机上的物理事件,而我们只要灵活运用这些事件就可以编写出很多好玩的应用程序.今天我们开始简单的传感器使用的学习. 目录导 ...
- KVM虚拟机两种配置的概念不同之处
KVM虚拟机配置的两种方式之间的不同之处 NAT方式 NAT模式中,让虚拟机借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网. NAT模式中,虚拟机的网卡和物理网卡的网络,不在同一个网 ...
- mysql 转换NULL数据方法
mysql 转换NULL数据方法<pre>SELECT info1,info2, IFNULL(info3,0) as info3 FROM `info1`;</pre>< ...
- Spring Boot开启Druid数据库监控功能
Druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目.Druid支持所有JDBC兼容的数据库,包括Oracle.MySQL.Derby.PostgreSQL.SQL Server.H2等.D ...
- 利用Python进行数据分析 第7章 数据清洗和准备(1)
学习时间:2019/10/25 周五晚上22点半开始. 学习目标:Page188-Page217,共30页,目标6天学完,每天5页,预期1029学完. 实际反馈:集中学习1.5小时,学习6页:集中学习 ...
- 《C++语言程序设计》初学者必备教材
很多刚开始学习C++语言的同学,都会遇到一个问题:很多教材都不适合零基础的初学者.它们有的枯燥乏味,让人难以消化吸收,有的层次结构混乱,很难理清楚知识点,有的更是难度太大,没有代码的过渡,就开始讲解算 ...
- vs2017环境下python包的安装
1)---vs已经下载了的才适用 1,鼠标放在右侧窗口python环境那里(如没有窗口,可点击最上方的“窗口”-“重置窗口”) 2,右键然后点击“查看所有python环境”,会弹出当前默认的环境(高亮 ...
- Nginx学习笔记(五):高级数据结构
目录 动态数组 单向链表 双端队列 红黑树 缓冲区 数据块链 键值对 动态数组 ngx_array_t 表示一块连续的内存,其中存放着数组元素,概念上和原始数组很接近 // 定义在 core/ng ...
- Liar CodeForces - 822E (dp,后缀数组)
大意: 给定串$s,t$, 给定整数$x$, 求判断$t$是否能划分为至多$x$段, 使这些段在$s$中按顺序,不交叉的出现. 设$dp_{i,j}$表示$s$匹配到$i$位, 划分了$j$段, 匹配 ...