精华内容
下载资源
问答
  • 学员可以通过视频进行软考软件设计师相应的基础知识培训,掌握软件开发与设计的基础知识包括:数据结构、软件工程、操作系统、数据库原理、软件设计、UML分析与设计等内容,为考试和自身能力提高打下坚实基础。...
  • 软件设计是怎样炼成的?

    万人学习 2015-06-09 22:44:27
    软件设计视频培训教程,该课程告诉大家,软件设计并不是概要设计与详细设计这么简单,更加不是纸上谈兵的事情。课程全程活用UML(统一建模语言或标准建模语言),为你分享架构设计、数据库设计、用户体验设计和详细...
  • 在掌握软件设计师基础知识的基础上,通过对历年上午真题逐题的分析讲解,明确软件设计师上午题的重要考点、加深对软件工程、数据库、计算机网络、设计模式等知识的理解,为考试和自身能力提高做进一步努力。
  • 软考软件设计师下午案例分析视频培训教程:掌握软件设计师案例分析答题技巧和解题思路,通过对历年案例分析真题的讲解,掌握相应的知识点和答题技巧,为顺利通过软考和自身能力提高打下坚实基础。
  • 试题内容由小幸软考社整理提供,需要文档或者软考备考资料的请联系群主。 软考系列备考资料直通车: ...软考中级软件设计师备考详细资料 软考中级软件评测师备考详细资料 软考中级数据库系统工程师备考详细资料 ...

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    试题内容由小幸软考社整理提供,需要文档或者软考备考资料的请联系群主。
    在这里插入图片描述

    软考系列备考资料直通车:

    软考中级网络工程师备考详细资料
    软考中级软件设计师备考详细资料
    软考中级软件评测师备考详细资料
    软考中级数据库系统工程师备考详细资料

    展开全文
  • 软件设计之总体设计

    万次阅读 2018-03-25 10:22:52
    软件的需求分析阶段知道系统要“做什么”,而软件设计阶段我们明白的是“怎么做”。软件的设计分为:总体设计&&详细设计设计基本原理:总体设计的任务和过程总体设计分为:面向数据,面向功能,面向...

    软件的需求分析阶段知道系统要“做什么”,而软件设计阶段我们明白的是“怎么做”。
    软件的设计分为:总体设计&&详细设计

    设计基本原理:



    总体设计的任务和过程

    总体设计分为:面向数据,面向功能,面向对象的分析


    设计原则:独立性,规模,深,宽,入,出。作用域。接口。单入单出。预测(黑盒子)

    总体设计图形工具

    1.层次图:描述层次结构。
    2.HIPO图:在层次图的基础上,把图中除了顶层的方框外都加上编号****基本形式:输入,处理,输出。
    3.结构图(SC):表达程序结构图形的表示方法,反映程序模块间的层次关系和联系。
    成分:模块,模块间调用关系,通信,辅助控制符号。
    结构图的四中类型:传入,传出,变换,协调
    结构图VS数据流图
    数据流图反映的是程序中数据流的情况
    结构图反映的是程序中控制流的情况
    结构图VS程序流程图
    Battle1:
    结构图着重反映模块间的隶属关系,即调用关系和层次关系。
    程序流程图表达程序执行的顺序及执行顺序依赖的条件。
    Battle2:
    结构图着眼于软件系统的总体结构,不涉及内部细节,只考虑模块作用,以及上下级模块关系

    程序流程图表达执行程序的具体算法


    面向数据流的设计方法

    目标:给出设计软件结构的一个系统化途径。
    作用:信息流映射成软件结构。
    映射的方法由信息流的类型决定
        信息流的类型分为两类
     1.变换流:信息-->系统-->外换内-->加工-->内换外-->离开。
        变换型系统结构图:输入,变换中心,输出。
     2.事务流:信息-->输入-->处理-->输入类型选动作-->执行
        根据信息流类型,进行不同的分析。
           变换分析:把具有变换流特点的数据流图按预先确定的模式映射成软件结构
           事务分析:设计步骤跟变换分析类似,不同之处是数据流图到软件结构的映射方式不同。事务流映射的软件结构包括一个接收分支和一个发送分支。


    展开全文
  • 软件设计---概要设计和详细设计

    千次阅读 2019-10-30 22:57:28
    软件设计是需求工程的后续阶段,他根据项目所描述的需求(功能需求、性能需求、领域需求、数据需求等)的定义,进行数据设计、体系结构设计、界面设计和过程设计。 软件设计主要解决“如何做”的问题,设计的方案...

    软件设计是需求工程的后续阶段,他根据项目所描述的需求(功能需求、性能需求、领域需求、数据需求等)的定义,进行数据设计、体系结构设计、界面设计和过程设计。

    软件设计主要解决“如何做”的问题,设计的方案最终会影响软件实现的成败。

    一般把软件设计分为概要设计和详细设计两个阶段,包括体系结构设计、界面设计、数据设计和过程设计。

    1.概要设计:

    也称总体设计,主要任务是基于数据流图和数据字典,确定系统的整体软件结构,划分软件的各个子模块,确定他们之间的关系。概要设计是要完成体系结构设计、数据设计和界面设计。

    体系结构设计:

    确定各子系统模块间的数据传递与调用关系;

    界面设计:

    包括与系统交互的人机界面设计,以及模块间、系统与外部系统的接口关系;

    数据设计:

    包括数据库、数据文件和全局数据结构的定义。

    2.详细设计

    详细设计的任务就是在概要设计的基础上,具体实现各部分的细节,直至系统的所有的内容都有足够详细的过程描述,使得编码的任务就是将详细设计的内容翻译成代码就可以了。详细设计就是完成过程设计。

    3.软件设计的原则

    a.分而治之

    分而治之用于解决大型、复杂度高的问题时所采用的策略。把大问题划分成若干个小问题,把对一个大问题的求解转换为对若干个小问题的解答,这样极大地降低了问题的复杂度;

    b.重用设计模式

    重用是指同一事物不做修改或者稍作改动就能多次使用的机制,重用的内容是软件的设计模式;

    c.可跟踪性

    软甲设计的任务之一就是确定软件各部分间的关系。设计系统结构,就是要确定系统各部分、个模块间的相互调用和控制关系,以便在需要修改模块的时,能掌握与修改模块有关的部分,并正确追溯问题的根源;

    d.灵活性

    设计的灵活性是指设计具有易修改性。会发生修改是因为:一是用户需求发生改变,二是设计存在缺陷,三是设计需要进化,四是设计利用重用。软件设计的灵活性主要是通过系统描述问题的抽象来实现。

    e.一致性

    一致性在软件设计方法和过程总都有体现。界面试图的一致性保证了用户体验和对系统的忠诚度。用统一的规则和约束规范模块接口定义,确保编码阶段对接口和数据结构的统一操作,减少数据理解的歧义。

    aaa

    展开全文
  • 软件设计师历年真题 下载

    热门讨论 2017-04-12 15:27:15
    软件设计师历年真题
  • 软件设计模式详解

    万次阅读 多人点赞 2018-11-07 21:40:21
    软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。 ...

    软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性

    简介

    设计模式(英语 design pattern)是对面向对象设计中反复出现的问题的解决方案。这个术语是在1990年代由Erich Gamma等人从建筑设计领域引入到计算机科学中来的。这个术语的含义还存有争议。算法不是设计模式,因为算法致力于解决问题而非设计问题。设计模式通常描述了一组相互紧密作用的类与对象。设计模式提供一种讨论软件设计的公共语言,使得熟练设计者的设计经验可以被初学者和其他设计者掌握。设计模式还为软件重构提供了目标。

    随着软件开发社群对设计模式的兴趣日益增长,已经出版了一些相关的专著,定期召开相应的研讨会,而且Ward Cunningham为此发明了WikiWiki用来交流设计模式的经验。

    历史

    肯特·贝克和沃德·坎宁安在1987年利用克里斯托佛·亚历山大在建筑设计领域里的思想开发了设计模式并把此思想应用在Smalltalk中的图形用户接口的生成中。一年后Erich Gamma在他的苏黎世大学博士毕业论文中开始尝试把这种思想改写为适用于软件开发。于此同时James Coplien 在1989年至1991 年也在利用相同的思想致力于C++的开发,而后于1991年发表了他的著作Advanced C++ Idioms。就在这一年Erich Gamma 得到了博士学位,然后去了美国,在那与Richard Helm, Ralph Johnson ,John Vlissides合作出版了Design Patterns - Elements of Reusable Object-Oriented Software 一书,在此书中共收录了23个设计模式。这四位作者在软件开发领域里也以他们的匿名著称Gang of Four(四人帮,简称GoF),并且是他们在此书中的协作导致了软件设计模式的突破。有时这个匿名GoF也会用于指代前面提到的那本书。

    模式格式

    尽管名称和顺序在不同的资料中各有不同,描述模式的格式大致分为以下四个主要部分:

    模式名称(Pattern Name):每一个模式都有自己的名字,模式的名字使得我们可以讨论我们的设计。

    问题(Problem):在面向对象的系统设计过程中反复出现的特定场合,它导致我们采用某个模式。

    解决方案(Solution):上述问题的解决方案,其内容给出了设计的各个组成部分,它们之间的关系、职责划分和协作方式

    效果(Consequence):采用该模式对软件系统其他部分的影响,比如对系统的扩充性、可移植性的影响。影响也包括负面的影响。

    别名(Also Known As):一个模式可以有超过一个以上的名称。这些名称应该要在这一节注明。

    动机(Motivation):该模式应该利用在哪种情况下是本节提供的方案(包括问题与来龙去脉)的责任。

    应用(Applicability)

    结构(Structure):这部分常用类图与互动图阐述此模式。

    参与者(Participants):这部分提供一份本模式用到的类与物件清单,与它们在设计下扮演的角色。

    合作(Collaboration):描述在此模式下,类与物件间的互动。

    结果(Consequences):这部分应描述使用本模式後的结果、副作用、与交换(trade-off)

    实现(Implementaion):这部分应描述实现该模式、该模式的部分方案、实现该模式的可能技术、或者建议实现模式的方法。

    例程(Sample Code):示范程式。

    已知应用(Known Uses):业界已知的实做范例。

    相关模式(Related Patterns):这部分包括其他相关模式,以及与其他类似模式的不同。

    模式列表

           设计模式分为三大类:创建型、结构型、行为型。创建型模式处理的是对象的创建过程(通过各种方式创建对象,使对象创建和管理变得简单),结构型模式处理的是对象/类的组合,行为型模式处理类和对象间的交互方式和任务分布(只有类可以创建对象,接口只能被实现)

    创建型

    抽象工厂模式(Abstract Factory)

           抽象工厂模式是提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。区别于工厂方法模式的地方,工厂方法模式是创建一个工厂,可以实现多种对象;而抽象工厂模式是提供一个抽象工厂接口,里面定义多种工厂,每个工厂可以生产多种对象前者的重点在于"怎么生产",后者的重点在于"生产哪些";前者是一个抽象产品类,可以派生出多个具体产品类,后者是多个抽象产品类,每个抽象产品类可以派生出多个具体产品类;前者的每个具体工厂类只能创建一个具体产品类的实例,后者的每个具体工厂类可以创建多个具体产品类的实例。

    工厂方法模式(Factory Method)

           工厂方法模式的创建是因为简单工厂模式有一个问题,在简单工厂模式中类的创建依赖工厂类,如果想要拓展程序,必须对工厂类进行修改,这违背了开闭原则,所以就出现了工厂方法模式,只需要创建一个工厂接口和多个工厂实现类,子类可以自己决定实例化哪一个工厂类,client类针对抽象接口进行编程,如果需要增加新的功能,继承工厂接口,直接增加新的工厂类就可以了,创建过程延迟到子类中进行,不需要修改之前的代码,满足了开闭原则,达到灵活地生产多种对象。。

    原型模式 (Prototype)

           原型模式是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。其实就是将对象复制了一份并返还给调用者,对象需继承Cloneable并重写clone()方法。原型模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。分为浅复制和深复制,前者是将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的;后者是将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。

    单例模式(Singleton)

           单例模式能保证一个类仅有一个实例,并提供一个访问它的全局访问点,同时在类内部创造单一对象,通过设置权限,使类外部无法再创造对象。单例对象能保证在一个JVM中,该对象只有一个实例存在,这样做的好处就在于如果某些类创建比较频繁,特别是对于一些大型的对象,这是一笔很大的系统开销。在创建的时候,省去了new操作符,降低了系统内存的使用频率,减轻了系统的压力。同时单例模式保证在一个jvm中仅存在一个实例的好处就在于好比一个军队当中只会存在一个最高级别的军官来指挥整个军队,这样才能保证独立控制整个过程,否则如果出现多个,肯定会杂乱无序。

    建造者模式(Builder)

           建造者模式是将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示,就好比是每个饭店或者每家都会做西红柿炒鸡蛋,最后虽然都是西红柿炒鸡蛋的外观,但是由于当中的做饭过程存在差别,所以味道会不同。在程序当中就是将一些不会变的基本组件,通过builder来进行组合,构建复杂对象,实现分离。这样做的好处就在于客户端不必知道产品内部组成的细节;同时具体的建造者类之间是相互独立的,对系统的扩展非常有利,满足开闭原则;由于具体的建造者类是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。

    结构型

    适配器模式 (Adapter)

           将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

    桥接模式(Bridge)

           桥接模式是将抽象部分与实现部分分离,使它们都可以独立的变化。桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化(突然联想到了mvc模式)。将抽象化与实现化解耦,使得二者可以独立变化,就好比现在常说的mvc模式,view和model之间通过control来控制,达到高内聚低耦合来解耦的目的。

    组合模式(Composite)

           组合模式是将对象组合成树形结构以表示"部分-整体"的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。创建了一个包含自己对象组的类,并提供修改对象组的方法。在系统的文件和文件夹的问题上就使用了组合模式,文件下不可以有对象,而文件夹下可以有文件对象或者文件夹对象。

    修饰模式 (Decorator)

           装饰器模式是动态地给一个对象添加一些额外的职责,给一个对象增加一些新的功能,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。除了动态的增加,也可以动态的撤销,要做到动态的形式,不可以用继承实现,因为继承是静态的。

    外观模式

           外观模式是为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。在客户端和复杂系统之间再加一层,提供一个容易使用的外观层。外观模式是为了解决类与类之间的依赖关系的,外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,比如搜狐门户网站,就利用了外观模式。

    享元模式

           享元模式是运用共享技术有效地支持大量细粒度的对象。享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,重用现有的同类对象,若未找到匹配的对象,则创建新对象,这样可以减少对象的创建,降低系统内存,提高效率。

    代理模式(Proxy)

            代理模式是为其他对象提供一种代理以控制对这个对象的访问,也就是创建类的代理类,间接访问被代理类的过程中,对其功能加以控制。它和装饰器模式的区别在于,装饰器模式为了增强功能,而代理模式是为了加以控制。代理模式就是多一个代理类出来,替原对象进行一些操作,例如买火车票不一定在火车站买,也可以去代售点。再比如打官司需要请律师,因为律师在法律方面有专长,可以替我们进行操作。

    行为模式

    责任链模式 (Chain of Responsibility)

           责任链模式是避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求。在生活中学生进行请假的过程中,会涉及到,学生请假会一级一级往上批,最终处理,具体由谁批准可能不清楚。在程序当中,现在使用的struts拦截器即用到了责任链模式

    命令模式 (Command)

           命令模式是将一个请求封装成一个对象,从而使发出者可以用不同的请求对客户进行参数化。模式当中存在调用者、接收者、命令三个对象,实现请求和执行分开;调用者选择命令发布,命令指定接收者。举个例子,司令员下令让士兵去干件事情,司令员的作用是发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行。司令士兵命令三者相互解耦,任何一方都不用去依赖其他人。其实struts框架也涉及到命令模式的思想。

    解释器模式(Interpreter)

           解释器模式是给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子,基本也就用在这个范围内,适用面较窄,例如:正则表达式的解释等。

    迭代器模式(Iterator)

           迭代器模式是提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。在Java当中,将聚合类中遍历各个元素的行为分离出来,封装成迭代器,让迭代器来处理遍历的任务;使简化聚合类,同时又不暴露聚合类的内部,在我们经常使用的JDK中各个类也都是这些基本的东西。

    中介者模式(Mediator)

           中介者模式是用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。例如,MVC模式中control就是model和view的中介者。与适配器区别在于,适配器是为了兼容不同的接口,而中介者是为了将显示和操作分离

    备忘录模式 (Memento)

           备忘录模式是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。创建一个备忘录类,用来存储原始类的信息;同时创建备忘录仓库类,用来存储备忘录类,主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,也就是做个备份。在系统当中使用的撤销操作,即是使用了备忘录模式,系统可以保存有限次数的文件状态,用户可以进行上几个状态的恢复,也就是用到了备忘录模式。

    观察者模式(Observer)

           观察者模式是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。也就是当被观察者状态变化时,通知所有观察者,这种依赖方式具有双向性,在QQ邮箱中的邮件订阅和RSS订阅,当我们浏览一些博客时,经常会看到RSS图标,意思就是,当你订阅了该文章,如果后续有更新,会及时通知你。这种现象即是典型的观察者模式。

    状态模式 (State)

           状态模式是允许对象在内部状态发生改变时改变它的行为。对象具有多种状态,且每种状态具有特定的行为。在网站的积分系统中,用户具有不同的积分,也就对应了不同的状态;还有QQ的用户状态有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态。

    策略模式 (Strategy)

           策略模式是定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换,且算法的变化不会影响到使用算法的客户。是为了统一接口下的一系列算法类(也就是多种策略),用一个类将其封装起来,使这些策略可动态切换。策略模式属于行为型模式,是为了使这些策略可以相互切换,是为了选择不同的行为。

    模板方法模式(Template Method)

           模板方法模式是定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。该模式就是在一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,将一些固定步骤、固定逻辑的方法封装成模板方法。调用模板方法即可完成那些特定的步骤。

    访问者模式 (Visitor)

           访问者模式主要是将数据结构与数据操作分离。在被访问的类里面加一个对外提供接待访问者的接口,访问者封装了对被访问者结构的一些杂乱操作,解耦结构与算法,同时具有优秀的扩展性。通俗来讲就是一种分离对象数据结构与行为的方法,通过这种分离,可达到为一个被访问者动态添加新的操作而无需做其它的修改的效果。访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者。访问者模式将有关行为集中到一个访问者对象中,其改变不影响系统数据结构。

    模式原则

    大家都开始注意设计模式。那么,到底我们为什么要用设计模式呢?这么多设计模式为什么要怎么设计呢?说实话,以前我还真没搞清楚。就是看大家一口一个"Design pattern",心就有点发虚。于是就买了本"四人帮"的设计模式,结果看得似懂非懂:看得时候好像是懂了,过一会就忘了。可能是本人比较"愚钝"吧:))最近,有了点感悟。"独乐不如众乐",与大家分享一下,还望指教! 为什么要提倡"Design Pattern"呢?根本原因是为了代码复用,增加可维护性。那么怎么才能实现代码复用呢?OO界有前辈的几个原则:"开-闭"原则(Open Closed Principal)、里氏代换原则、合成复用原则。设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。

    开-闭原则

    此原则是由"Bertrand Meyer"提出的。原文是:"Software entities should be open for extension,but closed for modification"。就是说模块应对扩展开放,而对修改关闭。模块应尽量在不修改原(是"原",指原来的代码)代码的情况下进行扩展。那么怎么扩展呢?我们看工厂模式"factory pattern":假设中关村有一个卖盗版盘和毛片的小子,我们给他设计一"光盘销售管理软件"。我们应该先设计一"光盘"接口。而盗版盘和毛片是其子类。小子通过"DiscFactory"来管理这些光盘。代码为:

    public class DiscFactory{
        public static 光盘 getDisc(String name){
            return(光盘)Class.forName(name).getInstance();
        }
    }

    有人要买盗版盘,怎么实现呢?

    public class 小子{ 
        public static void main(String[] args){ 
            光盘 d=DiscFactory.getDisc("盗版盘"); 
            光盘.卖(); 
        } 
    }

    如果有一天,这小子良心发现了,开始卖正版软件。没关系,我们只要再创建一个"光盘"的子类"正版软件"就可以了。不需要修改原结构和代码。怎么样?对扩展开放,对修改关闭。"开-闭原则" 工厂模式是对具体产品进行扩展,有的项目可能需要更多的扩展性,要对这个"工厂"也进行扩展,那就成了"抽象工厂模式"。

    里氏代换原则

    里氏代换原则是由"Barbara Liskov"提出的。如果调用的是父类的话,那么换成子类也完全可以运行。比如: 光盘 d=new 盗版盘(); d.卖(); 要将"盗版盘"类改为"毛片"类,没问题,完全可以运行。Java编译程序会检查程序是否符合里氏代换原则。还记得java继承的一个原则吗?子类override方法的访问权限不能小于父类对应方法的访问权限。比如"光盘"中的方法"卖"访问权限是"public",那么"盗版盘"和"毛片"中的"卖"方法就不能是protected或private,编译不能通过。为什么要这样呢?你想啊:如果"盗版盘"的"卖"方法是private。那么下面这段代码就不能执行了: 光盘 d=new 盗版盘(); d.卖();可以说:里氏代换原则是继承复用的一个基础。

    合成复用原则

    就是说要少用继承,多用合成关系来实现。我曾经这样写过程序:有几个类要与数据库打交道,就写了一个数据库操作的类,然后别的跟数据库打交道的类都继承这个。结果后来,我修改了数据库操作类的一个方法,各个类都需要改动。"牵一发而动全身"!面向对象是要把波动限制在尽量小的范围

    在Java中,应尽量针对Interface编程,而非实现类。这样,更换子类不会影响调用它方法的代码。要让各个类尽可能少的跟别人联系,"不要与陌生人说话"。这样,城门失火,才不至于殃及池鱼。扩展性和维护性才能提高

    理解了这些原则,再看设计模式,只是在具体问题上怎么实现这些原则而已。张无忌太极拳,忘记了所有招式,打倒了"玄幂二老",所谓"心中无招"。设计模式可谓招数,如果先学通了各种模式,又忘掉了所有模式而随心所欲,可谓OO之最高境界。

    依赖倒转原则

    要针对接口编程,而不是针对实现编程。传递参数,或者在组合聚合关系中,尽量引用层次高的类。主要是在构造对象时可以动态的创建各种具体对象,当然如果一些具体类比较稳定,就不必在弄一个抽象类做它的父类,这样有画舌添足的感觉。

    接口隔离原则

    一种角色,不多不少,不干不该干的事,该干的事都要干

    抽象类

    抽象类抽象类不会有实例,类为子类继承,一般包含这个类的共同属性和方法。注意:好的继承关系中,只有叶节点是具体类,其他节点应该都是抽象类,也就是说具体类是不被继承的。将尽可能多的共同代码放到抽象类中。 

    展开全文
  • 2005-2009软件设计师历年真题

    千次下载 热门讨论 2010-05-18 19:20:10
    软件设计师考试真题 附带2010年的考试大纲 考试科目1:计算机与软件工程知识  1.计算机科学基础  1.1 数制及其转换  • 二进制、十进制和十六进制等常用制数制及其相互转换  1.2 数据的表示  • 数的表示...
  • 需求分析确定了系统的开发目标,下一步工作就是软件设计软件设计可以进一步地 分为两个阶段:总体设计和详细设计。 总体设计又称概要设计,即确定系统的具体实现方案、给出软件的模块结构、编写总体设计说明书。...
  • 【软件工程】软件设计之总体设计

    千次阅读 热门讨论 2014-11-02 18:38:50
    软件的需求分析阶段知道系统要“做什么”,而软件设计阶段我们明白的是“怎么做”。 软件的设计分为:总体设计/\详细设计 设计基本原理: 总体设计的任务和过程 总体设计分为:面向数据,面向功能,面向对象...
  • 1990-2013软件设计师历年真题及答案

    千次下载 热门讨论 2014-03-16 22:40:52
    该资源包含了从1990年到2013年的所有历年软件设计师的考试题,和答案,对于要考软师的同学很实用,可以有效的帮助各位学习和复习!
  • 软件设计概述

    万次阅读 2016-08-28 19:58:20
    软件设计是把需求转化为软件系统的最重要的环节,系统设计的优劣在根本上决定了软件系统的质量。 在此,主要阐述软件系统设计的5个核心内容:体系结构设计、用户界面设计、数据库设计、模块设计、数据结构和算法...
  • 软考中级软件设计师备考经验分享

    万次阅读 2021-03-13 10:33:08
    软考中级软件设计师备考经验分享 前言 还有两个多月软考考试就要开始了,趁这次机会将本人备考软件设计师的复习经验分享给大家,证书啥的无所谓,主要是有钱拿,拿本人所在城市来讲,初级1000,中级1500,高级2000,...
  • 软件设计师视频教程百度网盘

    万次阅读 多人点赞 2019-06-04 11:32:56
    通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发...
  • 软件设计师讲义

    千次下载 2007-09-25 15:55:51
    软件设计师讲义 软件设计师讲义 软件设计师讲义
  • 软件设计方案

    千次阅读 2018-10-19 18:38:28
    软件设计方案 1 引 言 1.1 编写目的 阐明编写本设计方案说明书的目的,指明读者对象。 1.2 项目背景 包括:a.本项目的委托单位、研制单位和主管部门;b.该软件系统与其它系统的关系。 1.3 定 义 列出本...
  • 软件设计的总体思路

    万次阅读 2019-01-08 15:16:02
    软件设计的本质就是针对软件的需求,建立模型,通过将模型映射为软件,来解决实际问题。因此软件设计需要解决的核心问题是建立合适的模型,使得能够开发出满足用户需求的软件产品,并具有以下特性: 灵活性...
  • 软考之软件设计

    万次阅读 多人点赞 2016-04-24 20:11:14
    软件设计师作用 首先我们一起来看一下我们为什么要考软件设计师,软件设计师有什么用? 答:软件设计师其中重点是软件设计和软件工程,这要求我们要有全局观,从长远来考虑。 开发过程 软件开发是一个系统的过程,...
  • 【软件工程】 软件设计阶段

    千次阅读 热门讨论 2018-01-27 14:18:19
    在经历过计划阶段和需求分析的阶段接下来就到了软件设计的阶段,他是软件工程中非常重要的阶段,它主要是分两步来完成,一个是概要设计,一个是详细设计! 一、概要设计阶段 1、解析 概要设计主要是完成,...
  • 课程紧跟软考软件设计师考试大纲,根据新官方教程全新录制。通过作者多年的软考辅导经验及实际的软件开发相关工作经历,本视频课程对软件设计师考试中的所有知识点进行了详细的讲解及总结;对于考试中重点考、反复考...
  • 1. 软件设计概述 1.1 软件设计的目的 软件设计是在系统设计或者概要设计的基础上,将系统设计进行细化,确定模块划分、模块之间的接口定义、系统中的数据构成等事项,从而确定怎样通过编码来实现系统功能的一个阶段...
  • 20个设计模式和软件设计面试问题

    千次阅读 2018-10-03 00:15:29
    20个设计模式和软件设计面试问题   摘要:不管是参加Java面试还是C#面试,设计模式和软件设计都 是任何编程面试中的必问问题。实际上,编程能力和设计技巧是对彼此很好的补充。一个好的程序员通常都是一个好的...
  • 20天通过中级软件设计师攻略(附资料)

    千次阅读 多人点赞 2020-12-27 19:49:26
    软考分为初、中、高三个等级,每个等级有不同的项目,我本次报考的是中级的软件设计师,本次只介绍软件设计师考试相关信息。 从报名到缴费(110元)后大概是8月份了,本想着时间还早加上9月因公司加急加班所以一直...
  • 软件设计划分模块

    千次阅读 2019-02-21 10:08:43
    软件设计中划分模块的一个准则是( )。 A.低内聚低耦合 B.高内聚低耦合 C.低内聚高耦合 D.高内聚高耦合 答案 B 耦合性和内聚性是模块独立性的两个定性标准,是互相关联的。在软件设计中,各模块间的内聚性...
  • 软件设计师教程 第5版 下载

    千次阅读 2019-03-28 22:13:42
    软件设计师是指能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档的实用性人才。还能够组织和指导程序员编写、调试程序,并对软件进行优化和...
  • 2016年上半年(5月份)软考软件设计师真题及答案解析,包括上午和下午,全网最清晰,答案最正确的真题资料。小任老师出品,必属精品。
  • 软考:软件设计师(中级)

    千次阅读 2021-04-22 13:45:20
    软件设计师考试分为两个科目,分别是计算机与软件工程知识和软件设计技术。 计算机与软件工程知识 计算机与软件工程知识一般在上午考试,考试时间为150分钟。考试内容涉及计算机硬件、数据结构与算法、操作系统、...
  • 本课程为软件设计师专题课程的第一篇,主要讲解了在整个软件开发生命周期内建模的意义以及方法。主要包含模型的认知;UML整体结构的概述;UML中5种视图和9种图的应用场合以及具体的制作方法;面向对象分析与设计的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,728,338
精华内容 691,335
关键字:

软件设计