预览加载中,请您耐心等待几秒...
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)