 
         
         
         
         
        
            已阅读5页,还剩30页未读,            继续免费阅读
        
        
                版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
            第五章 面向对象初级(2),以后上机课一结束就要-交作业,每周交一部分同学的作业,具体某周谁交作业老师临时通知(由程序随机生成,下课前20分钟通知) 交作业方式: 1、当面交:上机下课前半个小时 要交作业同学可以通过给老师检查的方式交 就不用再交纸质稿,但是不能有错误,必须一次通过 并且老师会当面问问题 2、交作业本:上机时未交的同学,为避免抄袭,下课时就要交作业本给老师 由于交作业时间提前,希望大家有准备的上机,带着写好程序草稿的作业本或者已经输入的代码去上机, 如果下机前还没调试出正确的程序,则将草稿交给我 并注明“草稿” 成绩按及格处理,课堂练习,如何给一个立方体设置四个输入参数个数不同的构造方法? class cube int x,y,z; ,出现问题 参数不够3个 时候 未给其他坐标赋默认值 未使用构造函数 而使用其他函数来赋值 不符合题意 cube()方法未被定义又使用 将出错 少一个矩形,第3周上机作业1,参考代码,package ch5.week4.clas12; public class cube int x,y,z; cube () x=1;y=1;z=1; xyz (int aX) x=aX;y=1;z=1; xyz (int aX,int aY) x=aX;y=aY;z=1; xyz (int aX,int aY,int aZ) x=aX;y=aY;z=aZ; void tiji() System.out.println(“体积:“+x*y*z); public static void main(String args) / TODO Auto-generated method stub cube c1=new cube(); cube c2=new cube(); cube c3=new cube(); cube c4=new cube(); c1.tiji(); ,第3周上机作业2,类名:羊城通卡 假设公交车都是2元/次 属性:余额 卡号 种类(0普通 1学生卡) 方法:开卡(默认面值0,可选 50 或100) 充值(50或100) 坐车(普通卡:前15次2元/次,之后6折) (学生卡:直接五折) 查看余额:打印余额 测试: 买普通新卡一张,充值50元,坐车16次 ,查看余额 买学生新卡一张,充值100元,坐车89次,查看余额,这三种方法都要求显示余额,及当时充值或消费的金额,带参数和不带参数的构造方法,提示:卡号暂时由测试程序使用时给出 普通卡坐车次数需要用一个属性记录 如count,出现问题,1 未判断余额是否够坐车 就直接减 出现余额为负数的情况 2 开卡的方法里就直接输入坐车次数 不太符合现实 3 未用构造方法直接赋值 容易忘记而使得公交卡没有余额 种类等初始值 4 许多人判断了count大于15就打折,可是并没有让count在坐车一次后就加1 5 坐车的方法输入的参数为坐车次数 其实最好不要该参数,在main方法中用循环控制坐车次数,public class BusCard1 /属性 String no; double money; int kind ;/0普通卡 1 学生卡 int count; /普通卡坐车次数 BusCard1(int aMoney,String aNo,int aKind) boolean save(double a) / a为50 100的时候修改money的值 boolean getBus() /根据卡类型扣除费用 /(即修改money值) void printInfo() public static void main(String args) ,提示new,完整参考代码,package ch5.week4.clas12; public class BusCard /属性 String no; double money; int kind ;/0普通卡 1 学生卡 int count; /普通卡坐车次数 double fare=2; BusCard(int aMoney,String aNo,int aKind) money=aMoney; no=aNo; kind=aKind; boolean save(double a) / a为50 100的时候修改money的值 if (a=50 | a=100) money=money+a; System.out.println (“充值“+a+“元 ,余额“+money+“元“); return true; else System.out.println(“只能充值50或100“); return false; boolean getBus() /根据卡类型计算要扣费用 count=count+1; double tmp=0; if (kind=1) tmp=fare*0.5; if (kind=0) if (count=tmp) money=money-tmp; System.out.println(“坐车,卡号“+no+“元“); System.out.println(“坐车,扣费“+tmp+“元“); System.out.println(“坐车,余额“+money+“元“); System.out.println(“坐车,次数“+count+“元“); return true; else count=count-1; System.out.println(“余额不足“); return false; void printInfo() public static void main(String args) BusCard b1=new BusCard(50,“9090b“,0); for (int i=1;i=16;i+) b1.getBus(); BusCard b2=new BusCard(50,“1student“,1); b2.save(50); for (int i=1;i=89;i+) b2.getBus(); ,第三周上机作业2 -引申,思考: 公交车公司如何知道一共卖出多少张羊城通?static变量 如何让余额不被直接修改,而只通过构造方法和充值方法中修改?Private变量 同一类的好几张卡是否可以用数组来表示?,5.2 封装性,封装的定义包括下面几个方面: (1)一个清晰的边界,所有对象的内部软件范围限定在这个边界之内。 (2)一个接口,该接口描述当前对象和其他对象之间的交互作用。 (3)内部实现,对象内部的实现是受保护的,这个实现给出了软件对象功能的细节,定义当前对象的类的外面不能访问这些实现细节。,五、类成员变量的定义,定义: 访问权限符 static final 类型 变量名 权限修饰符有: public、protected和private static:在成员变量前说明该变量是静态变量。 final:在成员变量前说明该变量是一个最终变量,修饰符 static,static可以修饰类中的属性和方法。 静态属性在类定义时静态地分配空间。它属于类,不属于某个特定的对象,因此可以通过类进行访问。往往将属于类的公共属性说明成static。,public class Student String name; int No; String dorm; String tel; static int count=0; Student(String aName,int aNo) name=aName; No=aNo; count+; Student(int aNo) No=aNo; ,任务5-5用static变量统计Student类对象个数。,Student(String aName) name=aName; static void printCount() System.out.println(count); public static void main(String args) Student.printCount(); Student zhang=new Student(“张三“,001); Student li=new Student(“李四“,003); System.out.println(Student.count); ,注意count变量的引用方式,前面可以是类名也可以是某个对象名,Static变量 空间分配示意图,。,count,对象zhang所占的内存空间 只能通过对象名访问,对象li所占的内存空间,类变量count所占的内存空间,与对象的多少无关!即使没有对象也占有一个空间 可以通过类名student.count访问,5.2.2 使用private将变量封装起来,private修饰的变量,用private修饰的属性和方法只能被类自身访问和修改,而不能被任何其他类(包括子类)获取和引用。 应该将不希望他人随意引用或修改的属性设置成private,以此将它们隐藏起来,从而实现面向对象的程序设计思想。,私有财产圣神不可侵犯,任务5-6,/设置private变量 public class Student String name; int No; String dorm; String tel; private static int count=0; Student(String aName,int aNo) name=aName; No=aNo; count+; static void printCount() System.out.println(count); ,任务5-6 private修饰符让Student类的数据更安全。,任务5-6 private修饰符让Student类的数据更安全。,public class useStudent public static void main(String args) Student.printCount(); Student zhang=new Student(“张三“,001); Student li=new Student(“李四“,003); /下面这句有语法错误,私有变量Student.count不能被访问/System.out.println(Student.count); /必须通过Student.printCount();才能打印count的值 System.out.println(Student.count); ,5.3扩展应用,5.3.1数组与对象 【任务5-7】用数组处理多个学生对象。,任务5-7 数组与对象的结合使用,public class Student String name; int no ; int score; void printInfo() System.out.println(name+“t“+no+“t“+score); ,任务5-7 数组与对象的结合使用,1:建立student类数组,一维,10个元素,2为netClass数组每个元素赋值 不能忘记,否则出错!,试用数组来表示10个Student对象,并用一个循环将每个Student类对象数据打印出来。,程序输出,name no score susan 1 90 tom 2 67 jerry 3 78 jack 4 90 rose 5 65 maggie 6 45 elisha 7 67 Dick 8 89 Harry 9 76 John 10 67,总结: 数组的元素可以是对象 netClass是一个包含了10个对象为元素的数组 netClassi就代表下标为i的一个对象,再通过 netClassi.score代表该对象的一个属性 netClassi.printInfo();表示调用该对象的方法,上机作业2 演示,实训2: 【实训目的】 练习数组与对象的综合使用 【实训步骤】 Position类包含两个成员变量:横坐标x,纵坐标y;一个构造函数Position(int aX,int aY); 用一个一维数组(长度为5),每个数组元素是一个Position类对象; 要求用一个循环将5个点的坐标全部初始化并打印出来。,上机作业1,一、类的定义及使用 (1)编写一个位置类Position,包含两个成员变量:横坐标x,纵坐标y;一个方法:printInfo,打印出横坐标和纵坐标; (2) 编写Position类的测试程序,创建一个点a(3,4),要求输出点a的相关信息; (3) 将Position类的的两个成员变量改为私有,并添加相应的set和get方法,用 set方法为点a赋值为(5,7),用get方法取出a的坐标并打印出来; (4) 为Position类添加一个不带参数构造方法,将横坐标纵坐标初始化为原点,在测试程序中新增1个原点; (5)为Position类添加一个带参数的构造方法,传两个参数用于初始化坐标。在测试程序中新增1个点b(8,9); (6)为Position类添加一个静态变量TotalNum,用于统计创建的Position对象数,在测试程序中输出总的点数量。,1 2 4 5步老师会给出代码,上机作业3:羊城通卡 改进,修改卡的余额为私有变量,只能通过构造函数、充值、坐车改变 而不能直接给它赋值 为卡 增加一个静态属性,用来记录卖出卡的总数 在main函数中,买一组卡共5张,每张都充值50元,分别坐车10、34、23、12、2次,请打印他们的余额,并统计卖出卡的总数,羊城通类原有代码在备注中 本ppt中第八页也有,任务5-8:方法的输入参数和返回值为对象,public class Student String name; int no ; double score1;/成绩1 double score2;/成绩2 int sustainers;/支持者 public Student(String name, int no, double score1, double score2, int sustainers) super();  = name; this.no = no; this.score1 = score1; this.score2 = score2; this.sustainers = sustainers; ,5.3.2 对象作为方法的参数和返回值,static Student pk(Student a,Student b) int anum=0; int bnum=0; if (a.score1=b.score1) anum+; else bnum+; if (a.score2=b.score2) anum+; else bnum+; if (a.sustainers=b.sustainers) anum+; else bnum+; if (anumbnum) return a; else return b; ,任务5-8:方法的输入参数和返回值为对象,/比较两个学生的信息,输出综合指数高的同学作为班长 public class useStudentPk static Student pk(Student a,Student b)。 public static void main(String args) Student zhang=new Student(“zhangsan“,001,90,90,35); Student li=new Student(“lisi“,002,89,90,30); Student monitor=pk(zhang,li); System.out.print(“取胜者为:“+); ,取胜者为:zhangsan,程序输出,以前学的String就是一个类,一个字符串例如:String a=new String(“xyz”);就是String类的一个对象。,新知识:对象也可以作为一个参数,传入到方法中 方法返回的值也可以为一个对象,任务5-8:方法的输入参数和返回值为对象,上机作业,实训3: 【实训目的】 练习将对象作为方法的输入输出参数 【实训步骤】 为测试程序添加一个static double distance(Position a Position b)方法,输入为两个Position类对象a和b,返回为这两个Position对象a,b两点的距离。 在main函数调用distance(a,b)方法,并打印出a、b两点的距离。,public class Communication double mobliePhone;/移动电话 String eMail;/电子邮件 double qq;/qq号码 String telephone;/宿舍电话 public Communication(double mobliePhone, String mail, double qq, String telephone) super();/先不管他 下章的内容 this.mobliePhone = mobliePhone; this.eMail = mail; this.qq = qq; this.telephone = telephone; ,【任务5-9】联系方式类作为学生类的成员变        
    温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数控组合机床操作工创新方法竞赛考核试卷含答案
- 调解员班组管理水平考核试卷含答案
- 焊接设备装配调试工班组安全测试考核试卷含答案
- 煤层气固井工安全意识能力考核试卷含答案
- 森林抚育工安全生产规范测试考核试卷含答案
- 电子产品制版工安全行为强化考核试卷含答案
- 外勤机械工岗前安全宣传考核试卷含答案
- 液化气体生产工风险评估知识考核试卷含答案
- 信息通信网络线务员冲突管理评优考核试卷含答案
- 模特工艺技术规程
- 天气系统(上)+课件【核心知识精讲精研 】 高中地理湘教版(2019)选择性必修1
- 《浅谈幼儿园劳动教育实施策略》 论文
- 中医养生文化ppt
- 混凝土配合比设计作业指导书
- GB/T 13560-2009烧结钕铁硼永磁材料
- 远程会诊登记本
- 多旋翼无人机培训教材课件
- 高新技术企业(科技型中小企业)专题培训课件
- 一句话营销技巧培训课件
- 送达地址确认书(诉讼类范本)
- 护理专业医疗质量控制指标2020年版解读课件
 
            
评论
0/150
提交评论