前言
在阅读下文时,先列举一下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.定义用例:需求分析可能包括人们如何使用应用的情节或场景
2.定义领域模型:面向对象的分析关注领域的概念,属性和关联来形成OOA结果领域模型(domain model),在领域模型中展示重要的领域对象。
3.分配对象职责,并绘制交互图:ood关注软件对象的定义-它们的职责和协作。
注:顺序图(sequence diagram)是描述协作的常见表达方式,它展示了软件对象之间的消息流,和由消息引起的方法调用
4.定义设计类:使用设计类来表示有效类定义的静态视图,重点描述类的属性和方法。
想完成敏捷开发工程那就先来看看正文的面向对象的基础知识吧。
正文
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)接口分离原则
分享到:
相关推荐
面向对象编程(Object-Oriented Programming, OOP)是一种程序设计思想,它基于“对象”的概念,通过封装、继承和多态性来组织代码,使得程序更易于理解和维护。在OOP中,对象是现实世界中实体的抽象,它们包含数据...
面向对象分析与设计是软件工程领域的一个重要分支,它强调以对象作为基本单元来构建软件系统,从而使得软件具有更好的模块化、复用性和可维护性。在软件开发的实践中,面向对象的思想和技术已成为主流。Grady Booch...
### 面向对象分析与设计概述 #### 一、面向对象的基本概念 面向对象(Object-Oriented,...通过对面向对象的基本概念、分析设计的原则、方法论及应用实践的深入学习,开发者可以更有效地应对日益复杂的软件项目挑战。
面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是软件开发过程中的重要环节,它结合了面向对象编程的思想,用于理解和构建复杂系统。本资料集中的PPT详细介绍了这一过程,特别是利用统一建模...
面向对象分析与设计是软件开发过程中的核心环节,它基于面向对象编程思想,通过将现实世界中的问题转化为计算机代码来解决。本资源“深入浅出面向对象分析与设计源码”提供了一整套完整的源码示例,旨在帮助开发者...
面向对象分析与设计是软件开发领域中的核心概念,它是一种以对象为中心的编程思想,用于构建复杂、可维护和可扩展的系统。本资源“深入浅出面向对象分析与设计(中文版)”提供了全面的理论知识和实践指导,旨在帮助...
例如,在需求分析阶段,可能使用结构化方法来理解业务流程,然后用面向对象的思想来构建系统模型。这样可以结合两者的优点,既有结构化的清晰逻辑,又有面向对象的灵活性和可扩展性。 文件"结构化与面向对象的需求...
- 新的OO分析与设计技术或方法。 - 在企业Java应用和UML领域的应用实践。 - 领域驱动设计(Domain-Driven Design)在企业级应用开发中的应用。 - 设计模式的深层次讨论,包括模式在不同上下文的应用。 - 实战案例,...
面向对象方法的基本思想包括两个主要方面:一方面是从现实世界中客观存在的事务出发来构造软件系统,并在系统的构造中尽可能地运用人类的自然思维方式;另一方面是面向对象方法比以往的方法更接近人类的自然思维方式...
本资料"深入浅出面向对象分析与设计"旨在帮助读者理解并掌握面向对象的思想,以及如何在实际项目中应用这些理念进行分析和设计。 面向对象(Object-Oriented,简称OO)的核心概念包括类(Class)、对象(Object)、...
首先,面向对象(Object-Oriented,简称OO)的思想体系基于几个核心概念:封装、继承、多态和抽象。这些概念使得软件设计更加贴近真实世界的模型,有助于提高代码的可维护性和复用性。在面向对象的需求分析(OOA)...
面向对象分析及设计是软件开发中的重要方法,它基于面向对象的编程思想,将现实世界中的事物抽象为类,通过封装、继承、多态等特性来构建软件模型。以下是根据提供的复习题内容展开的详细知识点解释: 1. 面向对象...
OO分析的核心概念包括对象、类、继承和通信。对象是具有状态和行为的实体,类是对具有相同特性的对象的抽象。继承和泛化是实现代码重用和层次化设计的机制,而封装则通过信息隐蔽技术限制了对象内部状态的访问。面向...
然而,需要注意的是,重用并非面向对象设计的必然结果,它依赖于领域分析来定义满足多个系统需求的类。 3. **并行开发**:面向对象设计使得不同的开发团队可以并行处理不同的类集合,从而提高整体开发效率。 4. **...
面向对象(Object-Oriented,简称OO)...IBM的面向对象设计实例提供了具体的步骤和示例,帮助开发者更好地理解和应用面向对象的设计思想。通过学习和实践,我们可以提升设计能力,创造出更加高效、可维护的软件系统。
4. **面向对象程序设计**:将数据和对数据的操作封装在一起,形成对象,这是面向对象程序设计的核心思想。 5. **面向对象方法的优点**:面向对象方法以对象为中心,而不是以数据操作为中心,强调数据抽象和封装,...
### 面向对象的分析与设计:第一部分解析 #### 一、面向对象的基本概念 面向对象(Object-Oriented, OO)是一种软件开发方法论,它将计算机程序视为一系列对象的集合,每个对象都能接收其他对象发来的消息,并处理...
面向对象分析(Object-Oriented Analysis, OOA)是在面向对象的思想指导下进行需求分析的过程。这一阶段的目标是从用户的角度出发,理解问题域并建立一个能够反映系统需求的模型。OOA关注的是系统的“是什么”而不是...