软件设计

小菜学设计模式——单一职责原则

别说谁变了你拦得住时间么 提交于 2020-12-04 07:37:16
背景 本文标题为什么叫小菜学习设计模式,原因是本文内容主要是学习《大话设计模式》时的笔记摘要部分,当然,并不是记录书中小菜的学习过程,这个完全没有意义,而是指本人学习 设计模式的 成长之旅。 真诚的希望自己能够从一名小菜成长为一名大鸟! 编写的程序应该满足: 1)可维护 2)可扩展 3)可复用 4)够灵活 废话少说,言归正传,设计模式原则之:单一职责 书面理解 单一职责:就一个类而言,应该仅有一个引起它变化的原因 如果一个类承担职责过多,接等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化放生时,设计会遭受到意想不到的破坏。 软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。判断是否应该分离的标准是:如果你能够想到多于一个的动机去改变一个类,那么这个类具有多于一个的职责。 个人的理解 假设一件衣服是上班的正装,那么请不要在聚会的时候使用;如果是聚会时使用的休闲礼服,请不要穿着去上班。正装的唯一职责就是上班时穿,礼服的唯一职责就是聚会时穿。如果二者混在一起,假设你穿着正装去参加聚会,那么聚会上很可能需要打扮、修饰一下自己的衣服,那么会尽量把正装的风格往休闲的角度去整改,整改成功之后,可以参加聚会了,但是这件衣服似乎会已经影响到了下次上班穿。 单一职责:不是一个类只做一件事情,而是类(属性以及操作属性的方法

第一阶段作业总结

时光总嘲笑我的痴心妄想 提交于 2020-04-05 16:36:37
------------恢复内容开始------------ 前言 第一阶段的作业总共有三次PTA上的作业,第一次作业有5题,第二次以及第三次作业都为4题并且题目基本是相同的,但是要求确实不同的编程思维,所以我个人感觉第一阶段的作业重点在让我们由原本的面向过程的编程方式慢慢过渡到目前我们所重点学习的面向对象编程方式。经过本次作业可以让我们从了解面向对象思维到运用面向对象思维方式到我们的编程过程之中。我个人感觉Java毕竟是C语言基础上发展的语言,所以可以说比C语言更有优势,C语言中需要对函数和变量进行定义和声明,而JAVA只用定义,不用声明; Java语言有new关键字,用于创建引用对象,C语言没有此类关键字; C语言不是面向对象的,而是面向过程,而JAVA是面向对象的语言;C语言可以直接操作内存,而JAVA不能;C语言有指针,而JAVA没有等等。 1.作业过程总结 ①总结三次作业之间的知识迭代关系; 第一次作业算是简单的循环运用,第二、三次则较复杂同时第三次要求运用面向对象的思维来编写。 ②如何通过作业逐步从面向过程过渡到面向对象; 在第一次作业以及第二次作业我编程时感觉回到了大一学习C语言时的前几次作业,题目类型差不多此外就是编程时的思维方式改变还不太大,但第三次作业编写时明显感觉与前两次不同,并且由于第二次作业与第三次作业的题目相同

面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别

混江龙づ霸主 提交于 2020-03-22 12:44:04
单从字面上来讲,面向过程侧重的是“ 过程 ”,面向对象侧重的是“ 对象 ”。就像是“ 这件事该怎么做 ”与“ 这件事让谁来做 ”的区别,后者的“ 谁 ”就是对象。 面向过程(结构化)分析实质上是一种创建模型的活动,就是 面向数据 自顶向下逐步求精进行需求分析(教材P59)。其最终目标是 得出对程序处理过程的描述。 面向对象分析的关键是识别问题域内的 类和对象 ,并分析他们相互间的关系,最终 建立起问题域的正确模型 。 结构化分析方法一般利用图形表达用户需求,使用的手段主要有数据流图、数据字典、结构化语言、判定表以及判定树等。 面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来描述客观世界和设计、构建相应的软件系统。 我以为 ,面向对象的分析方法从类与对象的关系上出发,有更强的稳定性,这一重要的优点将使得当代软件工程的发展完成从传统的结构化范型到面向对象范型的转变。 来源: https://www.cnblogs.com/hello-kitty-/p/5277161.html

面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?请根据自己的理解简明扼要的回答。

允我心安 提交于 2020-03-22 11:36:25
正如百度所说,“面向过程”是一种以过程为中心的编程思想。“面向过程”也可称之为“结构化”编程思想,他们是最早发展,并且在编程中起着重要作用的编程思想。 当我们遇到用问题时,就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 对于我来说,学习编程首先接触的便是面向过程的编程思想,如大学首先老师就教我们用c语言编程,对于面向过程的变成思想,自己也有许多的感触, 1, 面向过程的编程思想比较容易实现,解决一个问题时只需要一步一步的分析,一个方向走下去就基本可以实现,但是这也仅限于一个比较小的程序,当遇到一个大问题时,复杂的逻辑关系,使得面向过程变得复杂难写。 2, 面向过程的编程思想最重要的是模块化的思想方法,他的优势在于他的流程非常的清楚,非常便于函数与模块的组织。 而对于面向对象的编程思想则比面向过程的编程思想发展的要晚一些,起初,“面向对象”是专指在程序设计中采用封装、继承、多态等设计方法,现在面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析,面向对象的设计,以及我们经常说的面向对象的编程实现,面向对象的编程思想在我的理解中就是把一个比较大的软件项目当成一个对象,然后这个对象的各个部位用一个类专门实现,每个类都是留有接口的,最后把各个部位拼装起来成为最终的产品,这种编程方法使得一个项目更加的具体清晰

C# 面向对象

筅森魡賤 提交于 2020-03-21 18:23:42
面向对象: 面向对象方法是软件工程、程序设计的主要方向,也是最有效、最实用和最流行的软件开发方法之一。 C#是完全面想对象(OOP)的程序设计语言,具有面向对象程序设计方法的所有特性。 面向对象方法的基本思想就是从所要解决的问题本身出发,尽可能运用自然的思维方式(分析、抽象、分类、继承),以现实世界中的事物为中心思考问题、认识问题,并根据这些事务的本质特征,把他们抽象表示为系统中的对象,作为系统的基本构成单位。 面向对象的最基本的特征是抽象性、封装性、继承性、多态性 。 对象(object): 客观世界中任何事物都可以看成一个对象,汽车、房屋、狗都可以看成一个对象。 任何对象都应当具有属性(attribute)和行为(behavior)两个要素。 对象 = 属性 + 行为(方法、操作) 类(class): 类表示具有相同属性和行为的一组对象的集合。 C#程序的源代码必须放到类中,一个程序至少包括一个类。 类是抽象的,不占用内存,而对象是具体的,占用存储空间 抽象(abstraction): 抽象是处理事务复杂性的方法,只关注与当前目标有关的方面,而忽略与当前目标无关的方面。 int是对所有整数的抽象,double是对所有双精度浮点型数的抽象。 封装(encapsulation): 将有关的数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相对独立,互不干扰。

软件设计模式学习(十一)桥接模式

笑着哭i 提交于 2020-03-17 20:45:11
桥接模式 桥接模式用一种很巧妙的方式处理继承存在的问题,用抽象关联取代了传统的多层继承,将类之间的静态继承关系转换为动态的对象组合关系,使得系统更加灵活,并易于扩展,同时有效地控制了系统中类的个数。 模式动机 设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要四个形状类,如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有两种设计方案:第一种是为每一个行政都提供一套各种颜色的版本,这种方案使用的是多级继承结构,如果有四种形状,十二种颜色,则我们需要四十八个类。如果要增加新形状则同时也要具备所有的颜色,增加新的颜色也要为所有的形状添加对应颜色的子类;第二种提供四个形状类、十二种颜色类,根据实际对形状和颜色进行组合,此时系统中的类是十六个。如需增加新的形状或颜色,只需再增加一个新的形状类或颜色类即可。 很明显,对于有两个变化维度(即两个变化的原因)的系统,采用方案二可以使系统中类的个数更少,且系统扩展更为方便。 模式定义 将抽象部分与它的实现部分分离,使它们都可以独立地变化 模式结构 桥接模式包含如下几个角色: Abstraction(抽象类) 用于定义抽象类的接口,它一般是抽象类而不是接口,其中定义一个Implementor类型对象使其与implementor之间具有关联关系,它可以包含抽象的业务方法,还可以包含具体的业务方法。 RefineAbstraction

软件工程第一次作业

一笑奈何 提交于 2020-03-15 03:38:55
一.软件工程预习总结 1.1、专业术语     软件架构(Software Architecture)       软件设计与实现(Software Design,Implementation and Debug)       源代码管理(Source Code Control)       质量保障(Quality Assurance)       软件测试(Test)        需求分析(Requirement Analysis)        配置管理(Software Configuration Management)        软件维护(Software Maintenance)        用户体验(User Experience)        国际化&本地化(Globalization & Localization)        软件的生命周期(Software Life Cycle ,SLC)        软件项目的管理(Project Management        服务运营(Service Operation)    1.2、软件工程理论及知识点         1、软件=程序+软件工程          2、程序=数据结构+算法          3、软件企业=软件+商业模式         4、软件的特殊性: 复杂性(Complexity

面向对象分析与设计笔记(一)

核能气质少年 提交于 2020-03-12 22:25:26
分析与设计的关系: 做正确的事情(分析),正确地做事情(设计)。 面向对象分析: 发现并描述问题领域里的对象或者概念(概念类)。 面向对象设计: 定义软件对象、 以及它们之间如何协作完成功能的(设计类) 面向对象分析与设计基本过程:定义用例→定义领域模型→定义交互图→定义设计类图 领域模型: 问题领域的概念类以及真实对象的可视化表示 ; 领域模型也被称为 概念模型、 领域对象模型、 分析对象模型 来源: https://www.cnblogs.com/juluwangshier/p/12482944.html

java基础——面向对象

半城伤御伤魂 提交于 2020-03-07 05:30:51
面向对象【java语言的核心机制,最重要的内容,java语言的特点】 面向对象和面向过程的区别 面向过程 :主要关注点是:实现的具体过程,因果关系【集成显卡的开发思路】 优点 :对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低 缺点 :采用面向过程的方式开发很难解决非常复杂的业务逻辑,另外面向过程的方式导致软件元素之间 的“耦合性”非常高,只要其中一环出问题,整个系统受到影响,导致最终的软件“扩展力”差, 另外,由于没有独立体的概念,所以无法达到组件复用 面向对象 :主要关注点是:主要关注对象【独立体】能完成哪些功能。【独立显卡的开发思路】 优点 :耦合度低,扩展力强,更容易解决现实世界当中更复杂的业务逻辑,组件复用性强 缺点 :前期投入成本较高,需要进行独立体的抽取,大量的系统分析与设计 面向对象思想特点 【1】是一种更符合我们思想习惯的思想 【2】可以将复杂的事情简单化 【3】将我们从执行者变成了指挥者角色发生了转换 面向对象的三大特征 - 封装 - 继承 - 多态 采用面向对象方式开发一个软件,生命周期当中:【整个生命周期中贯穿使用OO面向对象方式】 - 面向对象的分析:OOA - 面向对象的设计:OOD - 面向对象的编程:OOP 类和对象的概念 什么是类 【1】类在现实世界当中是不存在的,是一个模板,是一个概念,是人类大脑思考抽象的结果 【2

UML建模系列文章总结

冷暖自知 提交于 2020-03-06 06:47:19
一、为什么要学习 UML 二、 UML 的历史 三、 UML 的特点 四、 UML 中的视图 五、 UML 建模工具 六、 UML 的应用领域 七、 UML 的构成 1 、 需求阶段如何书写 Use Case 2 、 设计阶段如何画用例图( Use-Case Diagram ) 3 、 类与类之间的关系图 (Class Diagram,UML 图 ) 4 、 UML 建模之活动图介绍( Activity Diagram ) 5 、 UML 建模之状态图( Statechart Diagram ) 6 、 UML 建模之时序图( Sequence Diagram ) 7 、 UML 建模之业务处理模型( Business Process Model,BPM ) 8 、 UML 建模之数据建模( Data Model Diagram ) 八、总结 一、为什么要学习 UML UML 是 Unified Modeling Language (统一建模语言)的简称。 UML 是对软件密集型系统中的制品进行可视化、详述、构造和文档化的语言。制品 {Artifact} 是指软件开发过程中产生的各种各样的产物,如模型、源代码、测试用例等。 Ø UML 建模可以达到以下目的: Ø 使用模型可以更好地理解问题 Ø 使用模型可以加强人员之间的沟通 Ø 使用模型可以更早地发现错误或疏漏的地方 Ø