静态成员属性与索引器_第1页
静态成员属性与索引器_第2页
静态成员属性与索引器_第3页
静态成员属性与索引器_第4页
静态成员属性与索引器_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

教学回顾一、面向对象程序设计开发的一般步骤:面向对象分析(OOA)需求分析(以对象为基本单位)面向对象设计(OOD)UML面向对象编程(OOP)属性+name:string+sex:string-age:float服务(动作)+Input:void+Show:voidPerson(类名)面向具象写抽象万事万物皆对象二、面向对象编程的一般步骤:1、选择项目类型(控制台/WINFORM/网站/组件)2、类的定义(与主函数所在类并列或者引用基类库)3、在主函数中设计程序逻辑。4、编辑调试

教学回顾三、类的声明1.格式如下:(类修饰符)class〈类名称〉{}[访问修饰符]类型变量名1声明;[访问修饰符]类型变量名2声明;…//类的构造函数与析构函数[访问修饰符]返回类型<方法的名称([参数]){…//要执行的操作;}//声明类的变量//声明类的方法//声明类构造与析构函数//声明类的名称教学回顾四、对象的应用:

利用new实例化具体化一个类,产生一个对象。对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。类的对象是该类的某一特定实体,即类类型的变量。

格式:类名对象名=new构造函数();

Employeee1=new

Employee();

Employeee2=newEmployee(30);="JeffreyRichter";e1.age=36;

如何解决错误输入?

教学回顾e1.age=-20对象实例化内存状态图&e1&e1.agee1.Input()e1.Show()Employee()Employee(intpara1)栈内存e2.agee2.Input()e2.Show()Employee()Employee(intpara1)堆内存36JeffreyRichter1Employee.id思考题定义一个学生stuId统计已经录入的学生人数,如何实现?如果将学生的年龄输入了16-22岁应该如何实现?一、类的静态成员1、静态的数据成员:格式:static[访问修饰符]成员名;2、静态的构造函数格式:staticpublic类名;3、静态的方法。格式:static[访问修饰符]成员函数名()

{}注:

1、一旦建立静态域,无论建立多少类的实例,内存中只存在一个静态数据的拷贝

2、静态的构造函数与静态的方法只能引用类的静态的数据成员。classEmployee{privateStringName;//fieldisnowprivateprivateInt32Age;//fieldisnowprivatepublicStringGetName(){return(Name);}publicvoidSetName(Stringvalue){Name=value;}publicInt32GetAge(){return(Age);}publicvoidSetAge(Int32value){if(value<=0)

throw(new

ArgumentException("Agemustbegreaterthan0");Age=value;}}

问题解决!上述方法中所示的抽象数据的方式有两个缺点。首先,因为必须实现额外的函数,所以需要编写更多的代码;其次,使用此类型的用户必须调用方法,而不是简单地引用一个字段名。e.SetAge(36);//Updatestheagee.SetAge(-5);//Throwsanexception一、属性与索引器1、定义:属性是类的一种数据结构,它是读写类中私有和受保护的数据的一种途径。属性的读写通过get和set访问器进行。2、举例:classEmployee

{privatestring_Name; privateInt32_Age; publicstringName {get{return(_Name);}

set{_Name=value;}}

publicInt32Age {get{return(_Age);}

set{if(value<=0)

throw(new

ArgumentException(“Agemustbegreaterthan0”);

_Age=value;}}}类使用了与例一中的类功能完全相同的属性。您可以看到,属性稍微简化了代码,更重要的是,它们允许调用如下方式编写代码:

e.Age=36;//Updatestheage

e.Age=-5;//Throwsanexception

利用性质可以让客户访问类的私有状态,就好象访问public的成员变量一样。而这实际上是通过类的成员方法的访问来实现的。

Form1.Height=15;

通过使用性质的方法,可以将类的状态与访问状态的方法分离,从而使设计者可以自由地按需要改变对象的内部状态,而客户代码不需要改变。使用get和set访问器直接访问间接访问隐式调用学生练习定义一个学生类,对类的数据成员设置属性。2、索引器

1、定义:类的索引器与属性功能类似,它可以把类虚拟为一个数组,可以按照数组的方式对类的数据进行访问,从而实现对数据的保护和隐藏。索引器的读写也是通过get和set访问进行,但它们需要参数。索引器3-1usingSystem;class

IndexerExample{

public

string[]stringlist=new

string[10];

public

string

this[intindex] {

get

{

return

stringlist[index]; }

set

{

stringlist[index]=value.ToString(); } }}class

DemoIndexer{

static

void

Main() {

IndexerExample

IndexTest=new

IndexerExample(); IndexTest.stringlist[1]="Sam";

IndexTest[2]="Tom"; System.Console.WriteLine(“IndexTest[1]is是{0}\nIndexTest[2]is是{1}",IndexTest[1],IndexTest[2]);

Console.ReadLine(); }}已调用索引器索引器传统赋值总结类的静态成员一旦建立静态域,无论建立多少类的实例,内存中只存在一个静态数据的拷贝。类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论