资源描述
Java程序设计,类和对象,第十章,回顾与作业点评,关于多重循环语句,下列说法正确的是( ) A多重循环指一个循环体内包含另一个完整的循环结构 B多重循环语句可以嵌套任意层次 Cwhile、do-while和for循环不可以相互嵌套 D在内层循环中执行break语句,将跳出外层循环 写出运行结果,int i = 0; for (i = 0; i 10; i +) if (i % 2 = 0) continue; i = i + 1; if (i = 5) break; System.out.println(i);,11,AB,预习检查,类与对象的关系是什么? 定义一个类的语法是什么? 如何创建一个类的对象?,本章任务,以OO的方式实现 学校类,描述学校的信息 教员类,输出教员的信息 学生类,输出学生的信息 游人类,输出购买门票价格,本章目标,掌握类和对象的特征 理解封装 会创建和使用对象,万物皆对象,世界是由什么组成的?,分类是人们认识世界的一个很自然的过程,在日常生活中会不自觉地进行分类,身边的对象,张浩,李明,收银员 员工号10001 姓名李明 部门财务部 操作: 收款 打印账单,顾客 姓名张浩 年龄20 体重60kg 操作: 购买商品,对象的特征属性,属性对象具有的各种特征 每个对象的每个属性都拥有特定值 例如:张浩和李明的年龄、姓名不一样,20岁,张浩,属性,60kg,对象的特征方法,方法对象执行的操作 对象:用来描述客观事物的一个实体,由一组属性和方法构成,打印账单,收银,方法,刷卡,对象的属性和方法,1、列出尼古拉斯凯奇驾驶的这辆法拉利F360 Spider的属性和方法 列出小狗对象的属性和方法,属性: 品牌:法拉利 型号:F360 Spider 颜色:黄色 价格:380万元 方法: 发动 停止 加速,属性: 颜色:白色 方法: 叫 跑 吃,封装,对象同时具有属性和方法两项特性 对象的属性和方法通常被封装在一起,共同体现事物的特性, 二者相辅相承,不能分割,谁看见过只有“完好的零件和颜色”而不能开动的汽车?,小结1,说一说教室里的对象 描述他们的属性和方法,颜色:黑色 品牌:BENQ 投影,姓名:张三 年龄:20 学习,类型:白炽灯 开 关 变亮 变暗,材制: 木质 支撑物品,从对象抽象出“类”,轿车,顾客,2、抽取出下列对象的属性和方法的共同特征,类,顾客类 轿车类 ,类是模子,确定对象将会拥有的特征(属性)和行为(方法),类 具有相同属性和方法的一组对象的集合 类是对象的类型 不同于int类型:具有方法,各种口味的球状冰淇淋,类和对象的关系,类是抽象的概念,仅仅是模板,比如说:“人” 对象是一个你能够看得到、摸得着的具体实体,小布什,普京,克林顿,Java 是面向对象的语言,所有Java程序都以类class为组织单元 关键字class定义自定义的数据类型,public class HelloWorld public static void main(String args) System.out.println(Hello World!); ,Java类模板,类将现实世界中的概念模拟到计算机程序中,public class 类名 /定义属性部分 属性1的类型 属性1; 属性2的类型 属性2; 属性n的类型 属性n; /定义方法部分 方法1; 方法2; 方法m; ,如何定义类,定义一个类的步骤 1、定义类名 2、编写类的属性 3、编写类的方法,类示例2-1,3、在不同的宜宾学院培训中心,会感受到相同的环境和教学氛围,用类的思想输出中心信息,类示例2-2,public class School String schoolName;/中心名称 int classNumber;/教室数目 int labNumber;/机房数目 /定义宜宾学院中心的方法 public void showCenter() System.out.println(schoolName + 培训学员n + 配备: + classNumber + 教 + labNumber + 机); ,定义类的showCenter()方法, 用于输出类相关的信息,方法,成员变量,如何创建和使用对象,使用对象的步骤: 创建对象 类名 对象名 = new 类名(); 引用对象成员:使用“.”进行以下操作 引用类的属性:对象名.属性 引用类的方法:对象名.方法名(),School center = new School();,center.name = 北京中心; /给name属性赋值 center.showCenter(); /调用showCenter()方法,public class InitialSchool public static void main(String args) School center = new School(); System.out.println(*初始化成员变量前*); center. showCenter(); center.schoolName = “屏山中心; center.classNumber = 10; center.labNumber = 10; System.out.println(n*初始化成员变量后*); center.showCenter() ,创建和使用对象示例5-1,创建“屏山中心”对象,说一说看到什么效果?,说一说又看到什么效果?,创建和使用对象示例5-2,4、编写学生类,输出学生相关信息;编写教员类,输出教员相关信息,public class Student String name;/姓名 int age;/年龄 String classNo;/班级 String hobby;/爱好 /输出信息方法 public void show() System.out.println(name + n年龄: + age + n就读于: + classNo + n爱好: + hobby); ,创建和使用对象示例5-3,成员变量,成员方法,public class InitialStudent public static void main(String args) Student student = new Student(); student.name = 张浩; student.age = 10; student.classNo = S1班; student.hobby = 篮球; student.show(); ,创建对象,给每个属性赋值,调用方法,创建和使用对象示例5-4,5、一个景区根据游人的年龄收取不同价格的门票。请编写游人类,根据年龄段决定能够购买的门票价格并输出,public class Visitor String name;/姓名 int age;/年龄 /显示信息方法 public void show() Scanner input = new Scanner(System.in); while(!n.equals(name) if(age=18 ,创建和使用对象示例5-5,成员方法,成员变量,import java.util.Scanner; public class InitialVistor public static void main(String args) Scanner input = new Scanner(System.in); Visitor v = new Visitor(); System.out.print(请输入姓名:); v.name = input.next(); System.out.print(请输入年龄:); v.age = input.nextInt(); v.show(); ,创建对象,给每个属性赋值,调用方法,小结2,类和对象的关系? 如何创建和使用对象?,指导定义管理员类,训练要点: 定义类的属性 定义类的方法 需求说明: 编写管理员类 实现思路: 1、定义管理员类Administrator 2、定义其属性和方法,讲解需求说明,完成时间:20分钟,练习定义客户类,需求说明: 编写客户类 属性:积分、卡类型 方法:show(),显示客户信息 提示: 定义客户类Customer 定义属性和方法,完成时间:15分钟,指导创建管理员对象,训练要点: 使用类创建对象 引用对象的属性和方法 需求说明: 创建两个管理员类对象,输出他们的相关信息 实现思路: 1、创建两个管理员类的对象 2、给两个对象赋值并调用显示方法,讲解需求说明,完成时间:20分钟,指导更改管理员密码,训练要点: 使用类创建对象 while循环 需求说明: 输入旧的用户名和密码,如果正确,方有权限更新 从键盘获取新的密码,进行更新 实现思路: 1、创建管理员类的对象 2、利用while实现循环执行 难点指导: 循环执行,讲解需求说明,完成时间:25分钟,练习客户积分回馈,需求说明: 实现积分回馈功能,金卡客户积分大于1000分或普卡客户积分大于5000,获得回馈积分500分 创建客户对象输出他得到的回馈积分,完成时间:20分钟,面向对象(OO)的优点,与人类的思维习惯一致 把人类解决问题的思维过程转变为程序能够理解的过程 信息隐藏,提高了程序的可维护性和安全性 封装实现了模块化和信息隐藏 封装使得在对象外部不能随意访问对象的属性和方法 提高了程序的可重用性 一个类可以创建多个对象实例,增加了重用性,数据类型总结,int double char boolean,String 数组 使用class定义的类型 ,基本数据类型,引用数据类型,数据类型使用区别,总结,什么是类? 什么是对象? 类和对象的区别是什么? 如何定义一个类、类的属性和方法? 如何创建类的对象? 数据类型有哪两种?区别是什么?,作业,课后作业 必做 149页 选做 上机操作题 提交时间:xxx 提交形式:xxx 预习作业 查阅相关英语单词 逻辑程序基础知识复习,Java程序设计,类的无参方法,第十一章,类和对象的区别是什么? 数据类型有哪两类?如何使用?,public class ,Student,toString,stu.name,stu.sex,stu.age,实现输出学生信息,下面代码有哪些错误?,回顾与作业点评,预习检查,类的方法由哪几部分组成? 成员变量和局部变量的区别有哪些? JavaDoc怎样写注释?,本章任务,实现计算平均分和课程总成绩 实现MyShopping系统菜单切换 实现MyShopping系统入口程序,会定义和使用类的方法 理解变量作用域 会添加JavaDoc注释,本章目标,类的方法,1、写出狮子对象的“跑”方法、 “叫”方法,电动玩具狮子 属性: 颜色:黄色 行为: 跑 叫,按此按钮, 狮子开始叫,按此按钮, 狮子开始跑,类的方法示例,public class AutoLion String color = 黄色; public void run() System.out.println(正在以0.1米/秒的速度向前奔跑); public String bark() String sound = 大声吼叫 ; return sound; ,AutoLion类代码实现,方法体,返回类型,方法名称,如何定义类的方法,类的方法定义类的某种行为(或功能),方法的名称,方法的主体,方法返回的数据类型,定义类的方法,public 返回值类型 方法名() /这里编写方法的主体 ,步骤一:定义方法名以及返回值,步骤二:编写方法体,方法的返回值,两种情况 如果方法具有返回值,方法中必须使用关键字return返回该值,返回类型为该返回值的类型 如果方法没有返回值,返回类型为void,public class Student String name = 张三; public void getName() return name; ,返回类型要匹配,return 表达式;,编译错误,作用: 跳出方法 给出结果,方法调用,方法是个“黑匣子”,完成某个特定的应用程序功能,并返回结果 方法调用:执行方法中包含的语句,对象名.方法名();,2、小明过生日,爸爸送他一个电动狮子玩具,编程测试这个狮子能否正常工作,方法调用,public class AutoLion String color = 黄色; /颜色 /*跑*/ public void run() System.out.println(正在以0.1米/秒的速度向前奔跑。); /*叫*/ public String bark() String sound = 大声吼叫 ; return sound; /*获得颜色*/ public String getColor() return color; /*显示狮子特性*/ public String showLion() return 这是一个 + getColor() + 的玩具狮子!; ,public class TestLion public static void main(String args) AutoLion lion = new AutoLion(); System.out.println(lion.showLion(); lion.run(); System.out.println(lion.bark(); ,在类的方法中调用 该类另一个方法,在main()方法中 调用类的方法,方法调用小结,方法之间允许相互调用,不需要知道方法的具体实现,提高了效率,public class Student public void showInfo() return 我是一名学生; ,方法的返回类型为void,方法中不能有return返回值!,常见错误4-1,public class Student public double getInfo() double weight = 95.5; double height = 1.69; return weight, height; ,方法不能返回多个值!,常见错误4-2,public class Student public String showInfo() return 我是一名学生; public double getInfo() double weight = 95.5; double height = 1.69; return weight; ,多个方法不能相互嵌套定义!,常见错误4-3,public class Student public String showInfo() return 我是一名学生; public double getInfo() double weight = 95.5; double height = 1.69; return weight; ,public class Student int age=20; if(age20) System.out.println(年龄不符合入学要求!); public void showInfo() return 我是一名学生; ,不能在方法外部直接写程序逻辑代码!,常见错误4-4,小结1,编写电池类(Cell):具有品牌属性,可以续电 编写测试类(TestCell),参考代码1,参考代码2,成员变量和局部变量2-1,变量声明的位置决定变量作用域 变量作用域确定可在程序中按变量名访问该变量的区域, for(int i = 0, a = 0; i 4; i+) a+; System.out.println ( a ); ,代码错误,a的作用域仅在for循环中,成员变量和局部变量2-2,变量1类型 变量1; 变量2类型 变量2; 变量3类型 变量3;,public 返回类型 方法1() 变量4类型 变量4; public 返回类型 方法2() 变量5类型 变量5; ,public class AutoLion,AutoLion类的方法, 其他类的方法,谁能使用这些变量?,方法1,方法2,成员变量,局部变量,局部变量,作用域不同 局部变量的作用域仅限于定义它的方法 成员变量的作用域在整个类内部都是可见的 初始值不同 Java会给成员变量一个初始值 Java不会给局部变量赋予初始值 在同一个方法中,不允许有同名局部变量;在不同的方法中,可以有同名局部变量 两类变量同名时,局部变量具有更高的优先级,成员变量和局部变量的区别,public class Test int score1 = 88; int score2 = 98; public void calcAvg() int avg = (score1 + score2)/2; public void showAvg() System.out.println(平均分是: + avg); ,常见错误,局部变量avg的作用域仅限于calcAvg()方法,指导计算平均分和总成绩,训练要点: 方法的定义和调用 需求说明: 从键盘接收三门课分数,计算三门课的平均分和总成绩,编写成绩计算类实现功能 实现思路: 1、创建类 ScoreCalc 2、编写方法实现各功能 3、编写测试类 难点指导: 面向对象编程思维,讲解需求说明,完成时间:25分钟,面向对象的编程思维,ScoreCalc类 和 Test类,public static void main(String args) Scanner input = new Scanner(System.in); System.out.print(请输入Java成绩:); int java = input.nextInt(); /*计算并显示输出*/ int total = java + c + db; double avg = total / 3; System.out.print(总成绩: + total); System.out.print(n平均分: + avg); ,一次还可以接受,如果 还要再执行这个功能, 难道还要重复再写?,小结2,编写手机类(Phone):可以下载音乐,可以播放这些音乐,可以进行充电 重用电池类方法(Cell) 编写测试类(TestPhone),参考代码1,参考代码2,练习定义管理员类,需求说明: 根据下图所示信息,编写管理员类Manager,使用show()方法返回管理员信息 编写测试类ManagerTest输出管理员信息,完成时间:10分钟,指导实现菜单的级联效果,训练要点: 方法的定义和调用 循环结构 需求说明: 实现MyShopping菜单,输入菜单项编号,可以自由切换各个菜单 实现思路: 1、创建菜单类Menu 2、编写方法实现各功能 3、编写测试类 难点指导: 面向对象编程思维,讲解需求说明,完成时间:30分钟,练习实现系统入口程序,需求说明: 编写类StartSMS,实现输入用户名和密码,符合条件的进入系统,完成时间:20分钟,JavaDoc注释,回顾学过的注释方式 单行注释:/这里是单行注释 多行注释:/*这里是多行注释, 可以多行*/ JavaDoc注释:使用“/*”开始和“*/”结束,用来注释类、属性和方法等,/* *CalcScore类 *author Chris *version 1.0 2007/06/21 */,描述信息,author :描述作者信息,version :描述版本信息,3、为ScoreCalc类添加JavaDoc注释,添加JavaDoc注释,/* * ScoreCalc类 * author 北大青鸟 * version 2.0 2010/06/01 */ public class ScoreCalc /* Java成绩 */ int java; . /* * 计算总成绩 * return total */ public int calcTotalScore() int total = java + c + db; return total; . ,方法的JavaDoc注释,属性的JavaDoc注释,类的JavaDoc注释,如何生成JavaDoc文档,JavaDoc能够从源代码中抽取类、属性、方法等的注释,形成一个和配套的API帮助文档 生成JavaDoc文档 使用命令行方式生成 使用Eclipse工具生成,练习添加并生成JavaDoc文档,需求说明: 为我行我素购物系统的Manager类、Menu类添加JavaDoc注释 使用Eclipse工具,生成两个类的JavaDoc文档,完成时间:15分钟,总结,定义类的方法的步骤是什么? 类的一个方法如何调用本类的另一个方法? 类中的一个方法如何调用另一个类的方法? 成员变量和局部变量的区别有哪些? 如何给类的方法添加JavaDoc注释?,Java程序设计,指导学习:人机猜拳,创建类Welcome 添加一个方法sayHello(),提示输入姓名,然后输出“ ,欢迎你!” 添加JavaDoc注释,/* * 欢迎类 * author name */ public class Welcome /* * 向用户问好 */ public void sayHello() Scanner input = new Scanner(System.in); System.out.print(你叫什么?); String name = input.next(); System.out.println(name + , 你好!); ,课程内容回顾,参考代码,难点突破,二重循环结构 类和对象之间的差异 方法定义 方法的返回值,作业讲评,教员备课时完善,知识梳理:二重循环结构,二重循环结构 循环结构:while、do-while、for、foreach 可以任意层次嵌套 各种循环结构可以相互嵌套 二重循环结构中使用跳转语句 continue:继续本层下一轮循环 break:跳出本层循环,知识梳理:类和对象入门2-1,类和对象 类和对象及其关系 类的封装 定义类 创建和使用对象 OO的优点 无参方法 定义方法 调用方法 成员变量和局部变量 面向对象编程思维,知识梳理:类和对象入门2-2,带参方法 定义方法指定形参 调用方法指定实参 基本数据类型和引用数据类型的参数区别 字符串类 String类 StringBuffer类,综合练习:人机猜拳,任务 完成人机猜拳互动游戏的开发 主要功能 选取对战角色 猜拳 记录分数,阶段1:练习分析业务,创建用户类,完成时间:15分钟,综合练习:人机猜拳,需求说明 分析业务 抽象出类、类的特征和行为,阶段1:练习分析业务,创建用户类,完成时间:15分钟,综合练习:人机猜拳,需求说明 创建用户类 编写程序入口类,阶段2:练习创建计算机类,完成时间:15分钟,综合练习:人机猜拳,需求说明 创建计算机类Computer。实现计算机出拳,阶段3:练习创建游戏类,选择对战对手,完成时间:20分钟,综合练习:人机猜拳,需求说明 创建游戏类Game 编写游戏类的初始化方法initial() 编写游戏类的开始游戏方法startGame(),阶段4:练习实现一局对战,完成时间:25分钟,综合练习:人机猜拳,需求说明 分别调用用户类和计算机类的出拳方法showFist(),接受返回值并比较,给出胜负结果,阶段5:练习实现循环对战,并累计得分,完成时间:20分钟,综合练习:人机猜拳,需求说明 实现循环对战,并且累加赢家的得分,阶段6:练习显示对战结果,完成时间:25分钟,综合练习:人机猜拳,需求说明 游戏结束后,显示对战结果,阶段7:练习完善游戏类的startGame(),完成时间:20分钟,综合练习:人机猜拳,需求说明 输入并保存用户姓名,游戏结束后显示双方的各自得分,总结,Java提供了哪四种循环结构? break和continue在二重循环的中跳转规则是什么? 类与对象的关系是什么? 成员变量和局部变量的区别有哪些?,Java程序设计,带参数的方法(一),写出如下代码的运行结果,public static void main(String args) for (int i = 0; i 6; i+) System.out.print(i + ,); while (+i 5) continue; System.out.print(i); ,0,5,预习检查,调用带参方法时,有哪些注意事项? 为什么需要包?,本章任务,实现客户信息的添加和查询 实现图形生成器 实现模拟账户存取款功能,本章目标,会定义带参方法 会使用带参方法 会创建包组织Java工程,为什么要用带参数的方法,工作原理,新鲜桃汁,新鲜苹果汁,新鲜梨汁,输出三种果汁,如何使用带参数的方法3-1,定义带参数的方法 调用带参数的方法,public class Zhazhi public String zhazhi ( String fruit ) String juice = fruit + 汁; return juice; ,/*调用zhazhi方法*/ Zhazhi myZhazhi = new Zhazhi(); String myFruit = 苹果; String myJuice = myZhazhi.zhazhi(myFruit); System.out.println(myJuice);,参数列表: (数据类型 参数1,数据类型 参数2),调用方法,传递的参数要与参数列表一一对应,如何使用带参数的方法3-2, 返回类型 () /方法的主体 ,该方法允许被访问调用的权限范围,方法返回值的类型,public class StudentsBiz String names = new String30; public void addName(String name) /增加学生姓名 public void showNames () /显示全部学生姓名 ,传送给方法的形参列表,一个形式参数,没有返回值,如何使用带参数的方法3-3,public static void main(String args) StudentsBiz st = new StudentsBiz(); Scanner input = new Scanner(System.in); for(int i=0;i5;i+) System.out.print(请输入学生姓名:); String newName = input.next(); st.addName(newName); st.showNames(); ,实参的类型、数量、顺序 都要与形参一一对应,先实例化对象, 再使用方法,调用带参数的方法,对象名.方法名(实参1, 实参2,,实参n),实参列表,指导实现客户姓名添加和显示,训练要点: 带参方法的定义 带参方法的调用 需求说明: 创建客户业务类,实现客户姓名的添加和显示 实现思路: 1、创建CustomerBiz类 2、创建带参方法addName() 3、创建方法showNames() 4、创建测试类 难点指导: 创建无返回值的带参方法,讲解需求说明,完成时间:25分钟,练习查找客户姓名,需求说明: 根据需要,查找客户姓名,给出查找结果,完成时间:20分钟,提示:定义带参带返回值的方法 public boolean search(String name),可以设计一个方法来实现,通过传递两个参数(需要修改的姓名、新姓名)来实现,带两个参数的方法2-1,1、修改学生姓名,输入新、旧姓名,进行修改并显示是否修改成功,public class StudentsBiz String names = new String30; public boolean editName (String oldName,String newName) boolean find = false; / 是否找到并修改成功标识 / 循环数组,找到姓名为oldName的元素,修改为newName for(int i=0;inames.length;i+) if(namesi.equals(oldName) namesi = newName; find=true; break; return find; ,返回值类型,带有两个形参,返回结果:boolean类型,带两个参数的方法2-2,public class TestModify public static void main(String args) System.out.print(n请输入要修改的学生姓名:); String oldname = input.next(); System.out.print(n请输入新的学生姓名:); String newname = input.next(); System.out.println(n*修改结果*); if( st.editName(oldname, newname) ) System.out.println(找到并修改成功!); else System.out.println(没找到该学生!); st.showNames(); ,根据返回值进行处理,传递两个实参,设计方法,通过传递三个参数(开始位置、结束位置,查找的姓名)来实现,带多个参数的方法2-1,2、指定查找区间,查找学生姓名并显示是否修改成功,public boolean searchName (int start,int end,String name) boolean find = false; / 是否找到标识 / 指定区间数组中,查找姓名 for(int i=start-1;iend;i+) if(namesi.equals(name) find=true; break; return find; ,返回值类型,带有三个形参,返回结果:boolean类型,带多个参数的方法2-2,if(st.searchName(s,e,name) System.out.println(找到了!); else System.out.println(没找到该学生!); ,传递三个实参,/方法定义 public void addName(String name) /方法体 /方法调用 对象名.addName(String 张三);,调用方法时不能指定实参类型!,常见错误4-1,对象名.addName(张三);,/方法定义 public boolean searchName(int start ,int end ,String name) /方法体 /方法调用 String s=开始; int e=3; String name=张三; boolean flag=对象名. searchName(s ,e ,name);,形参和实参数据类型不一致!,常见错误4-2,/方法定义 public boolean searchName(int start,int end,String name) /方法体 /方法调用 int s=1; int e=3; boolean flag= 对象名.searchName(s,e);,形参和实参数量不一致!,常见错误4-3,/方法定义 public boolean searchName(int start,int end,String name) /方法体 /方法调用 int s=1; int e=3; String name=张三; 对象名.searchName(s,e,name);,调用方法后没有对返回值作任何处理!,常见错误4-4,练习实现图形生成器,需求说明: 根据指定不同的行以及字符,生成不同的三角形,完成时间:20分钟,为什么需要包,生活案例,文档分门别类,易于查找,不同内容的文档可以放在不同的 袋子中,拥有相同的名字,避免冲突,易于管理,为什么需要包,树形文件系统 使用目录解决文件同名冲突问题 如何存放两个同名的类而不冲突?,包,包解决类的同名问题,允许类组成较小的单元(类似 文件夹),易于找到和使用相 应的文件,防止命名冲突,更好的保护类、属 性和方法,如何创建包,package cn.jbit.classandobject; /声明包 public class AccpSchool / public String toString() / ,包名,使用package声明包, 以分号结尾,如果有包的声明,一定 作为Java源代码的第一条 语句,包命名规范,包名由小写字母组成,不能以圆点开头或结尾 包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名。如:域名 包名后续部分依不同机构内部的规范不同而不同,package mypackage;,package net.javagroup.mypackage;,package net.javagroup.research.powerproject;,部门名,项目名,package .mypackage; ,用Eclipse 创建包,使用Eclipse创建包的两种方法: 分别创建包和类: 创建项目创建包创建类 创建类的过程中创建类所在的包 创建项目创建包和类,包与目录的关系,创建好的包和Java源文件是如何存储的? 创建包cn.jbit.classandobject ,即创建了目录结构:cnjbitclassandobject,cn,jbit,classandobject,AccpSchool.java,HelloAccp.java,如何导入包,为了使用不在同一包中的类,需要在Java程序中使用import关键字导入这个类,import java.util.*; /导入java.util包中所有类 import cn.jbit.classandobject.AccpSchool; /导入指定包中指定类,关键字import并不陌生,import 包名. 类名;,1、系统包:java.util 2、自定义包:cn.jbit.classandobject,*: 指包中的所有类 AccpSchool :指包中的AccpSchool类,小结,AccpSchool.java位于cn.jbit.classandobject包中,HelloAccp.java位于demo包中,下面程序空缺部分需要填入代码吗?如果需要,是什么?,/添加代码2 /添加代码3 public class HelloAccp public static void main(String args) AccpSchool center = new AccpSchool(); center.showMessage(); ,/添加代码1 public class AccpSchool public void showMessage() System.out.println(“这是上海Accp中心。); ,package cn.jbit.classandobject;,package demo;,import cn.jbit.classandobject.*;,声明包的含义: 声明当前类所处的位置,导入包的含义: 声明在当前类中要使用到的 别的类所处的位置,练习模拟账户查询,实现存取款,需求说明: 模拟银行账户业务,进行余额查询,实现存款和取款,完成时间:20分钟,总结,形式参数和实际参数有什么区别? 调用带参方法是有哪些注意事项? 如何声明包?如何导入包? 包与存储Java源文件的目录结构关系是什么?,Java程序设计,带参数的方法(二),/方法定义 public void addName(name) /方法体 /方法调用 int n = 对象名.addName(张三);,纠正代码中的错误,输出“早上好!” 包(package)的作用有哪些?,必须指定形参类型,回顾与作业点评,方法没有返回值,预习检查,基本数据类型和引用数据类型作为方法参数,在传递时有什么不同之处?,本章任务,实现MyShopping系统增加会员功能 实现MyShopping系统会员积分功能,本章目标,会使用数组作为方法的参数和返回值 会使用对象作为方法的参数,使用Arrays类提供的sort()方法实现 定义一个独立的方法来实现姓名排序,该方法的返回值为数组类型,数组类型的方法返回值2-1,1、编写方法,实现学生的姓名排序,public class StudentsBiz String names = new String5; / 学生姓名数组 public void inputNames() /接收用户输入的5个学生姓名,存放于names中 /字符串数组作为返回值 public String getNames() Arrays.sort(names); return names; ,返回字符串数组,public class TestSort public static void main(String args) StudentsBiz st = new StudentsBiz(); st.inputNames(); String namesbysort =st.getNames(); System.out.println(*排序后*); for(int i =0;i namesbysort.length;i+) if(namesbysort i!=null) System.out.print(namesbysort i+t); ,数组类型的方法返回值2-2,调用方法,返回结果,处理返回结果,定义学生类,添加属性:三门课的成绩 定义学生成绩计算类,添加方法,传递对象参数 定义测试类,对象类型的参数3-1,2、编写学生成绩计算类,计算学生平均分,public class Students /定义三门课成绩属性 float java=0; float database=0; float html=0; ,三门课成绩,public class Score /计算平均分,对象作为参数 public float getAvg(Students stu) float avg=0; avg=(stu.java +stu.database +stu.html )/3; return avg; ,对象类型的参数3-2,返回结果,对象类型的参数,public class TestScore public static void main(String args) Students stu=new Students(); Score sc=new Score(); float avg=0; stu.java=80; stu.database=95; stu.html=77; avg=sc.getAvg(stu); System.out.println(该学生的平均分为:+avg); ,调用方法,传递参数,返回结果,对象类型的参数3-3,public class TestScore public static void main(String args) Students stu=new Students(); Score sc=new Score(); float avg=0; stu.java=80; stu.database=95; stu.html=77; avg=sc.getAvg(stu); System.out.println(该学生的平均分为:+avg); ,public class Score /计算平均分,对象作为参数 public float getAvg(Students stu)float avg=0; avg=(stu.java +stu.database +stu.html )/3; return avg; ,main:stu,0 x2a486c,0,main:avg,84.0,getAvg:stu,0 x2a486c,0,getAvg:avg,84.0,省略内存分配,内存分配图,Students类中定义身高属性 Height类中定义方法,传递学生对象数组,求平均身高 测试类调用Height类的方法,对象数组类型的参数2-1,3、计算学生的平均身高,public class Height public float getAvgHeight( Students stu) float avgHeight=0; float all=0;/所有学生的总身高 int count=0;/学生计数 for(int i=0; istu.length; i+) if(stui.height != 0) all=all+stui.height; count+; avgHeight=all/count; return avgHeight; ,对象数组作为参数,public class TestHeight public static void main(String args) Students stu = new Students5; Height h=new Height(); float avgheight=h.getAvgHeight(stu); System.out.println(平均身高:+avgheight+cm); ,对象数组类型的参数2-2,调用方法,传递对象数组,指导增加会员,训练要点: 带参方法的定义及调用 对象类型的参数 需求说明: 创建包com.wxws.sms,增加会员类和会员操作类,实现MyShopping系统的增加会员功能 实现思路: 1、创建会员类 2、创建会员操作类 3、进行测试 难点指导: 增加会员方法,讲解需求说明,完成时间:25分钟,练习查找会员积分,需求说明: 循环输入多个会员的信息,根据会员编号,查找会员积分,完成时间:5分钟,总结,基本数据类型和引用数据类型作为方法参数,在传递时有什么不同之处? 画出在本章“计算学生平均分 ”问题中,程序执行时的内存分配过程图,public class TestScore public static void main(String args) Students stu=new Students(); Score sc=new Score(); float avg=0; stu.java=80; stu.database=95; stu.html=77; avg=sc.getAvg(stu); System.out.println(该学生的平均分为:+avg); ,public class Score /计算平均分,对象作为参数 public float getAvg(Students stu)float avg=0; avg=(stu.java +stu.database +stu.html )/3; return avg; ,main:stu,0 x2a486c,0,main:avg,84.0,getAvg:stu,0 x2a486c,0,getAvg:avg,84.0,省略内存分配,
展开阅读全文