您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > c#.net面向对象程序设计(构造函数)-初始化日期类的年月日
浙江工贸职业技术学院黎浩宏项目三面向对象程序设计模块3初始化日期类的年月日一、教学目标1.能理解和掌握类的构造方法以及构造方法的重载。浙江工贸职业技术学院黎浩宏C#.net程序设计课件中是以vs2005为界面介绍的,开发环境如果是vs2008或vs2010,操作方法都基本一致,开发环境只是界面有少许不同,基本知识相同,不影响读者学习本课程。课件配套教材:c#.net程序设计出版社:浙江大学出版社主编:黎浩宏课件例子源代码下载网址:或在百度搜索:“c#.net程序设计配套源代码(前三章)”浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日二、工作任务在用例3-1的Date类要设置日期时,必须调用方法setDate来设置类的年月日数据,如果创建好Date对象的同时,就能直接将该对象的年月日数据设置好,实现对象数据的初始化,可以利用构造方法实现。我们现在对例3-1的Date类扩充,程序运行时的效果如图3-8所示。浙江工贸职业技术学院黎浩宏浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日三、相关实践知识启动visualstudio2005开发工具然后创建一个新的c#.netwindows应用程序。(一)创建自定义类1.创建类依照模块1相关实践知识创建Date类,然后编写Date类代码,代码如下:浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceWindowsApplication1{classDate{privateintyear;privateintmonth;privateintday;publicDate(inty,intm,intd){year=y;month=m;day=d;}浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日publicvoidsetDate(inty,intm,intd){this.year=y;this.month=m;day=d;}publicstringToDateString(){returnstring.Format({0}/{1}/{2},this.year,this.month,this.day);}}}浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日在Date类中,定义了一个新的方法Date,该方法名请注意,和类名一样,并且在定义格式中没有返回值类型,这是个构造方法,其格式要求这样。浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日(二)设计窗体及相关控件属性窗体上共添加2个标签(Label),控件属性都取默认值。(三)编写事件处理方法1.编写窗体的Load事件处理方法程序代码如下:privatevoidForm1_Load(objectsender,EventArgse){Datebirthday1,birthday2;this.Text=日期类窗体;birthday1=newDate(1985,10,2);birthday2=newDate(1986,4,28);label1.Text=李明的生日是:+birthday1.ToDateString();label2.Text=萧微的生日是:+birthday2.ToDateString();}浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日请和例3-1的load事件代码比较,第5、6行创建对象的代码格式变了,例3-1中创建对象的代码为newDate(),而此处创建对象的代码中有参数,并且没有用到setDate()方法,而效果和例3-1相同,其实就是利用了第5、6行代码实现了对类中的年月日三个数据的初始化,通过Date类代码可知,是为类的year,month和day三个类成员变量赋了值。浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日四、相关理论知识(一)构造方法构造方法的作用是完成对象的初始化工作。类的构造方法定义格式如下:[访问修饰符]class类名{……public构造方法名(参数表){//构造方法内的代码}……..}浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日首先要记住,构造方法是一种方法,其定义格式遵循以前我们所讲过的方法的知识,同时它是一种特殊的成员方法,和普通的方法相比,其有如下几个特殊性:(1)构造方法名称必须和类名完全相同,大小写也应完全一样,普通方法名可以由用户任意取。如本模块中Date类的构造方法定义格式为publicDate(inty,intm,intd),其方法名为Date,和类名完全相同。(2)构造方法在创建对象时,系统会自动调用构造方法,调用格式同样要和定义格式保持一致,而普通方法定义完毕后,必须有调用方法代码才能调用方法。浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日如下面代码:Datebirthday1;birthday1=newDate(1985,10,2);label1.Text=李明的生日是:+birthday1.ToDateString();birthday1.setDate(1986,4,28);label2.Text=萧微的生日是:+birthday2.ToDateString();第2行代码用new创建对象时,构造方法的调用格式和定义格式保持一致,也要有3个实际参数,并且类型要保持一致。当第2行代码被执行后,创建了birthday1对象,该对象的年月日数据就是1985,10,2,构造方法被自动调用了,而当第4行代码被执行后,birthday1对象的年月日数据被设置成1986,4,28。,读者可以用调试方法调试一下,跟踪程序运行过程。浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日(3)构造方法没有返回类型和返回值,而普通方法如果没有返回值,一定要将返回类型设置为void。(4)构造方法一般是public修饰符,即构造方法一般都是公用的。(5)每个类至少有一个构造方法。如果类中没有自定义的构造方法,系统会提供一个缺省的构造方法,缺省的构造方法是没有参数的。此时,用new创建对象时,就用我们常用的格式创建对象。如例3-1中的代码birthday1=newDate();这里创建对象时就自动调用了缺省的构造方法,应当没有参数。浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日(二)重载构造方法构造方法也可以重载,当创建类的对象时,c#.net会根据构造方法的调用格式自动调用相应的构造方法。例3-2重载Date类构造方法。1.usingSystem;2.usingSystem.Collections.Generic;3.usingSystem.Text;4.namespaceWindowsApplication15.{6.classDate7.{8.privateintyear;9.privateintmonth;10.privateintday;11.publicDate()12.{13.year=1983;14.month=4;15.day=5;16.}浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日17.publicDate(inty,intm,intd)18.{19.year=y;20.month=m;21.day=d;22.}23.publicvoidsetDate(inty,intm,intd)24.{25.this.year=y;26.this.month=m;27.day=d;28.}29.publicstringToDateString()30.{31.returnstring.Format({0}/{1}/{2},this.year,this.month,this.day);32.}33.}34.}浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日上面代码中,在类中定义了2个构造方法,分别是11行到16行的构造方法Date(),这是个无参构造方法,17行到22行的有3个参数的构造方法。如果有下面代码:Datebirthday1,birthday2;this.Text=日期类窗体;birthday1=newDate(1985,10,2);birthday2=newDate();label1.Text=李明的生日是:+birthday1.ToDateString();label2.Text=萧微的生日是:+birthday2.ToDateString();浙江工贸职业技术学院黎浩宏模块3初始化日期类的年月日注意第3、4行代码,其创建对象时构造方法的格式不同,它们会根据构造方法中实际参数的情况自动调用和其匹配的构造方法,在label1上显示的信息是“李明的生日是:1985/10/2”,而label2上显示的信息是“萧微的生日是:1983/4/5”。
本文标题:c#.net面向对象程序设计(构造函数)-初始化日期类的年月日
链接地址:https://www.777doc.com/doc-4005347 .html