找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 158|回复: 0

面向对象程序设计的重要特征

[复制链接]

210

主题

371

回帖

0

积分

管理员

积分
0
发表于 2013-11-11 14:11:21 | 显示全部楼层 |阅读模式
面向对象的设计方法提出以下全新的概念,如类、封装、继承和多态性等。

1、类与对象
   面向对象的软件技术中,类是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。对象则是类的具体实例。如:海尔洗衣机是洗衣机的具体实例,它具有特定的颜色、进水量,洗涤开关指示等属性,可以有进水、排水、甩干等操作。对象的属性值表示洗衣机目前所处的状态,而这些属性值只能通过类提供的操作来改变。
2、封装和数据隐藏
   类作为一个有机整体,既包含了数据,又包含了对数据的操作。类作为面向对象的程序的组成部分,表现出强烈的可读性和独立性,这种思想就是面向对象的封装性。封装带来的的好处如下:
   1)由于把数据及对这些数据的处理有机的结合在一起,当类中的数据发生改变时,需要进行相应修改的只是类中对数据进行操作的函数(或称为方法),而程序的其他部分不受影响。程序避免了对数据结构设计的依赖,程序的维护也变得更加简单;
   2)对数据起到了一定的保护作用。对象类的私有数据只能由该对象类的函数来修改和访问。
   对象类把对数据如何处理的信息隐藏到了内部,只提供对象对外操作的接口,开发人员只关注对象的操作接口就可以操作对象,这种思想就是数据隐藏。
   封装和数据隐藏提供了代码的可读性、独立性和可维护性,可以提供高质量的C++程序。
3、类的继承
   类的继承是指新的派生类可以继承原有父类的全部或者部分数据和操作的机制,并可以添加新的数据和操作方法。新的派生类又叫子类,原有的父类又叫基类。


洗衣机类


子类:新型洗衣机


属性:  颜色、进水容量洗涤开关指示
操作:  进水、排水、洗涤、甩干


属性:  颜色、进水容量洗涤开关指示
操作:  进水、排水、洗涤、甩干


派生


图:类的继承机制
   举例:想生产一种一边洗衣一边放音乐的新型洗衣机,难道还用从画草图开始吗?显然不必,设计师只要对原有的产品添加新的功能,就会快速开发一种新的产品。这就是类的继承性与重用的具体实例。利用继承,可以非常方便地产生一系列具有一部分共同特征的类,如图所示:













4、多态性
   多态性表示同一事物有多种形态。在面向对象的设计中,多态性是指同一个(或相似的)操作作用于不同的对象上可以有不同的行为,比如“add”操作,作用在实数对象上,表现为两个实数相加;作用在虚数对象上,表现两个虚数相加;作用在字符对象上,表现为两个字符的相加。
   面向对象的C++语言,允许程序员在给不同类的对象发出相同的消息,编译器会做出什么判断,到底执行哪个对象的操作。在编译、链接过程中就可以确定操作的具体对象叫“静态联编”,而在程序运行过程中才动态联编、重载和虚函数实现的。
   C++中,多态性是通过动态联编、重载和虚函数实现的。
5、消息
   对象之间通过消息互相联系,也是通过消息让某一个对象完成一定的功能。如给洗衣机对象发洗涤的操作信号,洗衣机就会执行相应的功能。
   在面向对象的程序设计中,消息名就是对象中定义的操作(或方法),给对象发消息,就是让对象执行某一操作来完成某功能。例如,下面就是在c++中使用消息:
   海尔洗衣机,洗涤(洗涤参数);

C++C的扩充
const关键字:
1、指向常量的指针变量(const用在类型前)
    const int a = 90 ;   //声明a是常量
    const int  *p = &a ;    //指向常量的指针变量
    *p = 20 ;         //错误,*p就是a,已经是常量
2、指针常量(const用在变量前)
    int *const p = &a ;    //p是指针变量,p的地址值是固定的,即p是常量
p = &b      //错误,因为p是常量,不能对其赋值
3、指向常量的指针常量(const用在类型前及变量前)
   const  int  a = 90 ;   
   const  int  *const p = &a ;   //p*p都是常量

内存的管理
  C++语言中使用new运算符申请存储区,使用delete运算符释放存储区,使得内存管理更加可靠和方便(C语言中使用malloc()和free()函数,形式比较繁琐)
  new运算符申请能存放某种类型数据的存储空间,并把该存储空间所在的起始地址送入指针变量中;delete运算符释放指针变量所指向的存储单元。使用的形式如下:
  指针变量 = new数据类型
  delete指针变量

什么是引用?
  C++语言中引入了引用的概念,它使得函数调用变得更加清晰、简单、参数传递效率更高,将引用作为函数参给编程人员带来了很大的灵活性。
  应用可以看做是某一个目标变量的别名,对引用的操作实际上就是对没标变量的操作。
一旦引用目标变量给引用赋初值,引用就被维系在该目标变量上,基因用不会再与别的目标变量建立联系。引用不会被分配内存、所以引用只有声明。引用在声明是必须被初始化。声明并初始化引用的一般格式为:
  数据类型&引用名=目标变量;
   其中,“数据类型”是定义目标变量的类型,而只有“数据类型&”是用来声明引用的。

内联函数
   由于函数调用要进行参数传递、保留现场、控制权的转移等过程,这样会降低成功横粗的执行效率。内联函数的主要功能是强迫C++编译程序直接使用函数体代码替换调用语句,这样可以提高程序的运行速度(因为不再有函数调用的开销),但导致了代码空间的增加。
  内联函数在定义时,其前面加上inline操作符,其一般形式为:
  inline  函数类型  函数名(形参表)
   {
函数体
}
  其中,如果在类的定义中给出了函数的实现,该函数默认为内联函数。
  关于内联函数的几点说明:
  1)内联函数牺牲空间换取时间,以目标代码规模的增加换取时间的开销。通常,将功能简单、规模较小又使用频繁的函数设计为内联函数。
  2)内联函数的定义必须在第一次调用之前。
  3)内联函数一般不能有循环语句和switch语句。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

果子博客
扫码关注微信公众号

Archiver|手机版|小黑屋|风叶林

GMT+8, 2026-2-1 03:27 , Processed in 0.068530 second(s), 20 queries .

Powered by 风叶林

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表