面向对象基础-类与对象.ppt
《面向对象基础-类与对象.ppt》由会员分享,可在线阅读,更多相关《面向对象基础-类与对象.ppt(41页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、类与对象类与对象C#面向对象程序设计案例教程1教学目标教学目标(1)初步理解面向对象的编程思想;初步理解面向对象的编程思想;(2)能够区分类和对象,理解类和对象之间的关系;能够区分类和对象,理解类和对象之间的关系;(3)学会自定义类,学会创建与使用对象;学会自定义类,学会创建与使用对象;(4)能区分字段与属性、属性与方法;能区分字段与属性、属性与方法;(5)掌握实例构造函数重载及其应用,了解析构函数;掌握实例构造函数重载及其应用,了解析构函数;(6)能区分实例成员与静态成员,能定义并正确调用两种能区分实例成员与静态成员,能定义并正确调用两种成员;成员;(7)掌握对象作为方法参数在值传递方式和引
2、用传递方式掌握对象作为方法参数在值传递方式和引用传递方式下的区别。下的区别。2面向对象基本概念面向对象基本概念(10.30)对象对象程序中的对象来源于生活,现实生活中的某个实体经程序中的对象来源于生活,现实生活中的某个实体经过抽象、建模后就变成程序中的一个对象,即用特过抽象、建模后就变成程序中的一个对象,即用特定符号描述的对象。定符号描述的对象。程序中的对象有共同的结构模型,包括对象名、一组程序中的对象有共同的结构模型,包括对象名、一组属性、一组操作,其中属性、一组操作,其中属性属性描述对象的静态特征,描述对象的静态特征,表示对象的状态,是类的数据成员;表示对象的状态,是类的数据成员;操作操作
3、(或称方法或称方法)描述对象的行为,是对象的动态特征,通常是对数描述对象的行为,是对象的动态特征,通常是对数据成员进行操作的方法。据成员进行操作的方法。3类现现实实生生活活中中的的对对象象往往往往可可以以根根据据共共性性进进行行归归类类,一一组组具具有有共同特征和行为的相似对象归为一类。共同特征和行为的相似对象归为一类。程程序序设设计计中中,把把一一组组相相似似对对象象的的共共同同特特征征抽抽象象出出来来并并存存储储在一起,就形成了类。在一起,就形成了类。从从具具体体对对象象到到类类实实际际上上是是一一个个概概括括的的过过程程,把把对对象象的的共共同同特特征征抽抽取取出出来来,形形成成了了类类
4、,如如果果再再对对这这个个类类用用计计算算机机语语言言加加以以描描述述,就就形形成成了了程程序序中中的的类类,这这个个过过程程称称为为抽象抽象。4面向对象面向对象(类类)的几个特征的几个特征1封装封装封封装装实实际际上上是是在在类类的的设设计计过过程程中中完完成成的的,类类对对外外部部提提供供统统一一的的接接口口方方法法,类类的的内内部部相相当当于于一一个个黑黑盒盒,类类的的使使用用者者并并不不知知道道类类的的内内部部实实现现细细节节,只只要要知知道道怎怎么么调调用用这这些接口方法就够了。些接口方法就够了。2继承继承现现实实世世界界中中有有很很多多事事物物之之间间存存在在一一般般化化与与特特殊
5、殊化化的的关关系系,这这都都是是由由于于事事物物之之间间存存在在着着“继继承承”关关系系,这这种种思思想想反反映映在在程程序序设设计计中中,就就是是继继承承,即即一一个个类类从从另另一一个个类类获获得得了了已已有有的的基基本本特特征征,并并在在此此基基础础上上增增加加了了自自身身的的一些特殊特征。一些特殊特征。5面向对象的几个特征面向对象的几个特征3多态多态在在面面向向对对象象程程序序设设计计中中,多多态态是是指指用用户户对对一一个个对对象象进进行行一一个个操操作作,但但具具体体的的动动作作却却取取决决于于这这个个对对象象的的类类型型,即即对对不不同同的的对对象象执执行行相相同同的的操操作作会
6、会产产生生不不同同的的结结果果。从从多多态态发发生生的的时时机机上上分分,多多态态可可以以分分为为编译时多态和运行时多态两种。编译时多态和运行时多态两种。6类类 和和 对对 象象【案例简介】l 定义一个猫类,有姓名,品种,毛色,体重,出生日期等属性,以及打招呼,喵喵叫,抓老鼠的行为.创建并使用这个类的实例。【案例目的】(1)学会自定义类;(2)学会用自定义类创建、实例化对象,通过对象引用成员。【技术要点】掌握类定义的结构框架。78类类 和和 对对 象象代码及分析代码及分析定义了一个猫类定义了一个猫类Cat,在在Main()方法中声明并实例化两个猫类对象。方法中声明并实例化两个猫类对象。9相关知
7、识及注意事项相关知识及注意事项1类的定义类的定义类定义的一般格式如下:类定义的一般格式如下:class private protected public Public:不限制对该类的访问不限制对该类的访问Protected:受保护的,表示该类只能被这个类的成员或派生类成员访问:受保护的,表示该类只能被这个类的成员或派生类成员访问Private:私有的:私有的,只能被该类的成员访问。只能被该类的成员访问。102对象的定义与使用对象的定义与使用1)对象的声明与实例化对象的声明与实例化类名类名 对象名;对象名;/声明对象声明对象对象名对象名new类名类名();/实例化对象实例化对象例如,创建一个名为
8、例如,创建一个名为catBobi的猫类对象代码为:的猫类对象代码为:Cat catBobi;catBobi new Cat();也可以把对象声明与实例化合为一步进行:也可以把对象声明与实例化合为一步进行:Cat catBobi=new Cat();112.对象的定义与使用对象的定义与使用2)2)对象的使用对象的使用在面向对象中,对象不是一个被动接受处理的数据,而在面向对象中,对象不是一个被动接受处理的数据,而是一个拥有数据并能主动提供服务的实体。一个对象被是一个拥有数据并能主动提供服务的实体。一个对象被创建后,就可以通过对象本身来获取对象状态或调用对创建后,就可以通过对象本身来获取对象状态或调
9、用对象行为。象行为。调用对象成员的格式为:调用对象成员的格式为:对象名对象名.对象成员对象成员123类成员的访问修饰符类成员的访问修饰符类的成员的访问修饰符及其含义修饰符修饰符说明说明public该成成员可以被本可以被本类及本及本类以外的所有以外的所有类访问private该成成员只能在本只能在本类内部被内部被访问protected该成成员只能被本只能被本类及本及本类的派生的派生类访问internal该成成员只能在所在的程序集内部只能在所在的程序集内部访问internal protected该成成员可以在所在的程序集内部或本可以在所在的程序集内部或本类的派生的派生类中被中被访问13思考一思考一l
10、年龄是公有变量,可以随时访问随时赋年龄是公有变量,可以随时访问随时赋值,可年龄不应该为负数,如果输入也值,可年龄不应该为负数,如果输入也可以编译,不出现语法错误。一般我们可以编译,不出现语法错误。一般我们要对数据进行合法性检查,避免出现严要对数据进行合法性检查,避免出现严重后果。我们可以把重后果。我们可以把age设置成私有变量,设置成私有变量,在类内部检查合法性,在通过公有函数在类内部检查合法性,在通过公有函数访问。例如:访问。例如:14l/函数用来为函数用来为age变量赋值变量赋值 lpublic void SetAge(int ageValue)l l if(ageValue=0)l ag
11、e=0;l elsel age=ageValue;l l/读取变量读取变量age的值的值l public int GetAge()l l return age;l 15思考二思考二l以上方法可以解决以上方法可以解决age的访问问题,但实的访问问题,但实际上人们习惯把际上人们习惯把age当作一个变量,而不当作一个变量,而不是通过函数访问的方式得到。是通过函数访问的方式得到。lC#为解决这类问题,专门设计一种特殊为解决这类问题,专门设计一种特殊的语法的语法-属性。在属性中,已经定义了属性。在属性中,已经定义了get与与set两个访问器,用来读取以及设两个访问器,用来读取以及设置变量的值。例如置变量
12、的值。例如16lpublic int agellgetreturn age;lsetif(value=0)lage=0;lelselage=valuel174类的属性类的属性1)1)为什么使用属性为什么使用属性2)2)除了添加公有方法读写字段外,除了添加公有方法读写字段外,C#C#能否提供一种能否提供一种更有效的访问形式,既能读写字段,同时又保证更有效的访问形式,既能读写字段,同时又保证数据成员能被更好地隐藏和保护起来呢?那就是数据成员能被更好地隐藏和保护起来呢?那就是使用属性。属性是类的一种特殊成员,它具有字使用属性。属性是类的一种特殊成员,它具有字段的形式,又具有方法的本质段的形式,又具有
13、方法的本质 2)2)怎样定义属性怎样定义属性属性的定义格式为属性的定义格式为:修饰符修饰符 类型类型 属性名属性名 set set /写入数据写入数据 get get /读取数据读取数据 18作业:作业:l1.类的定义与对象的实例化类的定义与对象的实例化仿照课堂上的案例,定义猫类,以及两个对象的实例化代码定义一个Person类,有姓名,年龄,性别,职业等属性,设计使用set与get访问器获取年龄以及性别。l2.windows应用程序应用程序1920下课下课21using System;using System;class Persons string name;int age;string g
14、ender;string work;public string Name get return name;set name=value;public int Age get return age;set if(value=0)age=0;else age=value;public string Gender get return gender;set if(value=男男|value=女女)gender=value;else gender=男男;public string Work get return work;set work=value;定义一个描述个人情况的类定义一个描述个人情况的类
15、Person如下:如下:22构造函数构造函数:每当生成每当生成类的的对象象时,自,自动调用用类的构造函数。的构造函数。因此可把初始化工作放到构造函数中完成。因此可把初始化工作放到构造函数中完成。构造函数和构造函数和类名相同,没有返回名相同,没有返回值。例如可定例如可定义PersonsPersons类的构造函数如下:的构造函数如下:public public Persons(stringPersons(string Name,intName,int Age)Age)name=Name;name=Name;age=Age;age=Age;当用当用PersonsPersons OnePersonOn
16、ePerson=new=new Persons(Persons(张五五,20)20)语句生成句生成PersonPerson类对象象时,将自,将自动调用以上构造函用以上构造函数。数。23v构造函数重载构造函数重载 在在C#C#语言中,同一个类中的函数,如果函数名相同,语言中,同一个类中的函数,如果函数名相同,而参数的类型或个数不同,认为是不同的函数,这而参数的类型或个数不同,认为是不同的函数,这叫函数重载。仅返回值不同,不能看作不同的函数。叫函数重载。仅返回值不同,不能看作不同的函数。这样,可以在类定义中,定义多个构造函数,名字这样,可以在类定义中,定义多个构造函数,名字相同,参数类型或个数不同
17、。根据生成类的对象方相同,参数类型或个数不同。根据生成类的对象方法不同,调用不同的构造函数。例如可以定义法不同,调用不同的构造函数。例如可以定义PersonPerson类没有参数的构造函数如下:类没有参数的构造函数如下:24public Person()public Person()name=“name=“张三三”;”;age=12;age=12;用语句用语句Person OnePerson=new Person(Person OnePerson=new Person(李李四四,30),30)生成对象时,将调用有参数的构造函生成对象时,将调用有参数的构造函数,而用语句数,而用语句Person
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 基础
限制150内