欢迎光临深圳市昶丰科技有限公司官方网站!现在的时间是:
 
 
服务与支持
  技术文章
  成功案例
  解决方案
  下载专区
 
  技术文章
类与对象

     对象与类
    1.对象
    我们在前面说过,面向对象程序设计思想更接近人们的思维活动.所以,在此,我们将从现实世界和面向对象程序设计两方面来讨论对象的含义.
    首先我们来看以看在现实世界中,人们是如何认识"对象"和"类"的.
    其实,在现实世界中,对象就是我们认识世界的基本单元,它可以是人,也可以是物,还可以是一件事.整个世界就是由形形色色的"对象"构成的.对象可以是以个有形的具体存在的事物,例如一辆车,一个球,一个学生;也可以是一个无形的,抽象的事件.例如一次演出,一场球赛,一次太空飞行等.对象既可以很简单,也可以很复杂,复杂的对象可以由若干简单的对象构成.
    现实世界中的每个对象都具有一些与其他不同的静态的属性和动态的行为.静态的属性又称为对象的状态,例如吃饭,睡觉,跑步,开车等行为.现实世界中,对象可以表示为:属性+行为.
    现实世界中的对象,具有一下特点
    (1)每一个对象必须有意个名字以区别于其他对象.
    (2)用属性或叫状态来描述它的某些特征.
    (3)有一组操作,每一个操作决定对象的一种行为.
    (4)对象的操作可以分为两类.一类是自身所承受的操作.一类是施加于其他对象的操作.
    在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体.对象可以认为是:数据+操作.对象所能完成的操作表示它的动态行为,通常也把操作称为方法.
    下面我们用一台洗衣机为例,说明对象的某些特点.
    首先,每一台洗衣机有一些区别于其他洗衣机的静态属性,例如出厂日期,机器编号等.
    另外,洗衣机上有一些按键,如启动/暂停,选择等,当人们使用洗衣机时只要根据需要按下"选择(洗衣机的方式)"."启动"或者"暂停"等按钮,洗衣机就会完成相应的任务.这些按键安装在洗衣机的表面,人们通过它们与洗衣机交流,告诉洗衣机应该做什么.我们无法(也没有必要)操作洗衣机内部电路,因为它们被装在洗衣机里面,这对于用户来说是隐蔽的不可见的.
    一个对象很难象一台洗衣机.面向对象的程序中使用一个对象时,只能通过对象与外界的接口来操作它.对象与外界的接口也就是该对象向公众开放的操作.使用对象向公众开放的操作就好像使用洗衣机的按键,只需要知道操作的名字(如洗衣机的按键名)和所需要的参数(用于提供附加信息或设置状态,就像通过"选择"键指定洗衣机的方式),根本部需要知道实现这些操作的方法.事实上,实现对象操作代码和数据是隐藏在对象内部的,一个对象好像是以个黑盒子,表示它内部状态的数据和实现各个操作的代码,都被封装在这个黑盒子内部,在外面是看不见的,更不能从外面去访问或修改这些数据代码.
    使用对象时只需知道它向外界提供的接口形式而不需要知道它的内部是如何实现的.这样,不仅使得对象的使用变得非常简单,方便,而且具有很高的安全和可靠性.可见,面向对象程序设计中的对象来源于现实世界,更接近人们的思维.
   2.类
   在现实世界中,"类"是对一组具有共同的属性特征和行为特征的对象的抽象.例如,张三,李四,老五....,虽然每个人的性格,爱好,职业,特战都不同,但是他们的基本特征相似,都具有相同的生理构造,都能吃饭,说话,走路等,于是把他们统称为"人"类,而具体的每一个人是人类的一个实例,也是一个对象.
   类和对象之间的关系是抽象和具体的关系.类是对多个对象进行综合的结果,对象又是类的个体实物,一个对象是类的一个实例.
   例如,教师晓飞是以个对象.
   对象名:晓飞
   对象属性:
            年龄:25
            学历:大学
            职业:教授
            专业:计算机软件
   对象的操作:
            说着就的年龄
            吃饭
            授课
     一个个的像晓飞这样的教师就构成教师类.类在现实世界中并不真正存在.例如,在地球上并没有抽象的"人",只有一个个具体的人,如张三,李四,老五......同样,世界上没有抽象的教师,只有一个个具体的
   
教师.
    在面向对象程序设计中,"类"忽悠事故具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述.例如"教师"类可由工作证号,姓名,性别,职称等表示其属性的数据项和对这些数据的录入,修改和显示等操作组成.在C++语言中把类中数据称为数据成员多杀多
     在面向对象程序设计中,总是先声明类,再由类生成其对象.类是建立对象的"模板",按照这个模板所建立的一个个具体的对象,就是累的实际例子,通常称为实例.打个比方,手工制作月饼时,先雕刻一个有凹下图案就会出现在月饼上了.这样一个接着一个的,就可以制造出外形一模一样的月饼.这个木模就好比是"类",制造出来的糕点好比是"对象".
     如果用面向对象的观点来分析银行账户问题,着重点在银行账户上,而不是在存款和取款的行为上,那么银行账户就是一个类.现在,我们用C++语言描述银行账户类.读者不必担心不懂C++语法.
     class BankAccount{
           public:
                   void MakeDeposit(float amount);
                   float WithDraw(float amount);
                   bool Transfer(BankAccount & to,float amount);
           private:
                   float balance;
                   float interestYTD;
                   char * owner;
                   int account_number;
     };
    在BankAccount类中,说明的行为是MakeDeposit,WithDraw和Transfer.这些行为对于任何客户来说是很重要的,他们在银行开户的目的就是要进行存款,取款以及转账.正因为每一个顾客(作为类的实例)都可能做这些操作,所以对行为的说明是public,即公有的.同事,在BankAccount类中,还说明了数据balance,interestYTD,owner和account_number,这些数据是私有的,只能在被定义的类中进行操作.
    昨晚银行账户类的实例,银行的每一个银行账户都是以个对象.每个银行账户对象有相同的结构和行为.因此,任何一个银行账户对象都可以使用在类中说明的MakeDeposit等操作,而且每个银行账户对象有相同类型的数据结构balance等.
    在面向对象程序设计中,一个类只在源程序的代码中出现,而并不会在意个正在内存运行的程序中出现,即类只是在编译时存在.对象作为类的实例在运行的程序中出现,并占有内存空间,它是在运行时存在的实体.所以一个类实际上是以种姓的数据类型,当我们要使用一个新的数据类型时,首先要在源程序中说明,而说明部分的代码是不在内存中运行的.在程序中运行的是该类的对象,对象在内存中分配空间,程序的计算任务由对象完成.注意,我们在此必须严格区分说明和定义.前面我们用C++写的程序段是对类BankAccount的说明.在C++的类中,我们把那些行为称为成员函数,而把数据称为数据成员.


                                                                               昶丰科技  http://www.cf-sz.com

上一条新闻:面向对象程序设计的基本概念 2014-10-06
下一条新闻:PIC串口中断中,发送中断后,TXIF一直为1,岂不无法退出? 2014-10-13
友情链接:掉货检测
Copyright © 2013-2015 深圳市昶丰科技有限公司 All Rights Reserved. 粤ICP备2023005930号    深圳网络公司-龙腾盛世提供技术支持
地址:深圳市宝安区福海街道展城社区福园一路35号天瑞工业园A5栋912    电话:0755-29308961    传真:0755-29308961    邮箱:chn_cf@163.com    
热门关键字:掉货检测