net基础-类和对象(二)_第1页
net基础-类和对象(二)_第2页
net基础-类和对象(二)_第3页
net基础-类和对象(二)_第4页
net基础-类和对象(二)_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

类和对象(二)第五章回顾与作业点评类和对象的关系是什么?2/38publicclass&Student{Stringname;charsex;intage;publicStringtoString(){returnname+"\t"+sex+"\t"+age;}publicstaticvoidmain(String[]args){Studentstu=newStudent();name="神仙姐姐";sex='F';age=18;Console.WriteLine(stu);}}Studentstu.sexstu.age实现输出学生信息,下面代码有哪些错误?提问代码阅读预习检查类的方法由哪几部分组成?成员变量和局部变量的区别有哪些?调用带参方法时,有哪些注意事项?3/38提问本章目标会定义和使用类的方法理解变量作用域会定义带参方法会使用带参方法4/38类的方法写出狮子对象的“跑”方法、“叫”方法5/38电动玩具狮子属性:颜色:黄色行为:跑叫按此按钮,狮子开始叫按此按钮,狮子开始跑问题类的方法示例AutoLion类代码实现6/38publicclassAutoLion{Stringcolor="黄色";

public

void

run(){Console.WriteLine("正在以0.1米/秒的速度向前奔跑");}

public

String

bark(){Stringsound="大声吼叫";

returnsound;}}方法体返回值类型方法名称示例如何定义类的方法类的方法定义类的某种行为(或功能)7/38定义类的方法public

返回值类型方法名(){//这里编写方法的主体}步骤一:定义方法名以及返回值类型步骤二:编写方法体语法方法的定义方法的名称方法的主体方法返回值的数据类型方法的返回值两种情况如果方法具有返回值,方法中必须使用关键字return返回该值,返回值类型为该返回值的类型如果方法没有返回值,返回值类型为void8/38publicclassStudent{Stringname="张三";publicStringgetName(){

returnname;}//……}return表达式;作用:跳出方法、返回结果语法publicclassStudent{Stringname="张三";publicvoidgetName(){

}//……}方法调用方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果方法调用:执行方法中包含的语句

9/38对象名.方法名();小明过生日,爸爸送他一个电动狮子玩具,编程测试这个狮子能否正常工作语法问题方法调用10/38publicclassAutoLion{Stringcolor="黄色";//颜色

/*跑*/publicvoidrun(){Console.WriteLine("正在以0.1米/秒的速度向前奔跑。");}/*叫*/publicStringbark(){Stringsound="大声吼叫";returnsound;}/*获得颜色*/publicStringgetColor(){returncolor;}/*显示狮子特性*/publicStringshowLion(){return"这是一个"+getColor()+"的玩具狮子!";}}publicclassTestLion{

publicstaticvoidmain(String[]args){AutoLionlion=newAutoLion();Console.WriteLine(lion.showLion());lion.run();Console.WriteLine(lion.bark());}}在类的方法中调用该类另一个方法在main()方法中调用类的方法演示示例1:定义并调用狮子类的方法方法调用小结方法之间允许相互调用,不需要知道方法的具体实现,实现重用,提高效率

11/38情况举例Student类的方法a()调用Student类的方法b(),直接调用publicvoida(){b();//调用b()}Student类的方法a()调用Teacher类的方法b(),先创建类对象,然后使用“.”调用publicvoida(){Teachert=newTeacher();

t.b();//调用Teacher类的b()}publicclassStudent1{ publicvoidshowInfo(){ return"我是一名学生"; }}方法的返回值类型为void,方法中不能有return返回值!常见错误4-112/38代码阅读注意publicclassStudent2{ publicdoublegetInfo(){ doubleweight=95.5; doubleheight=1.69; returnweight,height; }}方法不能返回多个值!常见错误4-213/38代码阅读注意publicclassStudent3{ publicStringshowInfo(){ return"我是一名学生"; publicdoublegetInfo(){ doubleweight=95.5; doubleheight=1.69; returnweight; } }}多个方法不能相互嵌套定义!常见错误4-314/38publicclassStudent3{ publicStringshowInfo(){ return"我是一名学生"; } publicdoublegetInfo(){ doubleweight=95.5;doubleheight=1.69; returnweight; }}代码阅读注意publicclassStudent4{ intage=20; if(age<20){ Console.WriteLine("年龄不符合入学要求!"); } publicvoidshowInfo(){ return"我是一名学生"; }}不能在方法外部直接写程序逻辑代码!常见错误4-415/38代码阅读注意小结编写电池类(Cell):具有品牌属性,可以续电编写测试类(TestCell)16/38现场编程电池类属性:品牌行为:续电学员操作——计算平均分和总成绩2-1

训练要点方法的定义和调用需求说明从键盘接收三门课分数,计算三门课的平均分和总成绩,编写成绩计算类实现功能17/38指导讲解需求说明学员操作——计算平均分和总成绩2-2实现思路1.创建类ScoreCalc2.编写方法实现各功能3.编写测试类难点指导面向对象编程思维18/38完成时间:25分钟指导成员变量和局部变量2-1变量声明的位置决定变量作用域变量作用域确定可在程序中按变量名访问该变量的区域19/38//…for(inta=0;a<4;a++){Console.WriteLine("hello");}Console.WriteLine(a);//…代码错误a的作用域仅在for循环中成员变量和局部变量2-2谁能使用这些变量?20/38变量1类型变量1;变量2类型变量2;变量3类型变量3;public返回类型方法1(){

变量4类型变量4;}public返回类型方法2(){

变量5类型变量5;}publicclassAutoLion{}AutoLion类的方法,其他类的方法方法1方法2成员变量局部变量局部变量问题成员变量和局部变量的区别作用域不同局部变量的作用域仅限于定义它的方法成员变量的作用域在整个类内部都是可见的初始值不同.Net会给成员变量一个初始值.Net不会给局部变量赋予初始值21/38在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级在同一个方法中,不允许有同名局部变量在不同的方法中,可以有同名局部变量注意publicclassTest{intscore1=88;intscore2=98;publicvoidcalcAvg(){intavg=(score1+score2)/2;}publicvoidshowAvg(){Console.WriteLine("平均分是:"+avg);}}常见错误22/38局部变量avg的作用域仅限于calcAvg()方法代码阅读注意publicstaticvoidmain(String[]args){Console.Write("请输入.Net成绩:");int.Net=Convert.ToInt32(Console.ReadLine());//……/*计算并显示输出*/inttotal=.Net+c+db;doubleavg=total/3;Console.Write("总成绩:"+total);Console.Write("\n平均分:"+avg);}面向对象的编程(OOP)ScoreCalc类和

Test类23/38calcDiffTimecalcTotalScore()ScoreCalcshowTotalScore()calcAvg()showAvg()

main(){//程序入口

//计算并输出总成绩

//计算并输出平均分

}Test调用调用类的方法实现某个特定的功能,其他类不需要知道它如何实现,调用方法就可以了,不用重复写代码!

如果还要再执行这个功能,难道还要重复再写一遍?小结编写手机类(Phone)可以下载音乐,可以播放这些音乐,可以进行充电重用电池类方法(Cell)编写测试类(TestPhone)24/38现场编程手机类行为:播放下载的音乐下载充电电池类属性:品牌行为:续电为什么要用带参数的方法工作原理新鲜桃汁新鲜苹果汁新鲜梨汁输出三种果汁25/40如何使用带参数的方法3-1定义带参数的方法调用带参数的方法publicclassZhazhiJi{

publicStringzhazhi(Stringfruit){Stringjuice=fruit+"汁";returnjuice;}}/*调用zhazhi方法*/ZhazhiJimyZhazhiji=newZhazhiJi();StringmyFruit="苹果";StringmyJuice=myZhazhi.zhazhi(myFruit);Console.WriteLine(myJuice);参数列表:(数据类型参数1,数据类型参数2…)调用方法,传递的参数要与参数列表一一对应26/40如何使用带参数的方法3-2<访问修饰符>返回类型<方法名>(<形式参数列表>){ //方法的主体}该方法允许被访问调用的权限范围方法返回值的类型publicclassStudentsBiz{ String[]names=newString[30];

publicvoidaddName(Stringname){

//增加学生姓名

} publicvoidshowNames(){//显示全部学生姓名 }}传送给方法的形参列表一个形式参数没有返回值语法示例定义带参数的方法27/40如何使用带参数的方法3-3publicstaticvoidmain(String[]args){

StudentsBizst=newStudentsBiz();for(inti=0;i<5;i++){Console.Write("请输入学生姓名:");StringnewName=Console.ReadLine();

st.addName(newName);}st.showNames();

}实参的类型、数量、顺序都要与形参一一对应先实例化对象,再使用方法调用带参数的方法对象名.方法名(参数1,参数2,……,参数n)实参列表演示示例1:带一个参数的方法语法示例28/40带多个参数的方法2-1设计方法,通过传递三个参数(开始位置、结束位置、查找的姓名)来实现在保存了多个学生姓名的数组中,指定查找区间,查找某个学生姓名并显示是否查找成功问题分析29/40

publicboolsearchName

(intstart,intend,Stringname){ boolfind=false;//是否找到标识 //指定区间数组中,查找姓名 for(inti=start-1;i<end;i++){

if(names[i].equals(name)){

find=true;

break;

} } returnfind;}返回值类型带有三个形参返回结果:bool类型带多个参数的方法2-2if(st.searchName(s,e,name)){ Console.WriteLine("找到了!");}else{ Console.WriteLine("没找到该学生!");}传递三个实参演示示例2:带多个参数的方法示例30/40//方法定义publicvoidaddName(Stringname){ //方法体}//方法调用对象名.addName(String"张三");调用方法时不能指定实参类型!常见错误4-1对象名.addName("张三");代码阅读注意31/40//方法定义publicboolsearchName(intstart,intend,Stringname){ //方法体}//方法调用Strings="开始";inte=3;Stringname="张三";boolflag=对象名.searchName(s,e,name);形参和实参数据类型不一致!常见错误4-2代码阅读注意32/40//方法定义publicboolsearchName(intstart,intend,Stringname){ //方法体}//方法调用ints=1;inte=3;boolflag=对象名.searchName(s,e);形参和实参数量不一致!常见错误4-3代码阅读注意33/40//方法定义publicboolsearchName(intstart,intend,Stringname){ //方法体}//方法调用ints=1;inte=3;Stringname="张三";对象名.searchName(s,e,name);调用方法后没有对返回值作任何处理!常见错误4-4代码阅读注意34/40学员操作——客户姓名添加和显示2-1训练要点带参方法的定义带参方法的调用需求说明创建客户业务类,实现客户姓名的添加和显示指导讲解需求说明35/40学员操作——客户姓名添加和显示2-2实现思路1.创建CustomerBiz类2.创建带参方法addName(Stringname)3.创建方法showNames()4.创建测试类难点指导创建无返回值的带参方法完成时间:20分钟指导36/40学员操作——修改客户姓名需求说明修改学生姓名,输入新、旧姓名,进行修改并显示是否修改成功完成时间:20分钟练习提示定义方法publicbooleditName(StringoldName,StringnewName)37/40数组作为参数的方法2-1将5位学员的决赛成绩保存在数组中设计求平均成绩、最高成绩的方法,并把数组作为参数有5位学员参加了.Net知识竞赛的决赛,输出决赛的平均成绩和最高成绩问题分析38/40publicdoublecalAvg(int[]scores){intsum=0;doubleavg=0.0;for(inti=0;i<scores.length;i++){sum+=scores[i];}avg=(double)sum/scores.length;returnavg;}返回值类型数组作为参数的方法2-2演示示例3:数组作为参数示例publicintcalMax(int[]scores){intmax=scores[0];for(inti=1;i<scores.length;i++){if(max<scores[i]){max=scores[i];}}returnmax;}int[]scores=newint[5];//保存比赛成绩//……doubleavgScore=st.calAvg(scores);intmaxScore=st.calMax(scores);数组参数调用方法39/40对象作为参数的方法2-1方式一:设计带四个参数(学号、姓名、年龄、成绩)的方法方式二:将学生学号、姓名、年龄、成绩封装在学生对象中,设计方法,以学生对象作为参数在实现了增加一个学生姓名的基础上,增加学生的学号、年龄和成绩,并显示这些信息,如何实现?问题分析可以将多个相关的信息封装成对象,作为参数传递,避免方法有太多的参数!经验40/40classStudent{

publicintid;

温馨提示

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

评论

0/150

提交评论