加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 软件

软件工程学习报告

时间:2024-02-11 12:35:54  来源:http://www.facechina.net  作者:admin

面向对象的软件工程

1.1面向对象方法学概述

1.1.1、面向对象的思想

一、OOSD (Object-Oriented Software Development)法是一种 把面向对象的思想应用于软件开发过程,指导开发活动的系统方法。到目前,面向对象方法已成为软件工程的一种新途径。这种技术已得到了广泛的应用。

什么是面向对象

二、面向对象的基本思想是将一个实际问题看成是一个对象或几个对象的集合。按照以下4个概念设计和实现的系统,称为是面向对象的。

面向对象=对象 (object) +类 (classification) +继承(inheritance)+通信 (communication with messages)

三、OOSD由三部分组成:

OOA(Object-Oriented Analysis)面向对象的分析

OOD(Object-Oriented Design)面向对象的设计

OOP (Object-Oriented Program)面向对象的程序设计

OOA过程是在系统所要求解的问题中找出对象(属性和行为)以及它所属的类,并定义对象与类;OOD是把系统所要求解的问题分解为一些对象及对象间传递消息的过程;OOP是把数据和处理数据的过程结合为一个对象。对象既可以像数据一样被处理,又可以像过程一样被描述处理的流程和细节。

1.2、面向对象的基本概念

1.2.1 对象(Object)

一、 对象的定义

对象(Object)是客观事物或概念的抽象表述,即对客观存在的事物的描述统称为对象,对象可以是事、物、或抽象概念 ,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。

二、 对象的特点

对象的最基本的特征是封装性和继承性。它还具有以下特点:

(1)以数据为中心,操作围绕对其数据所需要做的处理来设置,不设置与这些数据无关的操作,而且操作的结果往往与当时所处的状态有关。

(2)对象是主动的,它与传统的数据有本质的不同,不是被动的等待对它进行处理,相反,它是进行处理的主体。

(3)本质上具有并行性。

(4)模块独立性性好。

1.3 类(Class)

一、 类的概念

类又称对象类(Object Class),是一组具有相同属性和相同操作的对象的集合。在一个类中,每个对象都是类的实例(instance) ,它们都可以使用类中提供的函数。类具有属性,用数据结构来描述类的属性,类具有操作,它是对象的行为的抽象,操作实现的过程称为方 法(method) ,方法有方法名,方法体和参数。

二、对象和类的描述

1、 类的层次

一个类的上层可以有超类(Superclass),下层可以有子类(Subclass),形成一种层次结构。超类也称基类,子类也称派生类。这种类之间的结构关系主要有两种:一般与特殊结构关系和整体与部分结构关系。

 一般与特殊结构关系又称为分类结构关系,也就是“is a”关系。通常,越上层的类越具有一般性和共性,越下层的类越特殊、越具体。现实世界中的一般化的抽象关系用类的这种结构关系来描述。

 整体与部分结构关系称为组装结构关系,也就是“has a”关系。例如,飞机和发动机都是类,它们之间的关系是“has a”关系,发动机是飞机的一部分。通常,上层的类具有整体性,下层的类具有部分性、成员性。现实世界中的组成的抽象关系用类的这种结构关系来描述。

2、 消息和方法(Message and Method)

消息就是向对象发出的服务请求(互相联系、协同工作等)。对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制。

一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识 、消息和方法、输入信息、回答信息。在对象的操作中当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的消息。

在面向对象程序设计中,程序的执行是靠在对象间传递消息来完成的,如图8.2所示。

说明:

 发送消息的对象称为发送者,接收消息的对象称为接收者。消息中只包含发送者的要求,它告诉接收者需要完成哪些处理,但并不指示接收者应该怎样完成这些处理。消息完全由接收者解释,接收者独立决定采用什么方式完成所需的处理。

 发送一条消息必须包含接收者的对象名、发送给该对象的消息名(即对象名.方法名)以及传递消息的参数说明等。

 方法是类中操作的实现过程。一个方法包含方法名、参数和方法体。当一个对象接收到一条消息后,它所包含的方法决定对象该做怎样的处理。对象的内部信息是隐蔽的(私有的),对象间只能通过消息来连接,而对象私有的数据是用它的方法访问的。

三、继承性(Inheritance)

继承性是共享类、子类和对象中的方法和数据的机制。当类A不但具有类B的属性,而且还具有自己的独特属性时,这时称类A继承了类B,继承关系常称“即是”(is a)关系。

1、继承的特性:

 传递性。一个类(直接)继承其超类的全部描述。这种继承具有传递性,即如果C1继承C2,C2继承C3,则C1(间接)继承C3。所以,一个类实际上继承了层次结构中在其上面的所有类的全部描述。因此,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上面所有类描述的全部特性。

 分为单重继承和多重继承两类。在类的层次结构中,一个类可以有多个子类,也可以有多个超类。如果一个类至多只能有一个超类,则一个类至多只能直接继承一个类,这种继承方式称为单重或简单继承(Single Inheritance),如图8.3所示。简单继承是树型结构。如果一个类可以直接继承多个类,这种继承方式称为多重继承(Multiple Inheritance),如图8.4所示。多重继承是网状结构。

四、 封装性(Encapsulation)

封装是面向对象的一个重要概念。封装是一种信息隐蔽技术,用户只能见到对象封装界面上的信息,对象内部对用户是隐蔽的。也就是说,用户只知道某对象是“做什么”的,不知道“怎么做”。封装将外部接口与内部实现分离开来,用户不必知道行为实现的细节,只须用消息来访问该对象。

优点:

1)封装体现了良好的模块性,它将定义模块和实现模块分开。

2)封装使对象的内部软件的范围有清楚边界,有一个描述该对象和其他的对象之间通信的接口;

3)使得模快内部的数据受到很好的保护,避免外部的干扰。

4)封装大大增强了软件的维护性、修改性,这也是软件技术追求的目标。

五. 多态性(Polymorphism)

当同样的消息可以被送到一个父类的对象和它的子类的对象上时,被称作多态性。即相同的操作的消息发送给不同的对象时,每个对象将根据自己所属类中所定义的操作去执行,故产生不同的结果。多态即一个名字可具有多种语义。

优点:多态性机制不仅增加了面向对象软件系统的灵活性、可理解性和可维护性,进一步减少了信息冗余,而且显著提高了软件的可重用性和可扩充性。

六、重载

有两种重载,函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面.

1.4 面向对象建模

1. 建模与模型

建模是问题域中定义软件解的一种方法。系统开发中,要解决一个实际问题,也就是求该问题的软件解。在解决问题之前,必须首先理解所要解决的问题,其次才是求解。只有对问题理解透彻了,才能解决它。这时我们可以借助于建模的方法来理解问题并解决问题。建模将问题域的解定义成一种模型,以帮助系统分析人员更好地理解问题。

2 面向对象模型

面向对象建模是用面向对象技术和方法来定义、描述问题域中的软件解的。对问题域的理解,同样也是面向对象方法开发软件的关键。面向对象方法最基本的原则,是按照人们习惯的思维方式,用面向对象观点建立问题域的模型,开发出尽可能自然地表现求解方法的软件。

用面向对象方法开发软件,通常需要建立对象模型、动态模型和功能模型三种模型。

1)对象模型是描述系统数据结构的,它始终都是目标系统中最关键、最基本、最核心的;

2)动态模型是描述系统控制结构的;

3)功能模型是描述系统功能的。

一个典型的软件系统应包含数据结构(对象模型)、执行操作(动态模型)和完成数据值的变化(功能模型)。这三种模型从不同但又密切相关的角度模拟目标系统,它们各自从不同侧面反映了系统的实质性内容。

1.5对象模型

 对象模型描述了系统的数据结构,它是三个模型的最关键的一个模型。

 对象模型的作用是描述系统的静态结构,包括构成系统的类和对象、它们的属性和操作,以及它们之间的联系。

 面向对象方法是以对象为基础来构造系统,而不是以功能为基础来构造系统的。

 对象模型为建立动态模型和功能模型提供了实质性的框架。对象模型是基础,动态模型和功能模型在此基础上创建

1.5.1 类图的基本符号

1.定义类

类名是一类对象的名字,为类命名时应遵守以下几条准则。

(1).使用标准术语。应该使用在应用领域中人们习惯的标准术语作为类名,不要随意创造名字。

(2).使用具有准确含义的名词。尽量使用能表示类的含义的日常用语作名字,不要使用空洞的或含义模糊的名词。

(3).必要时用名词短语作名字。为使名字的含义更

还没有写完呵呵

来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
栏目更新
栏目热门