面向对象分析与设计 (2)优秀PPT.ppt
《面向对象分析与设计 (2)优秀PPT.ppt》由会员分享,可在线阅读,更多相关《面向对象分析与设计 (2)优秀PPT.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象分析与设计第一页,本课件共有36页 因此,我们在前面学习了类的定义和构造因此,我们在前面学习了类的定义和构造设计的基础上,应该进一步研究类之间的关系,设计的基础上,应该进一步研究类之间的关系,特别地应该学习类之间的继承性和派生性,以特别地应该学习类之间的继承性和派生性,以全面掌握全面掌握C+面向对象程序设计方法。面向对象程序设计方法。n本章的学习内容本章的学习内容继承的概念继承的概念派生类的定义派生类的定义 派生类的构造函数和析构函数派生类的构造函数和析构函数继承属性的访问权限控制继承属性的访问权限控制多继承的概念多继承的概念 第二页,本课件共有36页n类的继承:类的继承:就是根据就是
2、根据一个类创建一个新类一个类创建一个新类的过程。的过程。n类的派生:类的派生:从已有类从已有类产生新类的过程就是产生新类的过程就是类的派生。类的派生。n通常将用来派生新类通常将用来派生新类的类称为的类称为基类基类(或(或父父类类),而将派生出来而将派生出来的新类称为的新类称为派生类派生类(或(或子类子类)。n新类自动具有已有类新类自动具有已有类的所有成员,并可根的所有成员,并可根据需要添加更多的成据需要添加更多的成员。员。4.1 继承、派生和类的层次关系继承、派生和类的层次关系第三页,本课件共有36页4.2 派生类派生类 n派生类派生类是在继承基类的属性和是在继承基类的属性和操作的基础上增添新
3、的属性和操作的基础上增添新的属性和操作而产生的新类。操作而产生的新类。n派生类是基类的特殊子类,基派生类是基类的特殊子类,基类是抽取派生类的主要属性和类是抽取派生类的主要属性和操作而得到的抽象描述。派生操作而得到的抽象描述。派生类继承了基类的所有特性,但类继承了基类的所有特性,但不等同于基类,否则就没有派不等同于基类,否则就没有派生的必要了。生的必要了。n继承关系体现了特殊与一般的继承关系体现了特殊与一般的关系。关系。第四页,本课件共有36页n继承的一个作用继承的一个作用就是就是允许派生类在继承父允许派生类在继承父类共性的基础上,增类共性的基础上,增加新的属性和操作来加新的属性和操作来实现特殊
4、功能;实现特殊功能;另一另一个作用是代码重用个作用是代码重用,从基类派生子类,子从基类派生子类,子类无需修改基类的代类无需修改基类的代码,就可以直接拥有码,就可以直接拥有基类的成员,然后增基类的成员,然后增加少量代码就可以实加少量代码就可以实现特殊功能,这就实现特殊功能,这就实现了代码的重用。现了代码的重用。第五页,本课件共有36页class:;其中,其中,有有三种:公有继承、私三种:公有继承、私有继承和保护继承,有继承和保护继承,分别用关键字分别用关键字public、private和和protected表示。缺省情况下为表示。缺省情况下为私有继承。私有继承。class person /基类基
5、类protected:char name11;char sex;int age;public:char*GetName();int GetSex();int Getage();class Student:public personprivate:char id9;float score;public:float GetScore();4.2.1 派生类的定义派生类的定义第六页,本课件共有36页【例例4.1】派生类的定义派生类的定义 class A /定义一个基类定义一个基类A,A也称为超类、父类也称为超类、父类 int i;public:void set_i(int n)i=n;int get
6、_i()return i;class B:public A /下划线处说明类下划线处说明类B将继承类将继承类A的公有成员的公有成员int j;public:void set_j(int n)j=n;int Multiply()return j*get_i();/可调用基类的可调用基类的get_i();/B不能访问不能访问A类的私有成员类的私有成员i。Main()B ob;ob.set_i(10);/初始化初始化ii,B可通过可通过A类的类的set_i()访问访问iob.set_j(4);/初始化初始化B中的中的j coutob.Multiply();/运行结果为运行结果为40return 0;
7、第七页,本课件共有36页n派生类的生成包含派生类的生成包含三个步骤:三个步骤:(1 1)吸收基类成员)吸收基类成员 吸收基类的部分成吸收基类的部分成员员,不吸收构造函数不吸收构造函数和析构函数。它是和析构函数。它是一个重用过程。一个重用过程。(2 2)改造基类成员)改造基类成员 一是通过派生类定一是通过派生类定义时的继承方式来义时的继承方式来控制;控制;二是通过定义同名二是通过定义同名成员屏蔽基类成员。成员屏蔽基类成员。它是一个扩充过程。它是一个扩充过程。4.2.2 派生类的生成过程派生类的生成过程 class person /基类基类 protected:char name11;char s
8、ex;int age;public:void Show();class Student:public personprivate:float score;public:void Show()person:Show();coutscoreendl;第八页,本课件共有36页(3 3)添加派生类新成员)添加派生类新成员 仅仅继承基类的成仅仅继承基类的成员是不够的,需要在员是不够的,需要在派生类中添加新成员,派生类中添加新成员,以保证派生类在功能以保证派生类在功能上有所发展。同基类上有所发展。同基类的构造函数和析构函的构造函数和析构函数是不能被继承的,数是不能被继承的,需要加入新的构造函需要加入新的构
9、造函数和析构函数完成一数和析构函数完成一些特别的初始化和扫些特别的初始化和扫尾清理工作。尾清理工作。class person /基类基类 protected:char name11;char sex;int age;public:void Show();class Student:public personprivate:float score;public:void Show()person:Show();coutscoreendl;第九页,本课件共有36页 4.3 4.3 访问权限控制访问权限控制 从派生类的定义格式可知,有三种继承方式:从派生类的定义格式可知,有三种继承方式:公有、私有和
10、保护。因此,派生类对基类成员公有、私有和保护。因此,派生类对基类成员的访问权限控制也从三个方面考虑:的访问权限控制也从三个方面考虑:(1)(1)公有继承的访问权限控制公有继承的访问权限控制;(2)(2)私有继承的访问权限控制私有继承的访问权限控制;(3)(3)保护继承的访问权限控制保护继承的访问权限控制;第十页,本课件共有36页4.3.1 公有继承的访问权限控制公有继承的访问权限控制 当类的继承方式为当类的继承方式为公有继承时公有继承时:(1)在派生类中,基类的公有成员和保护成员在派生类中,基类的公有成员和保护成员被继承后仍然作为派生类的公有成员和保护被继承后仍然作为派生类的公有成员和保护成员
11、,派生类的成员可以直接访问它们成员,派生类的成员可以直接访问它们;(2)基类的私有成员无法继承为派生类的私基类的私有成员无法继承为派生类的私有成员或其他成员,因此派生类的成员有成员或其他成员,因此派生类的成员无法直接访问基类的私有成员。无法直接访问基类的私有成员。(3)在类外,派生类的对象只可以访问继在类外,派生类的对象只可以访问继 承承下来的基类公有成员。下来的基类公有成员。第十一页,本课件共有36页【例例4.1】公有继承的访问权限控制公有继承的访问权限控制class A /定义一个基类定义一个基类A,A也称为超类、父类也称为超类、父类 int i;public:void set_i(int
12、 n)i=n;int get_i()return i;class B:public A /下划线处说明类下划线处说明类B将继承类将继承类A的公有成员的公有成员int j;public:void set_j(int n)j=n;int Multiply()return j*get_i();/可调用基类的可调用基类的get_i();/B不能访问不能访问A类的私有成员类的私有成员i。Main()B ob;ob.set_i(10);/初始化初始化i,B可通过可通过A类的类的set_i()访问访问iob.set_j(4);/初始化初始化B中的中的j coutob.Multiply();/运行结果为运行结
13、果为40return 0;第十二页,本课件共有36页n当类的继承方式为当类的继承方式为私有继承时私有继承时:(1)在派生类中,基类的公有成员和保护成员被继承在派生类中,基类的公有成员和保护成员被继承以后将作为派生类的私有成员,派生类的成员函数可以后将作为派生类的私有成员,派生类的成员函数可以直接访问它们以直接访问它们;(2)基类的私有成员没有被继承过来,因此派生类的基类的私有成员没有被继承过来,因此派生类的成员无法访问基类的私有成员成员无法访问基类的私有成员;(3)在类外,无法访问派生类对象中从基类继承的所在类外,无法访问派生类对象中从基类继承的所有成员。有成员。(4)私有继承之后,基类的成员
14、再也无法在以后的派生私有继承之后,基类的成员再也无法在以后的派生类中发挥作用,出于这种原因,一般不使用私有继承方类中发挥作用,出于这种原因,一般不使用私有继承方式。式。4.3.2 私有继承的访问权限控制私有继承的访问权限控制 第十三页,本课件共有36页例例4-2 私有继承举例私有继承举例#include#include class Person private:char name11;char sex;protected:int age;public:Person(const char*Name,int Age,char Sex);char*GetName()return name;int G
15、etage();int GetSex;第十四页,本课件共有36页class Student:private Personprivate:char id9;float score;public:Student(char*pName,int Age,char Sex,char*pId,float Score)void Display();void Student:Display()cout“name:”GetName()t/访问变为私有的基类成访问变为私有的基类成 员函数员函数 cout“id:”idt;/直接访问本类私有成员直接访问本类私有成员 cout“age:”aget;/访问基类的保护成员
16、访问基类的保护成员(变为私有的变为私有的)cout“score:”scoreendl;void main()Student s2(“wang min”,20,m,”03410102”,80);s2.Display();第十五页,本课件共有36页4.3.3 保护继承的访问权限控制保护继承的访问权限控制 当类的继承方式为当类的继承方式为保护继承时保护继承时:(1)(1)在派生类中,基类的公有成员和保护成员被继承以在派生类中,基类的公有成员和保护成员被继承以后将作为派生类的保护成员,派生类的成员可以直接后将作为派生类的保护成员,派生类的成员可以直接访问它们访问它们;(2)(2)基类的私有成员没有被继
17、承,因此派生类的成员无法访基类的私有成员没有被继承,因此派生类的成员无法访问基类的私有成员。问基类的私有成员。(3)(3)在类外,无法访问派生类对象中从基类继承的所有成员。在类外,无法访问派生类对象中从基类继承的所有成员。(4)(4)与私有继承不同的是与私有继承不同的是,保护继承还没有完全终止基类的保护继承还没有完全终止基类的功能功能,即保护继承可以传递部分基类成员给派生类的派生类即保护继承可以传递部分基类成员给派生类的派生类,而私有继承不可以。如果合理地利用保护继承而私有继承不可以。如果合理地利用保护继承,就可以就可以在类的复杂层次关系中为共享访问与成员隐蔽之间找到一在类的复杂层次关系中为共
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象分析与设计 2优秀PPT 面向 对象 分析 设计 优秀 PPT
限制150内