- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7.1 面向对象的概念 7.2 Visual FoxPro的面向对象支持 7.3 面向对象的程序设计方法 7.1.1 对象与类 在面向对象程序设计(Object Oriented Programming,简称为OOP)中,对象(Object)是组成程序的构件,就好象在面向过程的结构化程序设计方法(Structured Programming)中的子程序和函数的作用一样。 在结构化程序设计方法中,程序设计人员把一个待求解的问题自顶向下进行分解,以便形成一个个相对简单独立的子问题,然后用子程序或函数来解决这些子问题,用子程序或函数之间的数据通信来模拟这些子问题间的联系,最后把这些子程序或函数装配起来以形成解决问题的完整程序。 1.对象(Object) 在OOP方法中,作为程序构件的“对象”是对现实世界中一个实 体的一种模拟工具。 例如如要设计一个某高校学生学籍管理软件,所涉及到的实体 包括“学生”、“课程”、“专业”等等。要模拟一个活生生的学生,需 要使用一组特征数据(如姓名、籍贯、性别、身高、年龄等等)和 一组行为规则(如该生对待某些外部事件的反映:受到表彰会怎样 反映、受到批评会怎样反映、受到屈辱会怎样反映、遇到同学的困 难时会怎样反映等)来模拟其静态特征和动态特征。 当然,如果对被管理的成千上万个学生都这样一个个完全独立地设计“程序对象”,其工作量将会大得惊人,这实际上是不可能的。OOP方法中,通过另一种称为“类”的工具对这一问题给出了一个巧妙的解决办法。 2.类(Class) “类”是具有相同属性特征和行为规则的多个“对象”的一种统一描述。 对于一个学校的全体学生,描述其特征的数据模式是相同的(当然不同“对象”的特征值会有不同)。行为规则有不同的地方,也有相同的地方。如果我们侧重于描述每个个体对一些诸如观看球赛、对待他人遇到意外事件的反映等等,不同个体间的反映可能很不相同,描述其反映的“方法程序”也许无法共享。但如果将行为的选择加以一些限制,将引起学生反映的外部事件归纳为: (1)一个新学年度到来时,学生的整体反映应该是缴费报 (2)当一个学年度不及格科目超过学校规定时,这一部分学生应 该留级或退学。 (3)完成规定科目的学习并考试合格者,学生的整体反映是毕业 离校。 在一般管理信息系统中,系统的使用者和设计者所关心的问题正是这样一些共性问题而并非一些很个体的问题,这样设计者就可以对个体的行为进行分析、归纳、抽象,形成整个群体的共同行为规范,并把这种共同的行为规范用程序设计语言描述成程序过程,和描述该群体的特征数据模式一起进行封装,这样就完成了OOP方法中一个“类”的设计。 在OOP方法中,“类”是对现实世界的一种高度抽象与概括,而“对象”则是“类”的一个实例,“对象”一定具有其属“类”的共同特征与行为规则,当然一个“对象”还可以具有其属“类”未曾规定的特征和行为规则。 这一点和现实生活是非常相同的,这样的模拟和抽象比较符合人们的思维习惯,这也正是OOP方法具有强大生命力,能够获得越来越多的软件工作者欢迎并得到众多计算机开发商支持的一个基本原因。 3.事件与响应 “事件”是由外部实体作用在“对象”上的一个动作。在现实生活中,某人出生、死亡、其电话震铃、设定的闹钟响了以及过生日又长了一岁等等都称为一个事件,人们都会对这些事件做出一定的反映:如电话震铃就要接听电话、设定的闹钟响了可能就要去干一件什么事情,而过生日后可能要入学了等等。 4.事件代码与方法代码 事件代码与方法代码都是定义在某个对象中的一个程序过程,有时也把两者统称为方法代码。但狭义地说:事件代码可以由一个“事件”触发运行,其过程名与事件名相同,而一般方法程序没有一个与之对应的事件触发,必须靠其他程序调用才能得以运行。因为不能为对象建立新的事件,所以一个对象包含的事件代码是一定的,不能增加,而一个对象中所包含的方法代码是可以任意增加的,就象在一个程序中可以使用任意多个过程和函数一样。 3.1.2 子类与继承 既然“类”是OOP方法中对现实世界进行模拟与抽象的一种工具,而现实世界中的类是分层次的,有大类、中类、小类之分,如人类是地球上所有人的总属类,在这个大的属类中,按肤色可进一步分为黄种人、白种人、黑种人等,不同肤色的人除具有人类这样一些共同的特征外,还具有某个肤色的人种所独有的特征,在对人类进行研究时,如果不注意这些不同的特征,研究就难以深入。 OOP方法中,用“子类”来模拟现实世界中的类的层次问题。
文档评论(0)