预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共27页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第7讲面向对象编程技术(一) (VERSION1.2) 他们总说时间会改 变一切,但是你真 的应该自己去改变 它们。 安迪.沃霍尔 李英冰副教授 武汉大学测绘学院 http://ybli.whu.edu.cn ybli88@gmail.com 1 李英冰 程序秘方—代码开发的方法和过程Yb.Li 配料表操作说明 串程序员 1将程序员腌泡在培训中。添加语言和目标 平台,并用项目经理调味 1到2茶匙语言 快速地搅拌,直到材料很好地混合在一起 1个项目平台 添加一些时髦词汇来增加味道 1个项目经理 均匀地撒上运气,然后放在一个软件烤箱 1小撮运气 内进行烘烤,一直烤到截止日期 1小袋脱水培训 取出来,倒在网架上晾干,然后端给顾客 各种行业时髦词汇 2 李英冰 Yb.Li 主要内容 1.面向对象编程基本思想 2.构造函数 3.析构函数 4.继承 5.多态 3 李英冰 Yb.Li 面向对象编程基本思想 结构化程序设计:算法+数据结构=程序 面向过程,一个程序是由多个过程(函数)组成 面向对象编程(OOP) 任何东西在OOP中都是通过对象组织起来 面向对象=对象+类+继承+通信 对象(Object)是现实世界中事物特征的 抽象实体 每一类事物都有自己特定的属性和行为 对象=数据+作用于这些数据上的操作 4 李英冰 OOP的4个基本特征Yb.Li 抽象 指对具体问题(对象)进行概括,抽出公共属性和行为并加 以描述。抽象包括数据抽象和代码抽象 封装 把对象的数据(属性)和操作(行为)包装在一个类中。决定 哪些属性和行为只用于内部状态,哪些在外部可见。 继承 一个新类可以从现有的类派生而来。新类继承了现有类 的特性,包括一些属性和行为,并且可以修改或增加新 的属性和行为,使之适合具体的需要 多态性 多态性是指类中具有相似功能的不同函数使用同一个名 称来实现,并允许不同类的对象对同一消息作出的响应 不相同 5 李英冰 2.类与对象Yb.Li 为什么要创建类? 类是一组具有相同数据 对现实世界中的对象建模结构(属性)和相同操作 (行为)的对象的集合 降低/隔离复杂度 将对象的属性抽象为数 隔离实现细节 据成员(又称成员变量), 限制变化所影响的范围将对象的行为抽象为成 员函数(又称为方法),并 隐藏全局数据 对它们进行封装。 让参数传递更顺畅 对象是类的一个实例。 让代码更易于重用对象和类的关系相当于 把相关操作放到一起变量和变量类型的关系 6 李英冰 Yb.Li 类的声明 类的声明 class-modifersclassclassname {……} class-modifers为类的修饰符:New;Public;Protected; Internal;Private;Abstract;Sealed 合理设定成员的访问控制权限(公有/私有 成员) 7 staticvoidMain(string[]args)李英冰 类的示例Yb.Li { Timetm=newTime(); classTimetm.SetTime(11,23,36);Console.Write( {"Thetimeis:");tm.ShowTime(); } inthour,minute,second; publicvoidSetTime(inth,intm,ints) {hour=h;minute=m;second=s;} publicvoidShowTime() {Console.WriteLine(“{0}:{1}:{2}”,hour,minute,second);} } 8 李英冰 Yb.Li 说明 成员函数和数据成员 让类中子程序的数量尽可能少 减少类中所调用不同子程序的数量 对其他类的子程序的调用要尽可能少 尽量减少类与类之间合作的范围 应该避免的类 避免创建万能类 消除无关紧要的类 避免用动词命名的类 9 李英冰 3构造函数Yb.Li 构造函数是一种特殊的成员函数,它是在创建 对象时(声明或new动态创建)系统自动调用 的成员函数 构造函数的名称与类名相同 构造函数没有明确的返回类型。 构造函数总是Public类型的 如果可能,应该在所有的构造函数中初 始化所有的数据成员 10 李英冰 Yb.Li 构造函数的示例 classmyClass { publicstrings; publicmyClass(){s="youarewelcome“;} } …… staticvoidMain(string[]args)