3月23日——培训第87天

今天是田老师的课……

田老师说找工作的事情先不用着急,笔试的题目更注重基础……

UML的体系是比较庞杂的,一周时间都可能有,但是由于暂时做不到设计,所以也不用琢磨那么深……

静态结构:类图(最重要)、包图、对象图、组成结构图
动态行为:交互图(顺序图、通信图、交互概观图、时序图)、状态图(状态机)、活动图(类似于C语言的流程图)
物理模型:构件图、部署图

-------------------------------------------------------------------------
UML:Unified Modeling Language,是一种面向对象技术的、可视化的、通用建模语言,不仅仅可以用于
软件分析、设计,也可以应用于其他领域的业务建模。
UML是文档,与特定的开发过程相关联(RUP、XP)

UML创始人:Grady Booch,目前在IBM任职,是面向对象方法最早的倡导者之一
   
    James Rumbaugh,提出了面向对象的建模技术(OMT),引入了各种独立于程序设计语言的表示
    符号。他原来是美国空军学院的。

    Ivar Jacobson,于1994年提出了面向对象软件工程的方法,即OOSE,曾经创造了一个系统至今未
    发生问题

MDA(Model Driven Architecture)模型驱动的设计是在UML2.0中新加入的概念,也是UML中的一次重大的
变化。

项目招标-需求分析-概要设计-详细设计-编码和单元测试-集成测试和系统测试-交付实施-系统维护

其实最复杂的地方就是分析、设计这里,然后是后期的测试维护之类,其实最容易实现的就是代码部分,现在
之所以觉得代码有困难是因为代码不熟练。

UML语义:描述基于UML的精确元模型定义。
UML表示法:

UML的5个概念:
图(diagrams)(结构图、行为图)
视图(views)设计视图、实现视图、部署视图、过程视图、用例视图
模型元素(Model Element)
通用机制(General Mechanism)
模型驱动体系结构(Model Driven Architecture)

RUP:Rational Unified Process,统一软件开发过程(用例驱动、以构架为中心)
Agile/XP,敏捷建模

-------------------------------------------------------------
参与者:
必须和系统交互、责任边界而非物理边界、

参与者不在系统里面,如果系统需要保存参与者信息,那么需要把参与者识别成一个类。

确定分析类的基本准则:
为每个由人充当的参与者确定一个主要的边界类
为每个初期建立的实体类确定一个基本边界类。
为每个由外部系统充当的参与者定义一个主要边界类,使其代表通信接口
确定一个控制类,负责处理用例实现中的控制和协调关系,然后按照用例实现的需求
对该控制类进行精化。

识别类:
每个类大约有3到5个职责(并不一定是3到5个方法)
不存在独立的类(好的OOAD的精化是类相互协作使得用户受益)
   每个类应该同少量的类协作以提供所有的期望的功能
   类可以把他们的一些职责托付给专注于特定功能的其他辅助类。
当心一些非常小的类(将那些只有一两个职责的类整合为一个更大的类)
当心几个非常庞大的类(查看职责大于5个的类,需要合理分解为两个或多个能够承担
     恰当数目职责的更小的类)
高内聚、低耦合

当心伪类(一般过程的函数,它伪装成类)
当心“万能类”(似乎能够承担任何工作的类,应将它们的职责分解给未内聚的子集、
   这些内聚职责的每个集合都可以分离成为独立的类,类进行协作以实现
   由原来万能类所提供的行为)
避免深度的继承树(继承层次中每个层次应该具有良好定义的目的,容易添加很多实际上却
    不能服务于任何目的的层次,不要使用继承实现功能的分解,即每个抽象
    层次恰好有一个职责,继承仅仅用于存在直接产生于问题域的,清晰的、
    显而易见的继承层次的场合)

如果你定义了一个大量使用静态方法的类的时候,那么很明显,你在面向过程、而不是面向
对象了,你很可能正在做一个“万能类”

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章