day01:
面向对象
通过封装、继承、多态,把程序的耦合度降低,使程序灵活、容易修改、容易复用。
面向对象=对象 + 类 + 消息 + 继承 + 多态
面向对象方法是一种把面向对象的思想运用于软件开发过程,指导开发活动的系统方法,包括分析、设计和实现等活动
软件开发组越大,组中每个成员的生产率就越低
--Philippe Kahn, Borland
Ln = 15000/(n^-3)( LOC / year )
构造大型软件不能靠堆人
敏捷开发:
1. 思路先行 //先用注释把思路记录下来
2. 实现随后
可维护性:预见需求(预见多年后的事)
可重用:
代码可重用(最低级别):粒度:方法(常用代码块),类,包,组件(类库)
设计的可重用:框架(半成品,如Hibernate);产品(开发软件);算法、设计模式
分析的可重用(最高级别,见不到代码):文档、规范、标准(ISO:CMM,CMMI)
可扩展性:
UML图
类(class) 用矩形框表示,分三层
第一层:类名,抽象类用斜体字
第二层:类的特性:字段和属性
第三层:类的操作:方法或行为
方法前的符号:“+”表示public,“-”表示private,“#”表示protected
接口:右边的“飞翔”
顶端有<<interface>>,第一层是接口名字,第二层是方法
接口的另一种表示法:俗称棒棒糖表示法,就是类上面的一根棒棒糖(圆圈+实线)
圆圈旁为接口名称,接口方法在实现类中出现
继承:用空心三角+实线
实现接口:空心三角+虚线
类与对象之间的关系(6种):
关联 Association:一个类受另一个类影响(实线)
聚合关联 Aggregation:弱'拥有'关系,A对象可以包含B对象,但B不是A的一部分(空心菱形+实线箭头)[DPE]
(DPE 表示这句话来自《设计模式》)
组合关联 Composition:(也叫合成,组成)是一种强的‘拥有’关系,体现严格的部分和整体的关系,
部分和整体的生命周期一样[DPE](实心菱形+实线箭头)
组合图形的基数:表明这一端的类可以有几个实例,(一只鸟有两个翅膀)如果有无数个实例,则用n表示
关联关系、聚合关系也可以有基数
依赖 Dependency :一个类需要另外一个类(X需要Y,则X的修改Y也要跟着修改) (虚线箭头)
泛化(继承) (实心菱形+实线)
实现 (实心菱形+虚线)
UML 4+1 图
1:用例图 描述系统中有哪些用户可用的功能
4:逻辑图 将问题中的一些名词提取出来,形成系统中对应的类,表示之间的关系。
过程图 表示系统对象间的交互
实现图 系统中组件与组件之间交互
部署图 软件系统真实运行过程的物理描述
静态(系统结构):
类图
对象图
构建图
部署图
动态(系统行为):
顺序图 (时序图)
协作图
状态图
活动图
用例图
day02:
面向对象的7大基本设计原则
程序设计:没有最好,只有最适合。寻找平衡点。
1. LSP(The Liskov Substitution Principle ,替换原则)
父类出现的地方,子类都可出现。
子类或实现类与父类都是可以互换的。
子类不能添加任何父类没有的附加约束
子类对象必须可以替换父类对象
2. OCP (The Open-Close Principle,开闭原则)
要关联抽象,不要关联具体,抽象可扩展。
扩展是开放的,更改是封闭的
3. SRP(The Single Responsibility Principle,单一职责原则)
依赖不同的具体类,不要将不相关的方法放到一个具体类中,然后具体类再关联。
一个类,应该仅有一个引起它变化的原因
当需求变化时,该变化会反映为类的职责的变化(如果有多个职责,引起变化的原因就会有多个)
4. ISP(The Interface Segregation Principle,接口隔离原则)
具体类不要实现无关接口中的方法,应使用具体类实现多个接口。
避免肥接口,以一个类实现多个接口,而各客户仅仅获知必须的接口
本质:
使用多个专门的接口比使用单一的接口好
一个类对另一个类的依赖性应当最小化
避免接口污染(Interface Pollution)(使用不必要的功能)
5. DIP(The Dependency Inversion Principle,依赖倒置原则)
高层依赖于抽象,底层继承/实现于抽象。
高层模块不应该依赖于低层模块,二者都应该依赖于抽象
细节应该依赖于抽象,而抽象不应该依赖于细节
针对接口编程,不是针对实现编程
6. CARP(Composite/Aggregate Reuse Principle,组合/聚合复用原则)
尽量使用组合/聚合,而不是使用继承来达到复用目的
继承的缺点:会带来不必要的方法
组合/聚合的解决方案
组合:部分的更改会影响整体的生命
***:部分的更改对整体的影响不大
7. LoD(Law of Demeter,迪米特法则)
类间最少通信原则,采用中间类。
也称最少知识原则。一个对象或模块应该和其它对象和模块尽量少的通信
GoF(Gang of Fout) 23种经典设计模式
创建型 结构型 行为型
类 Factory Method 工厂方法 Adapter_Class Interpreter
Template Method
对象 Abstract Factory 抽象工厂 Adapter_Object Chain of Responsibility
Builder Bridge Command
Prototype 原型 Composite Iterator
Singleton 单例 Decorator 装饰 Mediator
Facade Memento
Flyweight Observer
Proxy State 状态
Strategy
Visitor
单例模式:
当多个对象需要共享同一个对象时;
原型模式:
对扩展开发,对修改关闭;
工厂模式:
客户需要某个产品,能够根据客户要求取得产品给客户;
状态模式:
当需要对某个对象内部状态改变时,使用;
装饰模式:
当需要对某个对象动态添加新功能时,可以用;
适配器模式:
只需要对接口中的一小部分方法重新定义,又不希望将接口中的所有方法实现,
这时可以使用;
观察者模式:
当主题对象改变时,需要通知所有的观察者,这时可以使用;
命令模式:
将用户发出命令以对象形式传递,通过参数可改变命令对象的状态;
分享到:
相关推荐
总结来说,"项目管理系统(OOAD研究生项目实践)"是一个涵盖UML建模、OOAD原则和技术实施的综合实践项目。通过这一实践,学生将加深对软件开发流程的理解,学习如何运用面向对象设计方法来解决实际问题,同时提升其...
总之,《软件工程与UML案例解析》一书为我们提供了一个全面而深入的学习平台,通过丰富的案例和细致的解析,使读者能够在实践中不断提升自己的技能和知识,从而更好地应对软件开发中的各种挑战。
通过学习《Head First OOAD》的源代码,读者可以更好地掌握面向对象设计的思想,并将其应用到实际项目中,提升软件开发的效率和质量。同时,书中的实例代码也能帮助开发者在遇到问题时找到参考,加深对理论知识的...
本压缩包包含了一系列关于OOAD的资料,涵盖了设计原则、UML建模、设计模式等多个关键知识点。 1. **设计原则**:设计原则是指导面向对象设计的基础,如单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则...
其次,课程致力于使学习者掌握面向对象开发的过程,了解OOAD的核心原则和UML在这一过程中的应用。通过学习,学习者将能够熟练地运用UML的各种图来表达软件系统的设计思想,包括用例图、类图、活动图、序列图、状态图...
UML(统一建模语言)是一种通用的、可视化的建模语言,用于软件工程和其他领域,特别是面向对象分析与设计(OOAD)。UML为系统开发提供了一套标准化的图形表示方法,帮助开发者更好地理解和沟通系统的需求、设计和...
通过《UML2.0实战教程》的学习,不仅可以深入了解面向对象的基本原理和技术,还能掌握如何利用UML这一强大工具来进行有效的软件设计与分析。这对于提升个人技能水平和促进项目成功都是非常有益的。无论是初学者还是...
本课程旨在为学生提供一套全面的OOAD与UML的学习资源,帮助学习者掌握以下关键技能: 1. **理解面向对象的基本概念**:包括类、对象、继承、封装和多态等。 2. **熟悉UML的各种图**:如用例图、类图、顺序图、活动...
在物件导向分析与设计(Object-Oriented Analysis and Design,简称OOAD)中,UML(Unified Modeling Language,统一建模语言)是一种图形化的语言,用于对软件密集系统进行可视化描述、构造和文档化。此章节首先...
2. 类图和用例图:使用UML(统一建模语言)绘制的图表,显示了系统的主要类和对象,以及它们之间的关系,以及用户与系统交互的场景。 3. 设计文档:包括系统架构设计、数据库设计、接口设计等,描述了系统如何被构建...
5. **总结**:对整个项目的总结,包括完成的工作、遇到的问题、解决方案以及改进的空间。 6. **参考资料**:列出报告中引用的所有参考文献和技术资料,供读者深入学习和理解。 这份报告是网上订购火车票系统开发...
### UML全程实作课件知识点总结 #### 一、UML全程实作课件概述 **UML全程实作课件**旨在为学习者提供一套全面深入的面向对象分析与设计的学习材料。该课程由UML_China组织并提供,内容丰富且具有很高的实用价值。...
UML建模讲义主要涵盖了...总结来说,UML建模讲义探讨了面向对象分析和设计的基本概念、原则以及RUP中的建模过程。通过学习这些知识,开发者可以更有效地理解和解决复杂的软件工程问题,构建出更加健壮、可维护的系统。
10. **分析模型的表示**:统一建模语言(UML)是面向对象分析和设计的主要表示工具,包括类图、对象图、序列图、协作图、用例图等多种图形表示。 这些知识是学习面向对象分析的基础,理解和掌握这些概念对于软件...
- **UML与OOAD的关系**:UML是OOAD的重要工具之一,它提供了一套完整的符号系统来描述面向对象系统的设计。通过UML,可以更直观地理解和描述OOAD中的各种概念,如类、对象、接口、继承关系等。 ### 总结 《非...
### J2EE软件工程师全部培训课程总结:深入解析与核心知识点提炼 #### 一、数据库技术:Oracle SQL与数据管理 - **Oracle SQL基础**:包括行选择、限制选择、单行函数等基本操作,是数据库操作的核心技能。 - **多...