什么是UML系统建模
UML系统建模是一种与面向对象软件开发密切相关的建模方法。通过建造模型可以验证建造事物的可行性。UML是一种统一建模语言,它的全称是(Unified Method Language)。它的官方网址是:www.uml.org,目前最新的版本是2.5。模型是用某种工具对某个系统的表达方式。模型从某一个建模观点出发,抓住事物最重要的方面而简化或忽略其它方面。软件系统的建模使用建模语言来表达(例如UML)。UML的目标是以面向对象各种相关图的方式来描述任何类型的系统。
注:1.分布式系统:分布在一组机器上运行的系统,数据很容易从一台机器传送到另一台机器,需要同步通信机制来确保数据完整性。
2.小型软件:一般5000行代码一下的软件是小型软件,5000行至5万行代码之间的是中型软件,5万行以上的是大型软件。
面向对象方法
大型的、复杂的软件系统的开发是一项工程,必须按照工程学的方法组织软件的生产与管理,必须经过分析、设计、实现、测试、维护等一系列软件生命周期阶段。编程仍然是重要的,但是更具有决定性意义的是系统建模,只有在分析和设计阶段建立了良好的系统模型,才有可能保证工程的正确实施。OOPL:面向对象的编程语言,OOD:面向对象设计,面向对象分析:OOA。
用计算机解决问题需要用程序设计语言开对问题进行求解加以描述(编程),实质上,软件是问题求解的一种表述形式。对象是要研究任何的事物,对象可以是一个物理实体也可以是无形的事物,对象(类)由数据(事物的属性)和作用于事物的操作(体现事物行为)构成一个独立的整体。从程序设计者的角度来看,对象是一个程序模块,从用户角度来看,对象为他们提供所希望的行为。对象的操作通常称为方法。
类是对象的模板,即类是对一组有相同数据和相同操作的对象的抽象定义一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可以有子类,也可以有父类,形成类层次结构。
面向对象特征:
封装性:封装是一种信息隐藏技术,它体现于类的说明,使数据更安全,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使用户只能看到对象的外部特性(对象能接收哪些消息,具有哪些处理能力),对对象的内部特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。疯长的目的在于把对象的设计者和对象的使用者分开,使用者不必知晓行为的实现细节,只需用设计者提供的消息访问该对象。通过封装,可以把类作为软件中的基本复用单元,提高其内聚度,降低耦合度。
继承性:继承性是子类自动共享父类数据和方法的机制,它由类的派生功能体现。一个类直接继承其父类的全部描述,同时可修改和扩充。继承具有传递性,也就是平时说的多继承。
多态性:同一消息为不同的对象接收时可产生完全不同的行为,这种现象称为动态多态。在C++里动态多态是通过继承来支持的。利用继承层次,尽可能的吧具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低的层次。
在面向对象方法中,对象和消息传递分别表现事物及事物间相互联系的概念。这种对象、类、消息和方法的程序设计范式的基本特点在于对象的封装性和继承性。通过封装能将对象的定义和调用分开,通过继承能体现类与类之间的关系。
抽象:抽象是指强调实体的本质,内在的属性,使用抽象可以尽可能避免过早的考虑一些细节。在系统开发中,抽象指的是首相考虑对象的意义和行为,然后决定如何实现对象。类事先了对对象的数据(状态)和行为的抽象。类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式的分开。
面向对象的开发过程
面向对象方法遵循一般的认知方法学的基本概念,建立面向对象方法基础。面向对象方法学认为客观世界是由各种“对象”所组成的,任何事物都是对象,每一个对象都有自己的运动规律和内部状态,每一个对象都数据某个“类”,都是该对象类的一个元素。复杂的对象可以是由相对比较简单的各种对象以某种方式而构成的。不同对象的组合以及相互作用就构成了所要研究、分析和构造的客观系统。面向对象方法主要是模拟了人类在认知进程中的有一般到特殊的演绎功能或有特殊到一般的归纳功能。遵照面向对象方法学的思想在进行开发时,有如下步骤:
现实对象-----(归纳概括)----->现实类-------(抽象模拟)------>软件类--------(实例化)----->软件对象-------(活动交互)------->程序
首先进行面向对象分析:了解问题域所涉及的对象,对象间的关系和作用(操作),然后构造问题的对象模型,争取该模型能真实的反应出所需要解决的实际问题。在这个过程中,抽象是最本质、最重要的方法,针对不同问题选择不同的抽象层次。接下来是面向对象设计:即设计软件的对象模型。根据应用的面向对象那个软件开发环境的功能强弱不等,在对问题的对象模型进行分析的基础上,可能要对它进行一定的改造,但应该以最少改变原问题域的对象模型为原则。然后在软件系统内设计各个对象、对象间的关系(如层次关系、继承关系等)、对象间的通信方式(如消息模式)等,总之是设计各个对象应该做些什么。最后是面向对象实现,即软件功能的编码实现:包括:每个对象的内部功能实现:确立对象哪些处理能力应在哪些类中进行描述,确定并实现系统的界面、输出形式及其他控制机理等。