`
929118967
  • 浏览: 20414 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
博客专栏
Fcebf22e-9505-38db-b3f2-65fdcc3fd6a5
java开发的深入浅出
浏览量:6920
文章分类
社区版块
存档分类
最新评论

面向对象(oo)分析设计思想

 
阅读更多

前言

在阅读下文时,先列举一下10个面向对象理论,看看自己掌握了多少。
避免重复,DRY(Don’t repeat yourself): 如果你准备在不同地方写同一段代码,那么只写一个方法。如果你不止一次硬编码某个值,那么将其声明成public final常量。这么做的好处就是容易维护。但是不要滥用这一条,重复不是指代码的重复,而是指功能的重复。
将变化封装起来:所以最好将你觉得将来会有改变的代码封装起来。这样做的好处就是更容易测试和维护正确的被封装的代码。
开放且封闭的设计理论(Open Closed Design Principle):类、方法以及功能应该对扩展开放(新的功能),而对更改封闭。软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。
单一责任原理(Single Responsibility Principle (SRP)):每次一个类只有一个更改的原因,或者一个类只应该完成单一的功能。如果你将多过一个功能放在一个类中,它会将两个功能耦合在一起,如果你改变了其中的一个功能,可能会破坏另外一个功能,这样便需要更多的测试以确保上线时不出现什么岔子。
依赖注入或反转原理(DIP The Dependency Inversion Principle):高层模块不应该依赖于低层模块,二者都应该依赖于抽象 ; 抽象不应该依赖于细节,细节应该依赖于抽象 ;容器会提供依赖注入,Spring非常好的实现了依赖注入。
多用组合,少用继承:组合(接口继承,纯虚类)的灵活性高过继承。组合可以在运行时通过设置某个属性以及通过接口来组合某个类,我们可以使用多态,这样就能随时改变类的行为,大大提高了灵活性。
Liskov替代原理(Liskov Substitution Principle (LSP)):当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系
接口分离理论(Interface Segregation principle (ISP)):不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好;如果客户端没有使用一个接口(不使用的接口)的话,就不要实现它。当一个接口包含两个以上的功能,如果客户端仅仅需要其中某个功能,而不需要另外一个,那么就不要实现它(总接口)。
针对接口编程,而不是针对实现编程:尽量针对接口编程,这样如果要引入任何新的接口,也有足够的灵活性。在变量的类型、方法的返回类型以及参量类型中使用接口类型。
代理理论(Delegation principle):不要所有的事情都自己做,有时候要将任务代理给相应的类去做。运用代理模式最经典的例子就是equals()和hashCode()方法。为了比较两个对象的相等与否,我们没有用客户端代码去比较,而是让对象自己去比较。

正文

1.面向对象(oo)

a.什么是面向对象(Object):object是指一个具体的事物的实例

b.面向对象的概念:

Object oriented:指面向客观事物之间的关系(对象与对象)

面向对象的定义:根据用户需求抽象出业务对象,然后再根据需求进行合理划分;形成相对独立的业务功能,之后再设计业务逻辑。利用面向对象的特点(封装、抽象、继承、多态)的编程思想实现业务需求,最后通过每个业务之间功能的关系进行整合,从而满足客户的要求。

在分析项目业务关系的时候,应用一些UML(Unified Modeling Language)图,例如常用的用例图(use case diagram),类图(class diagram),时序图(sequence diagram)等等,会有很大的帮助,这样能尽快找出业务逻辑主要面对的对象,然后对每个对象进行行为划分,最后再实现对象之间的集成和通信。

2.面向对象分析设计(object oriented analysis design) 是现代软件企业广泛采用的一种有效技术。

a.方法:要求设计中要映射现实世界中指定的问题域中的对象和实体。

b.优点:能够构建于现实世界相对应的问题模型。并且能够保持它们的结构、关系和行为的一种编程思想。

c.面向对象中的概念:

a.类型(类):名词

b.引用(变量):用来指向具体东西的代词

c.对象:指具体概念的个体实例

d.行为:方法、动作。

e.多态:行为多态,通过相同的动作完成的,但是完成结果不同;引用多态,同一个代词指代对象不同。

f.封装:任何对象实例都是尽可能的保护其内部的具体实现,减少暴露。他的实现细节补血药其他对象关注。比如:汽车的发动机。

总结

1.就先从我今天使用Beyond Compare 3比对工具说起,今天,我对该工具有了更生层次的领悟:它用于是发现跟自己的cr无关的代码,让我们测试过的代码上生产。
2.第二点是,关于代码的特殊处理,针对临时代码,我们需要详细注释,尤其是uat测试的临时代码,应写在组件里面,以便uat写死的数据可以方便的在上生产时去掉;当然组件加些自我检测的代码更好。不要因为环境的问题而导致程序不一致,要将应用处理的逻辑分离出来。减少与环境的关联性
3.程序员看待开发:
心中要当作没有测试环节(uat测试),程序质量不要依赖后续的测试,即使测试通过,并不代表版本正确。要从设计保证质量
4谈谈关于程序的维护:
关联和独立性,第一,代码中经常动的和不经常动的要分离;第二业务经常变化和不变化的分离。
注:只测试变动的代码,并不是完整的测试,尤其是耦合度高的代码更是如此。
5.读代码也是测试的一种方法,大脑可以带数据的测试。
6.S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写
SRP(The Single Responsibility Principle )单一责任原则;OCP(The Open Closed Principle )开放封闭原则;LSP(The Liskov Substitution Principle)里氏替换原则;DIP(The Dependency Inversion Principle)依赖倒置原则;SP (The Interface Segregation Principle)接口分离原则


分享到:
评论

相关推荐

    例解基于UML的面向对象分析与设计

    经常听到有朋友抱怨,说学了UML不知该怎么用,或者画了UML却觉得没什么作用。其实,就UML本身来说,它只是一种交流工具,它作为一种...)下面,我们通过一个CMS系统的分析设计实例,看看如何将UML应用到实际的开发中。

    基于UML的面向对象分析与设计

    摘要本文以实例的方式,展示了如果使用UML进行面向对象的分析与设计。本文将假设读者对UML、面向对象等领域的基本内容已了然于胸,所以将不会过多阐述,而将重点放在应用过程上。本文的目的是通过一个完整的实例,...

    C++-面向对象编程-000-面向对象

    面向对象(Object Oriented ,OO)它是一种设计思想,现在这种思想已经不单应用在软件设计上,数据库设计、计算机辅助设计(CAD)、网络结构设计、人工智能算法设计等领域都开始应用这种思想。 针对面向对象思想应用的...

    跟我学Java面向对象程序设计技术及应用——Java中的面向对象技术(第1部分).pdf

    1.1.1 面向对象技术基础 1、面向对象(OO)的基本概念 (1)面向对象的基本思想 面向对象是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm)。其基本 思想是使用对象、类、继承、封装、消息等基本...

    写给大家看的面向对象编程书(第3版).[美]Matt Weisfeld(带详细书签).pdf

    书中结合代码示例生动透彻地讲述了面向对象思想的精髓,让读者真正学会以对象方式进行思考。此外,本书还讨论了各种与面向对象概念密切相关的应用主题,包括XML、UML建模语言、持久存储、分布式计算和客户/服务器...

    有关Java面向对象问题整理汇总

    面向对象(Object Oriented)的英文缩写是OO,它是一种设计思想。从20世纪60年代提出面向对象的概念到现在,它已经发展成为一种比较成熟的编程思想,其以人类习惯的思维方式,用对象来理解和分析问题,使开发软件的...

    Python基础-面向对象(1)

    OOA:面向对象的分析 OOD:面向对象的设计 OOI:面向对象的实现 OOP:面向对象的编程 OOA->OOD->OOI:面向对象的实现过程 类和对象的概念 类:抽象名词,代表一个集合,共性的事物 对象:具象的事物,单个个体 类和对象的关系 ...

    面向对象设计

    OO是“面向对象”的英文Object Oriented的缩写,这个词在整个软件领域制造了一场深刻的变革,大大改变了传统的面向过程的软件分析和开发模式。 面向对象是一种与语言无关的设计思想,符合人类自然的思考习惯来看待...

    论文研究-面向Agent交互合作的ODSS系统分析与设计.pdf

    通过对面向Agent(AO)思想的特点的研究,提出了大型系统中AO与OO(面对对象)相结合的系统分析与设计原则,指出了一条从OO方法学出发建立AO方法的可行...

    Python基础-面向对象OOP

    OOA:面向对象的分析 OOD:面向对象的设计 OOI:面向对象的实现 OOP:面向对象的编程 OOA->OOD->OOI:面向对象的实现过程 类和对象的概念 类:抽象名词,代表一个集合,共性的事物 对象:具象的事物,单个个体 类和对象的关系 ...

    面向方面CaesarJ的原理与源码分析

    目前的编程主流领域是面向对象(OO)技术。通过使用对象,程序员可以把世界当作一些专门类的实例,这些类提供了方法,这些方法以命令式程序表示,用来描述类的所有对象的行为。 面向对象有很多的优点,特别是与...

    UML和模式应用(原书第3版)

    本书介绍了对象思想,并在实际的面向对象分析和设计中应用这一观点。本书的第1版和第2版广受赞誉,在第3版中,作者Craig Larman所作的更新充分反映了新的UML 2标准,有助于读者掌握对象设计,并且提倡具有高度影响的...

    大象 Thinking in UML

    3、本书以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解得津津有味。...

    大象 Tinking in UML

    3、本书以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解得津津有味。...

    设计模式资料汇总

    上次上传出了些问题(9M的压缩包几天后突然....mht 面向对象经典语录.txt 设计模式迷你手册.chm 封装变化.doc 让僵冷的翅膀飞起来.rar C#设计模式随书源码.rar 用设计模式固化你的C#程序.doc <br>

Global site tag (gtag.js) - Google Analytics