面向对象分析与设计

面向对象软件工程知识点

本秂侑毒 提交于 2020-02-01 11:16:17
面向对象软件工程知识点 1.封装是指把对象的(A)结合在一起,组成一个独立的对象。 A.属性和操作 B.信息流 C.消息和事件 D.数据的集合 2.状态图和活动图建立了UML面向对象开发过程中的对象动态(B)模型。 A.交互 B.状态 C.体系结构 D.软件复用 3.UML的(C)模型图由活动图、顺序图、状态图和合作图组成。 A.用例 B.静态 C.动态 D.系统 4.在UML的需求分析建模中,对用例模型中的用例进行细化说明应使用(A)。 A.活动图 B.状态图 C.配置图 D.构建图 5.设计模式就是对(D)的描述或解决方案,往往直接对应一段程序代码。 A.某个构件 B.成熟的设计 C.一个用例 D.特定问题 6.类和对象都有属性,它们的差别是:类描述了属性的类型,而对象的属性必须有(C)。 A.正负号 B.动作 C.具体值 D.私有成员 7.顺序图的模型元素有(A)、消息、生存线、激活期等,这些模型元素表示某个用例中的若干个对象和对象之间所传递的消息,来对系统的行为建模。 A.对象 B.箭头 C.活动 D.状态 8.状态图可以表现(B)在生存期的行为、所经历的状态序列、引起状态转移的事件以及因状态转移而引起的动作。 A.一组对象 B.一个对象 C.多个执行者 D.几个子系统 9.使得在多个类中能够定义同一个操作或属性名,并在每一个类中有不同的实现的一种方法是(B)。 A.继承

UML概述

我与影子孤独终老i 提交于 2020-01-29 08:42:13
UML概述 什么是UML? 1.UML(united modeling language): 统一建模语言,是用来设计软件蓝图的可视化建模语言,是一种可视化的面向对象建模语言 2.它支持面向对象系统的分析、设计、实现和交付等各个环节,可以用于系统的理解、设计、浏览维护和信息控制 3.UML描述了一个系统的静态结构和动态行为。UML 用图形方式表现典型的面向对象系统的整个结构 4.UML不是一个程序设计语言 UML不是一个形式化语言 UML工具 主流UML工具: rational rose、together、Microsoft visio Rational rose: 是一种工具,它可以在rose建模中提供建立、视图、修改和操作组件的能力 Rose: 支持unified、booch、OMT标记法 UML构成 (1)UML的基本构造块 • UML 中的事务: 构成模型图的一些基本图示符号,表示一些面向对象的基本概念 • UML中的关系: 表示基本图示符号之间的关系 • UML 中的图: 特定的视角对系统所做的抽象描述 PS:事物是对模型中最具代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。 (2)UML的规则 • 命名规则 • 范围 • 可见性 • 完整性 (3)UML的公共机制 • 规格说明 • 修饰 • 通用划分 • 扩展机制 下面逐个介绍上面所述的结构 事物的类型

UML之一、为什么需要UML?

我是研究僧i 提交于 2020-01-29 00:30:21
面向对象和面向过程是两种不同描述世界的方法。 面向过程:世界视为过程,世界由一个个相互关联的小程序构建来的, 是精密的 。      但是构成一个系统的因素太多,要把所有可能的因素都考虑到,把所有因素的因果分析都分析清楚,再把这个过程模拟出来实在是太困难了。 面向对象:世界视为对象,世界由一个个相互独立、相互之间没有因果关系的对象构成, 是独立的 。 但是难点在于为什么这样抽象对象?怎样组合对象?对象的组合表达了怎样的含义?( 面向对象存在的问题why how what ) 例如:把大象装进冰箱的两种方式 面向过程-每个过程有一个阶段性的目标,依次完成这些过程,就能把大象装进冰箱:   冰箱开门(打开门的冰箱)   冰箱装进(冰箱, 大象)   冰箱关门(冰箱) 面向对象-依次做这些动作(动作的执行者就是对象),就能把大象装进冰箱   冰箱.开门(),   冰箱.装进(大象.进冰箱),   冰箱.关门() 面向对象是把世界看作是由许多对象组成的,UML是一种是面向对象软件的标准化建模语言: 把现实世界映射到对象世界的方法; 从对象世描述现实世界的方法; 验证对象世界行为是否正确反映了现实世界的方法; UML优点:可视化、统一标准、人和机器皆可理解; UML建模要素:参与者(actor)、用例(use case)、业务对象模型 、业务场景(现实:人驱动,事体现过程,物记录结果

什么是面向对象

人盡茶涼 提交于 2020-01-28 16:21:03
一、面向对象与面向过程的区别 面向过程 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象 是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。 举个例子: 如果要实现一个五子棋游戏时 面向过程 的设计思路就是首先分析下棋的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出结果。最后把上面每个步骤按照顺序来编程实现。 面向对象 的设计则是从另外的思路来解决问题。整个五子棋可以分为 1、黑白双方,这两方的行为是一模一样的,都是放置棋子 2、棋盘系统,负责绘制画面 3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。 可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。 由此可见

python--面向对象的简单了解

谁说胖子不能爱 提交于 2020-01-25 06:19:44
面向过程 面向对象(oop:object oriented programming) 面向过程:—侧重于怎么做? 1.把完成某一个需求的 所有步骤 从头到尾 逐步实现 2.根据开发要求,将某些功能独立的代码封装成一个又一个函数 3.最后完成的代码,就是顺序的调用不同的函数 特点: 1.注重步骤和过程,不注重职责分工 2.如果需求复杂,代码变得非常复杂 3.开发复杂的项目的时候,没有固定的套路,开发难度很大 面向对象:----侧重于谁来做? 相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法 1.在完成某一个需求前,首先确定职责–要做的事(方法) 2.根据职责确定不同的对象,在对象内部封装不同的方法(多个) 3.最后完成代码,就是顺序的让不同的对象调用不同的方法 特点: 1.注重对象和职责,不同的对象承担不同的职责 2.更加适合对复杂的需求变化,是专门应对复杂项目的开发,提供固定的套路 3.需要在面向过程的基础上,再学习一些面向对象的语法 面向过程—>侧重于怎么做? 面向对象—>测中于谁来做? 面向对象有两个核心的概念 类:是一类具有相同特征或行为的事物的一个统称 对象:由类创建出来的一个具体的存在 类和对象的关系:先有类再有对象 类是模板 对象是根据这个模板创建出来的 类只需要有一个 对象可以有多个 类:属性(这一类事务的共同信息) 和 方法(你能完成的动作) 1

C#面向对象详解

我的未来我决定 提交于 2020-01-21 04:34:29
*抽象理解面向对象: 一.面向过程-洗衣服(站在一个执行者角度去做事情)—1.找个盆 2.收集要洗的衣服 3.放水放洗衣液 4.洗一洗 5.晒一晒 。 二.面向对象-洗衣服(站在一个指挥者角度去做事情)—1.找个对象 2.要他去洗衣服。 * 简介: 通过封装 继承 多态 把程序的耦合度降低,用设计模式使程序更加灵活,容易修改,并且易于重复使用。缩短开发周期,降低了开发工作量,缺点是执行效率会降低。 1.封装,是把客观事物封装成抽象的类,类可以把数据和行为只让可信的类或对象操作,对不可信的进行隐藏;封装是面向对象的特征之一,是类和对象概念的主要特性; 简单的说,一个类就是一个封装了数据以及操作这些数据的行为的逻辑实体,某些数据和行为可以是私有的,不能被外界访问,通过这种方式,对象对内部数据和行为提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分; 2.继承,是可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展的能力; 通过继承创建的类称为子类或派生类,被继承的类称为父类或基类;继承的过程,就是从一般到特殊的过程;要实现继承,可以通过继承和组合(Composition)来实现;继承概念的实现方式有两种:实现继承是指直接使用基类的方法而无需额外编码的能力;接口继承是指仅使用方法的名称,但是子类必须提供实现的能力; 3.多态

从此重构

此生再无相见时 提交于 2020-01-19 03:27:01
设计是如此重要,那么开发者的基本设计能力与素质又从何下手来培养呢? 最好的办法,就是请个老师。从框架中了解,从系统中实现,从书文中汲取。然而,设计能力的提升绝非一朝一夕之功, 软件 开发中的设计大师,往往必须具备多年的修行方可称之为“架构师”。 一个在简历中轻描淡写的“ 10 年软件设计经验”,并非是所有软件人都能修炼成的真功夫,这里没有任何虚情假意可言。在一个项目的实现过程中,逐渐了解什么是对象、什么是对抽象 编程 、设计模式是如何应用在实际的系统架构、设计原则到底是什么秘密武器,而重要的是完成一个软件项目,对于更多人来说是认识一种软件开发的科学流程。这种体验,才是难能可贵的经验。在设计的广义概念里,几个必需的概念是应该首先被了解和认知的,以排名不分先后的原则罗列,它们大概包括: · 面向对象 ( Object-Oriented ),关于面向对象没有必要重复嚼舌了,本书的第 1 章“ OO 大智慧”中对 .NET 的面向对象进行了有别于其他专著的介绍,除了以实例突出面向对象之思想大成,还以浓墨铺陈了 .NET 是如何在底层 技术 上来实现继承、多态和接口映射等机制,从而使读者可以更加有效和深刻地把握面向对象之精髓。 · 面向服务 ( Service Oriented ), SO 至少是个时髦的话题, WCF 伴着 .NET 3.5 的发布,一个一统江湖的面向服务的基础架构横空出世

面向对象分析与设计读书笔记

99封情书 提交于 2020-01-18 23:48:06
引用声明:电子工业出版社《面向对象分析与设计》第三版:修订版 Grady Booch等著的书籍内容,仅供学习使用。 复杂性 一. 为什么软件在本质上是复杂的? 软件固有的复杂性有四个原因: 问题域的复杂性 比如公共交通购票系统需求(经常出问题的12306,不仅要处理正常用户购票,还要抗住第三方软件的频繁抢票)。 比如航天电子系统需求,从功能上就很难理解,还要加上所有的非功能需求,如可用性、性能、成本、健壮性和可靠性,不能遇到突发问题直接宕机吧,那就不是航天了,而是拿人命开玩笑。 有的客户只是对想要的软件系统有一个模糊的想法,和开发者之间存在沟通上的分歧。 软件系统在开发过程中经常发生需求改变;产品经理和开发程序员之间大打出手也不是一次两次了,“小明,其他同类型的产品做得挺好,今晚加班搞下,明早上线。”,“这种坑爹需求谁爱做谁做,老子不伺候了”。 管理开发过程中的困难性 人员协调困难,怎么合理安排人手,投入多少骨干和萌新,不同的开发者能承受多少工作量? 风险管控困难,怎么控制需求管道,不超出团队承受能力范围。怎么控制交付时间点,保证合理的开发和测试时间? 质量维护困难,怎么维持设计的一致性和完整性?怎样沉淀团队经验和解决方案?假如前期开发管理不到位,测试阶段问题爆炸怎么处理?线上问题多影响开发进度怎么办?如何复盘和回溯问题不再重蹈覆辙? 软件中随处可能出现的灵活性

从此重构

最后都变了- 提交于 2020-01-16 07:23:08
从此重构 设计是如此重要,那么开发者的基本设计能力与素质又从何下手来培养呢? 最好的办法,就是请个老师。从框架中了解,从系统中实现,从书文中汲取。然而,设计能力的提升绝非一朝一夕之功,软件开发中的设计大师,往往必须具备多年的修行方可称之为“架构师”。 一个在简历中轻描淡写的“ 10 年软件设计经验”,并非是所有软件人都能修炼成的真功夫,这里没有任何虚情假意可言。在一个项目的实现过程中,逐渐了解什么是对象、什么是对抽象编程、设计模式是如何应用在实际的系统架构、设计原则到底是什么秘密武器,而重要的是完成一个软件项目,对于更多人来说是认识一种软件开发的科学流程。这种体验,才是难能可贵的经验。在设计的广义概念里,几个必需的概念是应该首先被了解和认知的,以排名不分先后的原则罗列,它们大概包括: · 面向对象 ( Object-Oriented ),关于面向对象没有必要重复嚼舌了,本书的第 1 章“ OO 大智慧”中对 .NET 的面向对象进行了有别于其他专著的介绍,除了以实例突出面向对象之思想大成,还以浓墨铺陈了 .NET 是如何在底层技术上来实现继承、多态和接口映射等机制,从而使读者可以更加有效和深刻地把握面向对象之精髓。 · 面向服务 ( Service Oriented ), SO 至少是个时髦的话题, WCF 伴着 .NET 3.5 的发布,一个一统江湖的面向服务的基础架构横空出世

面向对象开发方法概述

眉间皱痕 提交于 2020-01-14 10:10:01
一个优良的软件系统应该具备:可重用性,可扩展性,可维护性。 软件中的子系统应该具备:结构稳定性,可扩展性,内聚性,可组合性,松耦合。 两种开发方法:结构化开发和面向对象开发 1.1结构化软件开发简介(SASD) 它首先用结构化分析对软件进行需求分析,然后用结构化设计方法进行总体设计,最后进行结构化变成。这种开发方法使得开发步骤明确,SA、SD和SP相辅相成,一气呵成。 结构化设计是属于自顶向下的设计,无法灵活的适应用户不变变化的需求。 例:根据客户输入信息来打印图形,若客户需求改变,需要增加一个画某一种图形的功能,那么需要增加一个常量、增加一个方法、增加一个case分支。 可见,结构化开发制约了软件的可维护性和可扩展性,模块间的松耦合性不高。 1.2面向对象的软件开发简介 面向对象的开发方法把软件系统看成各种对象的集合,对象就是最小的子系统,一组相关的对象能够组合成更复杂的子系统。具有以下几个优点: ①把软件系统看成是各种对象的集合 ②软件需求的变动往往是功能的变动,二功能的执行者——对象一般不会有大的变化。这使得按照对象设计出来的系统结构比较稳定 ③对象包括属性(数据)和行为(方法),对象把数据及方法的具体实现方式一起封装起来,这使得方法和与之相关的数据不再分离,提高了每个子系统的相对独立性,从而提高了软件的可维护性。 ④支持封装、抽象、继承和多态,提高了软件的可重用性