面向对象系统设计

面向对象系统分析与设计 数据抽象  把一组数据及作用与其上的操作组成一个设计实体或单位。 接口说明外部可见,其实现是隐蔽不可见的 面向对象的特点 封装机制 基于消息的通信 继承机制 多态机制 面向对象=对象+分类+继承+通信 系统发展的趋势: 1.从系统开发到系统集成 2.从以程序为中心到以信息内容(数据)为中心、或以用户为中心 3.从孤立封闭的集中控制式系统到协同开发的分布式系统 阅读详情

面向对象系统设计

当你阅读到这里时,我假设你已经理解了面向对象的基本概念,初步掌握了的

UML语言。

第三章、 架构设计

3.1 架构设计原则

系统设计的第一步就是确定软件的架构,它决定了各子系统如何组织以及

如何协调工作。架构设计的好坏影响到软件的好坏,系统越大越是这样。进行

架构设计时,有两个重要的原则可以遵循:

一、分层。

将系统分层是简化系统的好方法,而且已经得到了很好的证实,如OSI 七

层模型网络协议,数据库管理系统的外模式、模式、内模式等。分层的思路是

将系统按功能职责进行划分,将同一类职责的功能抽象为一层。在信息系统中

软件架构通常采用典型的三层结构:

1、表示层――用户界面。

2、业务层――业务处理流程。

3、数据层――持久化存储。

与传统的两层结构相比,它最大的特征是将业务层独立了出来,从而提高

了业务层的可复用性。在两层结构中,用户界面和业务处理流程放在一起,因

此无法直接复用业务处理的相关功能,也无法将业务处理功能进行灵活的部

署。在三层结构中,表示层只处理用户界面相关的功能,业务层专心处理业务

流程,可以对业务层进行灵活的部署,开发时也便于业务处理的开发和用户界

面的开发同时进行。

当然也可以分为更多的层,关键是尽量提高层内各功能的内聚,降低各层

之间的耦合。

二、各层之间通讯。

OSI 中要求高层只能调用它的下一层提供的接口,我们设计接口时也尽量

遵守这样的约束,例如典型的三层结构的访问关系为:

数据层在业务层中是可见的,业务层在表示层中是可见的,反之则不可见。为

什么在业务层中不能直接访问表示层呢?因为业务层要相对独立,它不能依赖

于任何表示层,以至于一个业务层可以对应多个表示层。业务层可以间接与表

示层通讯,这种通讯方式根据实际需要来确定。

3.2 信息系统的架构设计

下面我们将根据架构设计原则和信息系统原理来建立一个信息系统的架构设计

模型。将信息系统中比较关心的对象分层,可分为三层:用户界面层、业务

层、数据访问层,再把各层中的一些公共部分提出来:权限管理、异常处理,

这样得到包图如下:

3.2.1 用户界面包

用户界面层的职责是:

1、与用户的交互,接收用户的各种输入以及输出各种提示信息或处理结果。

2、对于输入的数据进行数据校验,过滤非法数据。

3、向业务处理对象发送处理请求。

包含类:

业务处理层的职责是:

1、实现各种业务处理逻辑或处理算法。

2、验证请求者的权限。

3、向数据访问对象发送数据持久化操作的请求。

4、向用户界面层返回处理结果。

包含类:

这里使用了代理(Proxy)模式,用户界面对象只能通过业务代理对象来向业务

对象发送请求。业务代理对象首先判断请求者的权限,然后转发合法请求者的

请求。

3.2.3 数据访问包

数据访问层的职责是:

1、实现数据的持久化操作(本书假设数据的存储由关系数据库来完成)。

2、实现事务处理。

对于每一个业务处理中需要持久化操作的对象都可以对应为一个数据库访问对

象,在很多业务处理中需要请求多个数据库访问对象来进行数据的读写操作,

而这些操作又必须在同一个事务中,这时需要用同一个数据库连接对象来进行

统一的事务处理。这里的数据库连接类的创建用到了单件(Singleton)模式,

保证一个类仅有一个实例,一个客户在同一时刻只能用一个数据库连接对象。

3.2.4 权限管理包

权限管理的主要职责是:

1、验证请求者的请求权限。

2、提供请求者的权限列表。

包含类

业务处理对象通过权限管理对象来验证权限。

3.2.5 异常处理包

异常处理的职责:

1、汇报运行时的详细异常信息。

2、记录异常处理日志。

包含类:

因为异常处理类型比较多,如:系统异常、数据库异常、业务逻辑异常等,针

对不同类型的异常处理方式也容易变,如:显示错误,记录文本日志,记录数

据库日志等,所以这里使用了桥接(Bridge)模式来实现,使各部分的变化比

较独立。

3.2.6 架构的类图

将包图展开,得到类图,它是架构的静态结构图,表达了各个类之间的静态联

系:

3.2.7 架构的动态图

它是对象的动态结构图,表达了类对象之间的动态协助关系。

流程:

1、用户界面对象在接收了用户的输入请求后,向业务代理对象发送处理请求。

2、业务代理对象接收到请求后,向权限管理对象发送验证权限请求。

3、权限管理对象验证权限后将验证结果返回给业务代理对象。

4、业务代理对象根据验证结果进行以下处理:对于不符合权限的请求则返回提

示信息;对于符合权限的请求,则将请求转发给业务对象。

5、业务对象进行业务处理。对于业务处理中的数据持久化操作,通过访问数据

库访问对象进行操作,期间的任何异常都交给异常处理对象处理。最后返回

处理结果信息给业务代理对象。

6、业务代理对象将处理结果信息返回给用户界面。

至此,我们已经学习了架构设计原则,并建立了一个信息系统的架构设计

模型。

43、面向对象系统设计与实现指南 本文以 Menu Maker 项目为例,详细介绍了面向对象系统设计与实现的关键步骤和技术。内容涵盖了从识别系统子系统、确定类及其职责、设计接口和实现文件,到模块测试与集成、系统优化策略以及未来扩展与维护的考虑。通过模块化设计和良好的接口规划,帮助开发者构建高效、可维护的软件系统。 阅读详情

相关推荐

17、Java面向对象编程:GUI与ATM系统设计

本博客介绍了Java面向对象编程中GUI设计与ATM系统建模的相关内容。通过案例研究,讲解了如何使用Java的JOptionPane类创建对话框,实现基本的输入和输出功能。同时,基于ATM系统的需求文档,详细分析了如何识别系统中的类,并利用UML类图建模类之间的组合、关联等关系。此外,还探讨了类图在系统设计中的作用以及Java中使用对话框的技巧与注意事项,帮助开发者更好地构建图形界面和复杂系统。

tgb34567890的博客 92

第十一章:面向对象设计

如前所述,分析是提取和整理用户需求,并建立问题域精确模型的过程。设计则是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。从面向对象分析到面向对象设计(OOD),是一个逐渐扩充模型的过程。或者说,面向对象设计就是用面向对象观点建立求解域模型的过程。

weixin_42559968的博客 2193

38、面向对象系统设计案例集

本文详细介绍了多个面向对象系统设计的案例,涵盖银行账户管理、几何图形计算、学生记录管理、员工薪资计算、图书馆管理、车辆租赁、社交媒体平台、在线购物车、航班预订以及天气监测等系统。每个案例都包含问题描述、实现方法、示例代码和输出结果,帮助读者深入理解面向对象设计的核心思想和实际应用。同时,案例还提供了扩展方向,便于读者进一步探索和开发更复杂的功能。

mqtt6iot的博客 70

深入浅出精讲面向对象设计七大原则,彻底领悟设计背后思想

欢迎阅读!对面向对象设计原则的学习能够提高大家的系统设计能力和代码编写质量。本文内容丰富易懂,对每一个面向对象设计原则都会举出具体的例子来进行讲解。在文章最后会对所有的面向对象设计原则进行总结。另外,本篇文章有配套的讲解视频。欢迎大家阅读和观看~希望通过这篇文章的分享能够使得大家在今后利用面向对象语言编写代码时给大家带来一些帮助。

m0_49028841的博客 3438

34、面向对象的 ATM 系统设计与实现

本文详细介绍了如何通过面向对象的设计方法来构建一个自动取款机(ATM)软件系统。从需求分析到系统设计,使用了统一建模语言(UML)的多种图示对系统的结构和行为进行建模,并展示了关键类、属性、操作及对象间的协作关系。文章提供了完整的系统设计方案,并为后续Java实现奠定了基础,是一次完整且贴近实际的案例研究。

fire9的博客 111

深入面向对象系统设计:循序渐进指南

在现代软件开发中,面向对象系统设计是一个核心概念,它不仅涉及编程范式,更是一种思考问题和解决问题的方法论。本章旨在为读者提供面向对象系统设计的概览,介绍它的核心原则和关键价值,并通过与传统过程化编程的比较,为初学者和有经验的开发者提供清晰的路线图。面向对象设计的核心在于将现实世界的问题和解决方案模型化为对象和类。这种模型化的过程,涉及对现实世界中对象的属性、行为的抽象和封装,以及通过类和对象之间的关系来表达它们之间的交互。

weixin_35987118的博客 929

系统架构设计师之系统设计-面向对象设计-设计模式的分类

系统架构设计师之系统设计-面向对象设计-设计模式的分类。

ctrigger的专栏 184

面向对象的调度系统设计与实现

本文探讨了面向对象的调度系统设计与实现,阐述了对象、方法、事件、消息和状态转换等概念,以及如何通过这些概念构建复杂的调度引擎。此外,文章还讨论了基于网络的调度系统的设计特点,包括其对调度系统组件的重构要求,以及如何利用互联网技术解决大规模调度问题。

weixin_42608318的博客 787

面向对象系统设计入门——经典书籍(提供下载)

面向对象系统设计循序渐进(点击下载) 转载于:https://www.cnblogs.com/codemo/archive/2008/09/02/oop_book.html

weixin_34192993的博客 188

软件设计师考试通关攻略:系统设计与面向对象技术

本文深入解析了软件设计师考试中关于系统设计和面向对象技术的关键考点。从建立新系统逻辑模型到编写系统方案说明书,从系统分析到系统设计的基本原理,再到面向对象技术的深入探讨,本文旨在为考生提供一条清晰的复习路径,并且通过实例与图表,加深理解。

weixin_33419305的博客 387

面向对象的系统设计

Ant权威指南本书涵盖了初识Ant的人所需的全部知识。对于Ant专家来说,本书可作为一本参考书,其中提供了Ant核心任务的详细定义;讨论了Ant的主要特性;提供了用Ant来管理工程的一些最佳实践;还解释了某些Ant问题的解决方法。

PHP面向对象ATM系统设计详解

核心数据模型- 业务逻辑控制器。

2501_94464174的博客 316

《面向对象系统设计循序渐进》PDF版

《面向对象系统设计循序渐进》PDF电子书。

面向对象系统设计备忘

面向对象的系统设计,说的简单一点,就是关注点拆分的问题: 系统拆分成子系统; 子系统拆分成模块; 大的模块拆分成的小的模块; 小的模块拆分成类; 类拆分成结构体和功能点;   经过这样的拆分,系统实际上会被抽象成对象的结构和对象的功能;以及对象之间的协作。 而在系统设计的过程中,需要关注的东西,除了模型的抽象之外,怎么才能消除重复代码,解除对象之间的强耦合,把变化的部分从不变的代码

mm_88的专栏 545

YOLOv8中间特征层可视化

在通过观察这些特征,可以清楚地看到模型如何逐步将输入图像转化为有意义的表示。

weixin_45314480的博客 6891

离线安装 nvidia-docker2(nvidia-container-toolkit)

很多时候大家都有用docker使用gpu的需求,但是因为网络等原因不是那么好用,这里留了一个给ubuntu的安装包,网络好的话也提供了在线安装方式。

father_yingying的博客 1181

面向对象系统设计经验谈

转载自卢彦的Blog http://www.agilelabs.cn/ 面向对象系统设计经验谈 就像我在应用架构设计总结这篇BLOG中提到的那样,面向对象的系统设计就好象一群人翻越一座陡峭的悬崖,只要任何一个人没有翻越过去,那么就无法设计出真正的面向对象系统。 归结一下,在你打算进行面向对象的系统之前,你一定要考虑是否已经解决或能解决以下的问题: 一、对象的持久化对象的持久化是最容易被想到的问题,

538

CTR模型:Deep&Cross Network

1. 简介 DCN模型(Deep & Cross Network for Ad Click Predictions)是2017年提出的。 出发点: (1)人工探索所有的交叉特征是不现实的; (2)难于推广未曾出现过的交叉特征。 DNN能够自动探索交叉特征并推广到未出现过的交叉特征,但是DNN的学习效率不高,且无法显式的学习特征交叉。 Deep&Cross Network, DCN 模型保留了DNN的优点,并提出了新的cross network,高效学习高阶特征交互。 优点: (1)cross

rosefun96的博客 9360

PHP面向对象ATM系统设计与实现详解

面向对象编程(OOP)是现代软件开发的核心范式,通过封装、继承和多态三大特性构建高内聚低耦合的系统。在金融系统开发中,PHP结合OOP能有效处理ATM系统的并发交易、事务完整性和安全验证等关键需求。本文以ATM系统为例,详解如何运用类设计、异常处理机制和三层安全防护体系实现金融级应用,特别涵盖账户类的线程安全设计、BC Math扩展处理金融精度问题等实战经验,为开发高可用金融系统提供专业级解决方案。

weixin_32175665的博客 245

FPGA实战 —— 基于UART的多设备串口通信系统设计

本文深入探讨了基于FPGA的多设备UART串口通信系统设计。针对工业控制与物联网应用中一对多通信的需求,文章对比了共享总线式、多路独立式等硬件连接方案,并详细阐述了可配置UART IP核、波特率自适应算法以及多路数据仲裁与分发逻辑等核心设计要点。最后,通过一个四传感器采集节点的实战案例,展示了从硬件连接到Verilog代码实现的完整系统构建过程。

weixin_29172963的博客 234

SAR成像系列:【3】合成孔径雷达(SAR)的二维回波信号与简单距离多普勒(RD)算法 (附matlab代码)

二维回波信号分析

zr2006_7的专栏 2万+

需求分析与系统设计的面向对象推导过程

  几年前写的了,这两天整理东西的时候又给翻出来了,当时是公司让给我给设计人员讲讲如何写面向对象的设计说明书,所以临时东拼西凑的弄了这么个东西,毕竟是用于内部培训的,有些东西都是直接从网上整段COPY的,最多就是用自己的话又修饰了一遍,在此说明一下,各位看到的时候,莫过多纠结于此 。 一.引言 1.1文档概要   概要很简单... 1.2编写目...

weixin_30781433的博客 610

Python实战:3种高效方法将txt转csv(附pandas对比测试)

本文针对Python中将txt文件转换为csv格式的需求,深度评测了open()、csv模块和pandas三种主流方法。通过详尽的性能对比测试,从执行效率、内存占用和适用场景等维度提供选型指南,帮助开发者根据数据规模与复杂度选择最高效的转换方案。

weixin_29073241的博客 263
上一篇: ubuntu下服务器配置
下一篇: 针对Centos8.0开启端口失败: /etc/rc.d/init.d/iptables: 没有那个文件或目录
violetlength
博客等级 码龄17年 9粉丝 29原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值