1、m对象、属性与方法对象、属性与方法m面向对象方法的要素面向对象方法的要素mUMLUML简介简介2面向对象面向对象定义:面向对象方法就是为计算机软件的创建提出的一个模型化世界的抽象方法,它可以帮助我们更好地理解和探索世界。面向对象方法的几个基本特征: (1)客观世界是由对象组成的。软件工程专家Peter Codd和Edward Yourdon提出: 面向对象 = 对象对象 + 分类分类 +继承继承 +消息通信消息通信 (2)具有相同的数据和操作的对象可以归并为一个类。 (3)类可以派生出子类,子类继承父类全部特征。 (4)对象之间通过消息传递互相联系。4客户对象发送消息给服务对象,调用服务对象的
2、方法对象可接受的消息通常被定义为该对象的一组“方法”。(或者说是,函数、操作、过程、子程序)Object:ATM machine123456789012345678901234567890method-1:Accept cardmethod-2:Read codemethod-3:Take selection1234 5678 123451234 5678 123455接口(接口(Interface): “方法声明(Method Signature)”的集合。Method Signature: name, parameters, parameter types, return typemeth
3、od-1method-2method-3InterfaceObject hides its state (attributes). The attributes are accessible only through the interface.6Client ObjectClient ObjectServer ObjectServer ObjectMessage 对象通过发送消息互相通信对象通过发送消息互相通信。 客户对象客户对象(Client Object): 发送消息并请求服务。发送消息并请求服务。 服务对象服务对象(Server Object): 提供服务并返回结果。提供服务并返回结果
4、。7m接口是一个软件对象所能提供的所有功能属性(服务服务)的集合。m接口中的方法定义了服务对象所能实现的各种“服务服务”。m这些方法(或服务服务)的产生以及命名,都必须遵循使用该服务的客户对象的需求。 “On-demand” 设计设计 应该从客户对象的需求中“提取提取”服务对象类的接口以及各方法的具体实现,而不是向客户对象“推送推送”我们认为这个服务对象类应该提供的功能。8软件模块State(represented by state variables, e.g., momentum, mass, size, )Inputs(e.g., force)Outputs(e.g., force)9对
5、象对象封装数据封装数据Methods(behavior)Attributes/data(state)Software Object 1Subprograms(behavior)Data(state)软件软件模块模块只是子程序块和数据的一种松散组合只是子程序块和数据的一种松散组合Software Module 2Software Module 3Software Module 1Software Object 2Software Object 3数据的数据的“交叉交叉”访问常访问常常导致错误的发生常导致错误的发生1011u 面向对象的关键特征就是职责的概念,即一个对面向对象的关键特征就是职责的概
6、念,即一个对象象为为其它对象其它对象所承担所承担的职责。的职责。 所有对象的职责描述了所有对象的职责描述了整个系统整个系统的设计。的设计。u 面向对象的面向对象的其他特性其他特性,如封装、多态等,如封装、多态等,则则是是对象对象自身所具有自身所具有的的特性特性。12u 确定对象应该知道确定对象应该知道什么什么(状态状态)以及以及应该做什么应该做什么(行为行为)的过程的过程,称为职责分配。称为职责分配。u 对象的主要职责:对象的主要职责: “知道知道”型职责型职责(knowing):数据数据的存储或对象属性的存储或对象属性 “做做”型职责型职责(doing):用:用“方法方法”来实现具体算法来实
7、现具体算法 “交流交流”型职责(型职责(communicating):通过发送消息与):通过发送消息与其他对象进行通信其他对象进行通信 继承(Inheritance)是一个类从一个基类中继承所有的元素; 而组合(Composition)是一个类中包含另一个类的引用。 Derived Class B+ operation() Base Class A+ operation()CompositionInheritance Derived Class B+ operation() Base Class A+ operation()1314这些关系又可以进一步细化为:这些关系又可以进一步细化为: Is
8、-a 关系关系 : 一个类一个类“继承继承”另一个称之为基类、父类或另一个称之为基类、父类或者超类的类。者超类的类。 Has-a关系关系: 一个类一个类“包含包含”另一个类。另一个类。- 组合组合 - 聚合聚合 Uses-a 关系关系 : 一个类一个类“使用使用”另一个类。另一个类。 Creates 关系关系 : 一个类一个类“创建创建”另一个类。另一个类。15 Pictures Pictures or or views views of an of an OOOO systemsystem Programming Programming languages languages are are
9、 not abstract enough not abstract enough for for OOOO design design UML is an open UML is an open standard; standard; lots of companies uselots of companies use itit What What is legalis legal UML?UML? A A descriptive descriptive language: rigid language: rigid formal formal syntax syntax (like(like
10、 programming)programming) A A prescriptive prescriptive language: language: shaped shaped by by usage andusage and conventionconvention Its Its okay okay to omit things to omit things from from UML diagrams if UML diagrams if theythey arent arent needed needed byby team/supervisor/instructorteam/sup
11、ervisor/instructorUnion of Many Languages Use caseUse case diagramsdiagrams ClassClass diagramsdiagrams ObjectObject diagramsdiagrams SequenceSequence diagramsdiagrams CollaborationCollaboration diagramsdiagrams StatechartStatechart diagramsdiagrams ActivityActivity diagramsdiagrams ComponentCompone
12、nt diagramsdiagrams DeploymentDeployment diagramsdiagrams.A very big language! As a As a sketch: sketch: to to communicate communicate aspects ofaspects of systemsystem Forward Forward design: doing UML design: doing UML beforebefore codingcoding Backward Backward design: doing UML after coding asde
13、sign: doing UML after coding as documentationdocumentation Often done on Often done on whiteboard whiteboard oror paperpaper Used to get Used to get rough rough selectiveselective ideasideas AsAs a a blueprint: blueprint: a a complete design complete design to beto be implementedimplemented Sometime
14、s Sometimes done with done with CASE CASE (Computer-Aided (Computer-Aided Software Software Engineering)Engineering) toolstools As aAs a programmingprogramming language: language: with with thethe rightright tools, tools, code can code can be be auto-generated auto-generated and and executed executed fromfrom UMLUML Only good Only good if this is faster than coding in a if this is faster than coding in a realreal languagelanguage