软件工程报告面向对象设计

合集下载

软件工程第十一章面向对象设计

软件工程第十一章面向对象设计

THANKS
感谢观看
01
抽象类是一种不能被实例化的 类,它只能被其他类继承。
02
抽象类可以包含抽象方法和具 体方法。抽象方法是没有具体 实现的方法,需要在继承抽象 类的子类中实现。
03
通过继承抽象类,子类可以继 承抽象类的属性和方法,并且 可以重写或实现抽象类中的方 法。
接口与抽象类的选择
在设计软件时,选择使用接口还是抽象类取决于具体需求和设计目标。
关系
关系描述了对象之间的交互和联系。 常见的关系包括关联、聚合和继承。
继承与多态的设计
继承
继承是一种实现代码重用的方式,子类可以继承父类的属性和方法,并可以扩展或覆盖它们。通过继承,可以建 立类之间的层次结构,使得代码更加清晰和易于维护。
多态
多态是指一个接口可以有多种实现方式,或者一个对象可以有多种形态。多态可以提高代码的灵活性和可扩展性, 使得程序更加易于维护和修改。
02
类与对象的设计
类的定义与属性
类的定义
类是对象的抽象,它描述了一组具有相同属性和行为的对象。类定义了对象的结构、行为和关系。
属性
属性是类中用于描述对象状态的变量。每个对象都有其自己的属性值,这些属性值决定了对象的状态 。
对象的行为与关系
行为
行为是类中定义的方法,用于描述对 象可以执行的操作。方法定义了对象 的行为和功能。
高层模块不应该依赖于低层模块,它们都应 该依赖于抽象。
面向对象设计的优势
提高代码可重用性
通过类和继承实现代码重用,减少重 复代码。
提高代码可维护性
面向对象设计使得代码结构更加清晰, 易于理解和维护。
提高开发效率
通过快速原型开发,快速构建软件系 统。

《实用软件工程》第9章 面向对象设计

《实用软件工程》第9章 面向对象设计

• 信息隐藏:对于类而言,其内部信息如属性的表示方法和操作的实现算法,对 外界是隐藏的。外界通过有限的接口来访问类的内部信息。
17
9.3.2 面向对象设计的原则
• 低耦合:在面向对象设计中,耦合主要指对象之间相互关联的紧密程度,低耦 合有利于降低一个模块改变对其他模块的影响。
• 高内聚:内聚与耦合密切相关,低耦合往往意味着高内聚,高内聚有助于提高 系统独立性。
但随着需求理解的加深,以及对系统认识程度的逐步 提高,设计人员还要对模型进行修正和完善。 • 设计任务管理子系统包括确定任务,分配任务,还包 括权衡一致性、成本、性能等因素以及未来可扩充性。 • 设计数据管理子系统,需要设计数据格式以及相应的 服务,设计数据格式的方法与所用的数据存储管理模 式密切相关,不同数据存储管理模式时,属性和服务 的设计方法是不同的。
9.2 面向对象设计与面向对象分析的关系
• 设计阶段的任务是及时把分析阶段得到的需求转变成符合各项要求的 系统实现方案。与传统的软件工程方法不同的是,面向对象的方法不强调 需求分析和软件设计的严格区分。实际上,面向对象的需求分析和面向对 象的设计活动是一个反复迭代的过程,从分析到设计的过渡,是一个逐渐 扩充、细化和完善分析阶段所得到的各种模型的过程。严格的意义上来讲, 从面向对象分析到面向对象设计不存在转换问题,而是同一种表示方法在 不同范围的运用。面向对象设计也不仅仅是对面向对象分析模型进行细化。
• (2)人机交互子系统包括有效的人机交互所需的显示和输入,这些类在很大程度上 依赖于所用的图形用户界面环境,例如Windows、Delphi、C++,而且可能包括“窗 口”、“菜单”、“滚动条”、“按钮”等针对项目的特殊类。
25
9.5.1 系统分解

软件工程面向对象分析与设计

软件工程面向对象分析与设计
:name,address,socialSecurityNumber,yearsExperience, hireDate,salary 事件:carry(),pour(),collect(),call(),checkOrderStatus()
填充后的类图
收集系统需求
看下面一段话。 协调员:"这个系统做好后准备叫什么名字呢?" 厨师:"叫MASTER CHEF怎么样?" 协调员:"不好听,在想一个吧" 系统工程师:"来个简明快捷的吧,就叫Wireless
战性。 我们以IBM Rational Rose 2003为主.
UML的组成(常用视图)
类图:把现实事物抽象出来,用图来表示.
类名 属性
事件
视频
UML的组成(常用视图)
用例图:从用户的观点对系统行为的一个描述.
视频
UML的组成(常用视图)
状态图(Statechart Diagram)是描述一个实体基于事件 反应的动态行为,显示了该实体如何根据当前所处的 状态对不同的时间做出反应的。
UML的组成(常用视图)
构件图:软件组成中的一个单元。视频

构件
UML的组成(常用视图)
部署图:一个UML部署图描述了一个运行时的硬件结 点,以及在这些结点上运行的软件组件的静态视图。 部署图显示了系统的硬件,安装在硬件上的软件,以 及用于连接异构的机器之间的中间件,显示了基于计 算机系统的物理系统结构。
第二部分 UML细节
1 如何认识面向对象中的元素 2 UML中的关系。
如何认识面向对象中的元素
如果我们有一个项目需要做需求分析,这时客户和你 交谈的时候因该注意什么呢??

软件工程面向对象设计

软件工程面向对象设计
重构策略与技巧
运用提取方法、移动方法、重命名等重构手法,提高代码质量。
版本控制工具使用
利用Git等版本控制工具管理代码变更,确保团队协作顺畅进行。
测试驱动开发与自动化测试
01
测试驱动开发实践
先编写测试用例,再实现功能代码,以确保代码质量和可测试性。
02
自动化测试框架选择
根据项目需求选择合适的自动化测试框架,如JUnit、TestNG等。
方法(Method)
方法是对象的行为或操作,用于改变对象的状态或与其他对象交互。
封装与继承
封装(Encapsulation)
封装是将对象的属性和方法结合成一个独立的单元,并隐藏内部实现细节。封装提供了安全性和数据 隐藏,只允许通过对象的方法来访问和修改其状态。
继承(Inheritance)
继承是一种允许类继承另一个类的属性和方法的机制。子类(派生类)可以继承父类(基类)的属性 和方法,并可以添加新的属性和方法或覆盖父类的方法。继承实现了代码重用和层次化的类结构。
数据库设计与ORM技术
数据库设计
根据领域模型和业务需求,设计数据库表结构、索引和约束等。
ORM技术
使用对象关系映射(ORM)技术,实现数据库表与程序中的类之 间的映射,简化数据访问操作。
数据库操作优化
针对数据库操作的性能瓶颈,进行优化设计,如使用连接池、缓存 等技术。
界面设计与交互体验优化
界面设计
03
单元测试与集成测试
编写高质量的单元测试和集成测试,提高代码覆盖率,降低缺陷率。
团队协作与敏捷开发方法
编码规范与代码审查
制定统一的编码规范,进行定期的代码审查, 提高代码质量。
任务分解与优先级排序

软件开发实习报告:面向对象设计与编码规范

软件开发实习报告:面向对象设计与编码规范

软件开发实习报告:面向对象设计与编码规范一、引言在我参加软件开发实习期间,我深入研究了面向对象设计和编码规范的重要性,并在项目中实践了这些原则。

本文将对面向对象设计和编码规范进行探讨,并分享我的经验和教训。

二、面向对象设计面向对象设计是一种软件开发方法,它将系统看作是由多个对象相互交互组成的。

面向对象设计具有以下几个核心原则:1. 封装:将数据和相关的操作封装在一个对象中,避免对外暴露实现细节。

这样可以增加代码的可维护性和可复用性。

2. 继承:通过继承机制,可以从现有的类派生出新的类,并在新的类中添加或修改功能。

这样可以减少代码的重复性,提高代码的可扩展性和可维护性。

3. 多态:多态性允许不同的对象对同一消息作出不同的响应。

通过多态,可以减少条件语句的使用,提高代码的灵活性和可读性。

面向对象设计的目标是创建易于理解、可扩展和可维护的软件系统。

在实习项目中,我遵循了面向对象设计的原则,并将代码组织成多个相互独立的对象,每个对象都拥有自己的属性和方法。

这种设计使得整个系统变得清晰,并且更易于调试和扩展。

三、编码规范编码规范是一种约定,旨在提高代码的可读性、可维护性和一致性。

以下是一些常见的编码规范原则:1. 命名规范:命名应具有描述性和一致性。

使用有意义的变量名、函数名和类名,避免使用缩写和简写。

另外,选择一种命名风格(如驼峰命名法或下划线命名法)并保持一致。

2. 缩进和空格:采用一致的缩进风格,并在适当的地方使用空格来提高代码的可读性。

另外,避免在行尾使用多余的空格。

3. 注释规范:对代码进行适当的注释,尤其是复杂的逻辑和算法。

注释应该清楚、简洁,并包含足够的信息以便其他人能够理解代码意图。

4. 设计模式:在适当的情况下,使用常见的设计模式来解决特定的问题。

设计模式是一种被广泛接受的解决方案,可以提高代码的可维护性和可复用性。

在实习项目中,我严格遵守了编码规范,并且与团队成员进行了代码审查,以确保代码符合规范。

软件工程面向对象软件设计

软件工程面向对象软件设计

4.5.3.4
数据管理部分的设计
数据管理部分提供了数据在数据管 系统中存储和检索对象的基本结构,它 分离了数据管理方案的影响 (不管该方
案是普通文件、关系型数据库、面向对
象数据库或其它方式.)
如何设计数据管理部分 (1)数据存放方法设计 (2)相应服务的设计
为每个需存储其对象的类增加一个 属性和服务
分析模型
类 属性 方法 关系 行为
设计模型
对象 数据结构 算法 消息传递 控制
4.5.3 Yourdon的OOD方法
OOD模型
OOD由四个活动组成:
主题层 问题域 人机交 任务管 数据管 类及对象层 部分 互部分 理部分 理部分 结构层 (PDC) (HIC) (TMC) (DMC) 属性层 服务层 OOA 阶段模型
子系统设计过程中 必须定义四种重要的设计结构
问题域—直接负责实现客户需求的子系统
人机交互—实现用户界面的子系统
(包括可复用的GUI子系统)
任务管理—负责控制和协调并发任务的子
系统,任务可能被包装在一个 子系统中或不同的子系统间;
数据管理—负责对象的存储和检索的子系统
在对象设计过程中 将分析模型转换为设计模型
软件重用
• 概述
1.重用 重用也叫再用或者复用,是指同一事物不作修 改或者稍加修改就能多次重复使用。分为三个 层次: (1)知识重用 (2)方法和标准的重用 (3)软件成分的重用
2.软件成分的重用级别 (1)代码重用 (2)设计结果重用 (3)分析结果重用 3.典型的可重用软件成分
(1)项目计划 (2)成本估计 (3)体系结构 (4)需求模型和规格说明 (5)设计 (6)源代码 (7)用户文档和技术文档 (8)用户界面 (9)数据 (10)测试用例

软件工程实验报告模板——面向对象设计

软件工程实验报告模板——面向对象设计

《软件工程》实验报告超市运营管理系统面向对象设计指导教师:班级:学生姓名:学号:完成日期:运城学院计算机科学与技术系1.概述 (1)2.系统结构设计 (1)3.模块及人机界面设计 (1)3.2 前台销售管理 (3)3.2 后台销售管理 (4)3.3 商品管理 (4)3.4 销售商品信息汇总管理 (5)4.数据设计 (5)4.1.超市管理系统包含的实体和属性: (5)4.2.实体之间的联系 (5)4.3.系统总E-R图 (5)4.4.数据库关系表 (6)5. 对象设计 (7)5.1 设计类的服务 (7)5.2 设计关联 (8)5.3 优化对象模型 (8)6. 总结 (9)1.概述面向对象设计就是将面向对象分析的问题域分析模型转换为符合成本和质量的求解域设计模型。

该阶段再划分为系统设计和对象设计。

系统设计确定实现系统的策略,进行系统架构设计、人机界面设计、数据设计和模块设计;对象设计确定设计模型中的类、关联、接口和现实服务的算法。

面向对象设计与面向对象分析是一个多次反复迭代的过程,二者界限模糊。

2.系统结构设计选课系统整体上采用Internet技术,客户端通过Web方式进行信息的发布和获取。

软件架构采用浏览器/服务器方式。

客户端采用JavaScript、Java等网络编程语言编写,其脚本程序简单易用、灵活性强,可以控制整个Web页面。

基于JavaScript的用户界面为用户所熟悉,因此,我们选择JavaScript来编写基于HTML的客户端应用程序,完成客户与服务器间的参数传递,在浏览器中解释执行。

设计时考虑访问权限,对不同权限级别显示相应的内容。

Web网络服务器向用户提供业务服务,应用服务器处理Web服务器转发的请求进行业务处理。

我们基于SQL Server 2005数据库平台搭建选课系统数据库。

本系统采用面向对象的三层体系结构,这种三层体系结果是在客户端与数据库之间加入了一个中间层,应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。

软件工程第11章面向对象设计

软件工程第11章面向对象设计

2. 重用已有的类
重用已有类(代码重用)实现分析模型;若没有可以重用类而需要创建新 类时,则在设计这些新类时需要考虑其可重用性。
对于已有的可重用类,典型重用方法和过程如下: 1)选择可能被重用的已有类,标出类中对本问题无用的属性和服务,选 择那些能使无用的属性和服务最少的类; 2)从被重用的已有类派生出问题域类(继承重用类而产生问题域类); 3)标出从已有类继承来的属性和服务,而无须在分析类内定义;
6. 可重用
软件重用是提高软件开发生产率和目标系统质量的重要途径。 重用有两方面的含义: 一是尽量使用已有的类(类库或已建立的类), 二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将 来的可重复使用性。
11.2
启发规则
与结构设计规则类似,通过OOD实践也总结了一些设计规则: 1. 设计结果应该清晰易懂 设计结果清晰、易读、易懂,是提高软件可维护性和可重用性的重要 措施。保证设计结果清晰易懂的主要因素为:用词一致;使用已有的 协议;避免模糊的定义等。
1)层次组织:这种组织方案把软件系统组织成一个层次系统,每层是一 个子系统。上层和下层自系统形成C/S结构 层次结构的两种模式:封闭式和开放式:封闭式,每层子系统仅仅使用其 直接下层提供的服务;开放式,任一层次可以向下跨层次调用。 2)块状组织:把软件系统垂直地分解成若干个相对独立的、松耦合的子 系统,一个子系统相当于一块,每块提供一种类型的服务。
第11章
11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 11.10 11.11
面向对象设计
面向对象设计的准则 启发规则 软件重用 系统分解 设计问题域子系统 设计人机交互子系统 设计任务管理子系统 设计数据管理子系统 设计类中的服务 设计关联 设计优化
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

系统的初始配置以及需要时的系统重新配置。 预见的故障或系统意外终止。 边界条件是使用边界用例建模的。
对象设计
开发子系统的层次结构后,将识别系统中的对象并设计其详细信息。在这里, 设计人员详细介绍了系统设计期间选择的策略。重点从应用程序域概念转变为 计算机概念。蚀刻掉在分析过程中识别出的对象以实现,目的是最大程度地减 少执行时间,内存消耗和总成本。 对象设计包括以下阶段-
信号事件 -被一个对象抛出并被另一个对象捕获的命名对象。 呼叫事件 -表示操作调度的同步事件。 时间事件 -代表时间流逝的事件。 更改事件 -表示状态更改的事件。
处理边界条件
系统设计阶段需要解决整个系统以及每个子系统的初始化和终止问题。记录的 不同方面如下-
系统的启动,即系统从非初始化状态到稳态的过渡。 系统终止,即关闭所有正在运行的线程,清理资源以及要发送的消息。
包装类
在任何大型项目中,将实现细致地划分为模块或包都是很重要的。在对象设计 期间,将类和对象分组到包中,以使多个组可以在项目上协同工作。 包装的不同方面是-
从外部视图隐藏内部信息 -允许将类视为“黑匣子”,并允许更改类实 现,而无需该类的任何客户端修改代码。 元素的一致性 -如果元素(例如类,操作或模块)是按照一致的计划组 织的,并且其所有部分都内在相关,则它们是一致的,从而可以实现一 个共同的目标。 物理模块的构建 -以下准则在构建物理模块时有帮助-
每次更新基本属性值时,也会重新计算派生的属性。 所有派生的属性都将重新计算并在一个组中定期更新,而不是在每次更 新之后更新。
设计文件
文档是记录软件制作过程的任何软件开发过程的重要组成部分。对于任何非平 凡的软件系统,都需要将其设计决策记录在案,以将设计传达给其他人。
使用领域
尽管是辅助产品,但是良好的文档是必不可少的,尤其是在以下方面:
对象表示
一旦确定了类,就需要使用对象建模技术来表示它们。此阶段实质上涉及构造 UML 图。 有两种类型的设计模型需要产生-
静态模型 -使用类图和对象图描述系统的静态结构。 动态模型 -描述系统的动态结构,并使用交互图和状态图显示类之间的 交互。
业务分类
在这一步骤中,通过组合在 OOA 阶段开发的三个模型(对象模型,动态模型和 功能模型)来定义要对对象执行的操作。操作指定要执行的操作,而不是应如 何执行。 执行以下与操作有关的任务-
将状态表示为程序中的位置 -这是传统的过程驱动方法,控制位置定义 程序状态。有限状态机可以实现为程序。过渡形成输入语句,主控制路 径形成指令序列,分支形成条件,而后向路径形成循环或迭代。
状态机引擎 -这种方法通过状态机引擎类直接表示状态机。此类通过应 用程序提供的一组转换和动作来执行状态机。
作为并行任务进行控制 -在这种方法中,将对象作为编程语言或操作系 统中的任务来实现。在这里,事件被实现为任务间调用。它保留了真实 对象的固有并发性。
重新排列计算任务的顺序 循环的执行顺序与功能模型中的顺序相反 消除算法中的无效路径
保存和存储派生属性
派生属性是其值根据其他属性(基本属性)计算的那些属性。每次需要时都重 新计算派生属性的值是一个耗时的过程。为避免这种情况,可以计算值并以其 计算形式存储这些值。 但是,这可能会导致更新异常,即,基本属性值的更改而派生属性的值没有相 应的更改。为了避免这种情况,请采取以下步骤-
模块中的类应表示同一复合对象中的相似事物或组件。 紧密连接的类应位于同一模块中。 未连接或连接较弱的类应放在单独的模块中。 模块应具有良好的凝聚力,即其组件之间的高度协作。 一个模块与其他模块的耦合度应低,即模块之间的交互或相互
依赖性应最小。
设计优化
分析模型捕获有关系统的逻辑信息,而设计模型添加详细信息以支持有效的信 息访问。在实施设计之前,应先对其进行优化,以使实施效率更高。优化的目 的是使时间,空间和其他指标方面的成本最小化。
绘制了系统中每个对象的状态转换图。 为对象接收的事件定义了操作。 确定一个事件触发相同或不同对象中的其他事件的情况。 确定动作中的子操作。 主要动作扩展为数据流程图。
算法设计
使用算法定义对象中的操作。算法是解决操作中存在的问题的逐步过程。算法 专注于如何完成。 可能有不止一种算法对应于一个给定的操作。一旦确定了替代算法,就针对给 定的问题域选择最佳算法。选择最佳算法的指标是-
识别并发
并发允许多个对象同时接收事件,并允许同时执行多个活动。并发在动态模型 中标识并表示。
为了启用并发,每个并发元素都分配有单独的控制线程。如果并发处于对象级 别,则为两个并发对象分配两个不同的控制线程。如果单个对象的两个操作本 质上是并发的,则该对象将在不同的线程之间拆分。 并发与数据完整性,死锁和饥饿问题相关。因此,无论何时需要并发,都需要 制定明确的策略。此外,并发需要在设计阶段本身进行识别,并且不能留给实 施阶段。
软件工程报告面向对象设计
在分析阶段之后,使用面向对象设计(OOD)将概念模型进一步发展为面向对 象模型。在 OOD 中,将分析模型中与技术无关的概念映射到实现类上,确定约 束并设计接口,从而形成解决方案领域的模型。简而言之,构建了详细的说明, 指定如何在具体技术上构建系统 面向对象设计的阶段可以标识为-
计算复杂度 -复杂度决定了计算时间和内存需求方面算法的效率。 灵活性 -灵活性决定了所选择的算法是否可以适当地实现,而又不会在
各种环境中丧失适当性。 可理解性 -这决定了选择的算法是否容易理解和执行。
关系设计
在对象设计阶段需要制定实现关系的策略。解决的主要关系包括关联,聚合和 继承。 设计师应该对关联做以下事情-
识别模式
在设计应用程序时,针对某些类别的问题采用了一些公认的解决方案。这些是 设计模式。模式可以定义为可以在某些类型的应用程序开发问题中使用的一组 文档化的构建基块。 一些常用的设计模式是-
外墙图案 模型视图分离模式 观察者模式 模型视图控制器模式 发布订阅模式 代理模式
控制事件
在系统设计期间,需要识别并适当处理可能发生在系统对象中的事件。 事件是具有时间和空间位置的重大事件的说明。 可以建模的事件有四种类型,即-
在设计由许多开发人员开发的软件时 在迭代软件开发策略中 在开发软件项目的后续版本时 用于评估软件 用于查找条件和测试区域 用于软件维护。
但是,设计优化不应过多,因为易于实现,可维护性和可,但可读性和重用性却较低。因此, 设计师必须在两者之间取得平衡。 设计优化可以做的各种事情是-
添加冗余关联 忽略不可用的关联 算法优化 保存派生的属性以避免重新计算复杂的表达式
冗余协会的增加
系统上下文的定义 设计系统架构 识别系统中的对象 设计模型的构建 对象接口规范
系统设计
面向对象的系统设计涉及定义系统的上下文,然后设计系统的体系结构。 上下文 -系统的上下文具有静态和动态部分。使用整个系统的简单框图设计
系统的静态上下文,该框图被扩展为子系统的层次结构。子系统模型由 UML 包表示。动态上下文描述了系统如何与其环境交互。它使用用例图建模 系统架构 -系统架构是根据系统上下文根据架构设计和领域知识设计的。通 常,系统分为几层,每层分解以形成子系统。
在设计优化过程中,将检查派生新关联是否可以降低访问成本。尽管这些冗余 关联可能不会添加任何信息,但它们可能会提高整个模型的效率。
遗漏不可用的协会
关联过多会导致系统难以理解,从而降低系统的整体效率。因此,在优化过程 中,将删除所有不可用的关联。
算法优化
在面向对象的系统中,数据结构和算法的优化以协作的方式完成。一旦课程设 计到位,就需要优化操作和算法。 通过以下方式获得算法的优化:
面向对象的分解
分解意味着按照分而治之的原则,将一个大型的复杂系统划分为具有较小复杂 性的较小组件的层次结构。系统的每个主要组成部分都称为子系统。面向对象 的分解可识别系统中的各个自治对象以及这些对象之间的通信。 分解的优点是 各个组件的复杂度较低,因此更易于理解和管理。 它可以使具有专业技能的劳动力分工。 它允许替换或修改子系统,而不会影响其他子系统。
对象识别 对象表示,即设计模型的构建 作业分类 算法设计 关系设计 实现外部交互的控制 将类和关联打包到模块中
对象识别
对象设计的第一步是对象识别。在面向对象的分析阶段中确定的对象被分组为 类并进行了精炼,以使其适合实际实施。 这个阶段的功能是-
识别和完善每个子系统或程序包中的类 定义类之间的链接和关联 设计类之间的层次结构关联,即泛化/专业化和继承 设计聚合
标识关联是单向还是双向。 分析关联的路径,并在必要时进行更新。 在多对多关系的情况下,将关联作为单独的对象来实现;或在一对一或
一对多关系的情况下作为与其他对象的链接。 关于继承,设计者应执行以下操作-
调整类及其关联。 识别抽象类。 进行准备,以便在需要时共享行为。
实施控制
对象设计者可以在状态图模型的策略中纳入改进。在系统设计中,制定了实现 动态模型的基本策略。在对象设计期间,适当地点缀了此策略以进行适当的实 现。 动态模型的实现方法是-
相关文档
最新文档