您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 面向对象设计及UML语言总结2012
1面向对象设计及UML语言总结戴立红2一、绪论1、软件危机软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。2、软件工程软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过实践考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。33、软件生命周期各个阶段(1)问题的定义及规划主要确定软件的开发目标及其可行性。(2)需求分析在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。(3)软件设计此阶段主要根据需求分析的结果,对整个软件系统进行设计。(4)编程阶段是利用一种编程语言产生一个能够被机器理解和执行的系统。(5)测试是发现和排除程序中的错误,最终产生一个正确的系统。(6)维护阶段的工作分两种情况:一是对使用中发现的错误进行修改,二是因需求发生了变化而进行修改。传统生命周期方法学的缺点:(1)软件重用性差。(2)软件仍然很难维护。(3)开发出的软件不能满足用户需要。44、传统生命周期方法学传统生命周期方法学的缺点:(1)软件重用性差。(2)软件仍然很难维护。(3)开发出的软件不能满足用户需要。出现问题的原因:(1)僵化的瀑布模型;(2)结构化技术的缺点。55、面向对象方法学方法学定义了语言和过程。语言定义了使用的模型和表示这些模型的表示法。过程定义了如何以及何时产生各种不同的模型。面向对象方法学的优点:(1)与人类习惯的思维方法一致。(2)稳定性好。(3)可重用性好。(4)可维护性好,易于修改和调整。66、UML和RUP(1)统一建模语言UMLUML是一种基于面向对象的可视化建模语言。使用面向对象开发软件可以使用UML。软件开发过程的各个阶段可以使用UML进行建模。(2)统一开放过程RUP特点:迭代式的增量开发用例驱动以软件体系结构为核心7二、面向对象1、对象(Object)所有的事物只要在概念上能够独立存在并且有清晰的边界,皆可作为对象。是构成系统的一个基本单位。对象具有状态和行为。对象的操作可以改变对象的状态,对象及其操作就是对象的行为。2、类(Class)类是对具有相同属性和相同服务的一组相似对象的抽象。类具有属性和操作。类的属性是对象的状态的抽象。类的操作是对象的行为的抽象。操作是这类对象能够提供的服务。方法是操作的具体实现。3、对象与类之间的关系类是对象的抽象。对象是类的实例。8抽象、封装、信息隐藏4、抽象(Abstract)抽象指对一个过程或者一件制品的某些细节的有目的的隐藏,以便把其他方面、细节或者结构表达得更加清楚。5、封装(Encapsulation)封装是软件开发方法的重要原则,有两个涵义:一方面把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(对象)。另一方面尽可能隐蔽对象的内部细节(信息隐蔽)。6、信息隐藏指在抽象表现开发过程中有目的地忽略细节。信息隐藏主要有两个方面:一方面,对象的属性对外不可见,只能通过对外提供的接口即操作来获得对象所提供的服务。另一方面,对象操作的具体实现方法对外不可见,对外只提供接口。接口和实现分离。97、继承(Inheritance)是共享类的相似点但同时保留差别的一种强有力的抽象手段。继承是在已经存在的类基础上建立新类的技术。子类可以继承其父类的属性和操作。子类也可以在父类基础上加入新的属性和操作。继承表达了类间“是一种”的关系。继承有利于代码的重用。继承性具有传递性。108、多态(Polymorphism)多态:不同的对象收到同一消息可产生完全不同的结果,这一现象叫做多态。用户发送一个通用的消息,而实现的细节则由接收对象自行决定。多态达到单一接口,多种功能的目的。多态的类型:(1)参数多态性是指对象或函数等能以一致的形式用于不同的类型。C++语言中的模板(类模板和函数模板)就属于参数多态性。(2)包含多态性是同样的操作可以用于一种类型及其子类型。C++语言中主要通过虚函数来实现。利用抽象类定义操作,而用子类定义处理该操作的方法。(3)重载多态性是指一个函数名可以具有多个不同的功能,这种不同的功能通过该函数名的多个重载定义体确定。C++语言中的函数重载和运算符重载就属于重载多态性。(4)强制多态性是指通过语义操作把一个对象或变量类型加以变换。这种类型变换可以有显式的和隐式的两种。C++语言中的强制类型转换就是显式类型变换的例子。119、消息(Message)与方法(Method)对象间的联系表现在通过消息的传递互通有无,彼此合作。对象可接受消息也可发送消息。消息的组成:接收消息的对象;消息名;参数。当某一个对象收到消息后,要启动相应的操作来对消息做出应答,而这些操作对外的表现形式被称为方法。方法往往会改变对象自身的状态或是发送出消息给其它对象。12三、面向对象程序设计语言C++1、输入/输出流#includeiostream.h2、循环语句和分支语句switch(表达式){case常量表达式1:执行语句1;break;……case常量表达式n:执行语句n;break;default:执行语句n+1}3、函数原型和内联函数函数的原型返回类型函数名(参数列表);使用内联函数可提高程序的效率。内联函数用关键字inline来声明。13函数的重载和引用4、函数的重载函数重载指相同的函数名,可以实现不同的操作。因此重载函数在参数个数、参数类型上有所不同。5、引用引用是变量或者其他编程实体(如对象)的别名。对别名的存取就是对变量的存取。对引用声明的同时需对其进行初始化。引用是通过运算符&来定义的,定义的格式如下:类型名&引用名=变量名;146、类(1)类的建立及其成员class类名{//数据成员//成员函数};(2)类的可见性在定义类的成员时,根据我们的需要可以用关键字private、public和protected来声明成员的存取属性。被private声明后的成员,称为私有成员,由该关键字声明的成员仅被该类的成员函数调用;被protected声明后的成员,称为被保护成员,该成员除了能被该类的成员函数使用外,还可以被从该类派生出来的子类的成员函数使用;被public声明后的成员,称为公有成员,由它声明的成员不仅能被该类的成员函数调用,而且还能被类外的函数调用。如果类的某个成员没有声明其存取属性,即可见性,则该成员为类的私有成员。另外,类的友元函数可以访问该类的所有成员。156、类(3)封装的理解该类的对象的数据结构和功能操作封装在一起,在类外访问该类对象的成员时,必须使用对外提供的接口。接口在这里指类中被public声明为公有的成员函数。一般类的数据成员都是私有的,对外不可见,实现了信息隐藏。(4)结构体和类的区别两者除了关键字不同外,当一个成员没有显式给出其访问属性时,结构体默认为公有属性,而类默认为私有属性。可见类更好地实现了信息隐藏。(5)类的对象的创建和对对象成员的操作创建对象创建对象的指针(6)类的静态成员特定数据成员的一份拷贝应该为类的所有对象共享,此时可定义类的静态数据成员。以关键字static开头。静态数据成员必须初始化,且在类外进行初始化。16使用this指针、动态内存分配7、使用this指针每个对象都有一个指向自身的指针,该指针称为this指针。每个对象都可以通过使用this关键字来确定其自身的地址。8、动态内存分配动态内存是在程序执行时才可以申请、使用和释放的内存。也就是存放动态数据的内存区域。存放动态数据的区域称为“堆”,动态内存也称为堆内存。动态内存不能通过变量名来使用,而只能通过指针来使用。在实现动态内存分配方面,使用运算符new和delete。使用new[]创建的数组,必须使用delete[]来删除。179、构造函数和析构函数变量在定义时可以进行初始化,类的对象在定义时也可进行初始化。使用构造函数(ConstructorFunction)来完成对象的初始化,为对象的成员分配内存。对象在生存期结束时,要释放对象所占的存储空间。使用析构函数(DestructorFunction)来完成。18构造函数的特性构造函数是类的一个特殊的成员函数。具有以下特性:(1)构造函数的名称与它所属的类名相同。(2)构造函数无返回类型(void类型都是非法的),不能带有return语句;(3)在创建对象时,由系统自动调用构造函数。为对象分配内存。(4)通常构造函数被定义在公有部分。(5)如果程序员没有定义构造函数,系统会自动生成一个不带任何参数的构造函数;(6)构造函数可以重载。定义带缺省参数的构造函数,就不能定义无参数的构造函数。19析构函数的特性析构函数特性如下:(1)析构函数的名称由“~”和类名组成。(2)析构函数无返回类型。(3)析构函数没有任何参数。(4)析构函数通常由系统自动调用。一般由一系列delete组成。释放对象所占的内存空间。(5)通常析构函数被定义在公有部分。(6)如果程序员没有定义析构函数,系统会自动生成一个缺省的析构函数。(7)析构函数不能被重载。一个类只允许有一个析构函数。2010、友元函数和友元类使用友元函数或友元类,它有权访问类的私有成员。如果一个友元是一个类,则称为友元类。友元类的所有成员函数都是友元函数。注意事项(1)虽然在类定义体中声明友元函数,但友元函数并不是该类的成员。(2)既可以在类的私有段声明友元,也可以在类的公有段声明友元。(3)友元不具有传递性。例:X是Y的友元,Y是Z的友元,但X并不一定是Z的友元。(4)友元不具有交换性。例:X是Y的友元,并不意味着Y是X的友元。(5)要慎用友元。因为友元关系在一定程度上破坏了信息的隐藏。尤其慎用友元类。如果一个类的多个成员函数都需要频繁使用另一个类的数据成员,则应考虑把这个类作为另一个类的子类的可能性。而不要轻易使用友元。2111、继承当一个类被其他类继承时,被继承的类称为基类,继承其他类的类称为派生类。对于基类的私有成员(Private),派生类及派生类的使用者无权访问;对于基类的公有成员(Public)和保护成员(Protected),可分为三种情况:(1)私有派生:派生类继承基类的公有成员和保护成员,作为自己的私有成员。关键字是private。(2)公有派生:派生类继承基类的公有成员,作为自己的公有成员。派生类继承基类的保护成员,作为自己的包含成员。关键字是public。(3)保护派生:派生类继承基类的公有成员和保护成员,作为自己的保护成员。关键字是protected。22派生类的构造函数和析构函数1、执行原则。当基类和派生类都具有构造函数和析构函数时,将按顺序(先基类后派生类)执行构造函数,而按相反的顺序执行析构函数。2、派生类构造函数。当在定义派生类对象时,其相应的基类对象需要调用带参数的构造函数,我们就必须定义派生类的构造函数。定义格式如下:派生类构造函数名(参数列表):基类名(参数列表){//构造函数执行体;}2312、多重继承与虚基类(1)多继承一个派生类有多个直接基类,被称为多继承。多继承的定义格式如下:class派生类名:访问权修饰符基类名1,访问权修饰符基类名2,...{//成员列表};(2)虚基类用虚基类来解决二义性问题。使得在派生类中只有公共基类的一个数据副本。虚基类的关键字是virtual。2413、组合组合也称为整体-部分关系。因为组合是一个类把其他类的对象作为自己的成员。所以在C++中,用对象或指向对象的指针作为类的数据成员。在外层类的构造函数参数表后面写一个冒号,冒号后面再写上对象成员名及初值表。类似于继承。2514、多态与虚函数借助于虚函数和指针。实现运行时多态。“统一界面,多种实现版本”。需要注意的问题(1)必须首先在基类中声明虚函数。(2)派生类中与基类的虚函数原型完全相同的成员函数,即使在说明时前面没有冠以关键字virtual,也自动成为虚函数。函数原型相同:指函数名,返回类型
本文标题:面向对象设计及UML语言总结2012
链接地址:https://www.777doc.com/doc-4260832 .html