面向对象程序设计_第1页
面向对象程序设计_第2页
面向对象程序设计_第3页
面向对象程序设计_第4页
面向对象程序设计_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

面向对象程序设计主讲人:刘小晶嘉兴学院数理与信息工程学院liuxiaojing99999@163.com第1章Java概述

第2章基本数据类型和操作

第3章选择第5章方法

第4章循环

基础的计算机知识

第I部分必备第5章方法第6章数组

学习目标掌握声明和调用方法的语法理解方法参数的作用掌握如何传递方法参数掌握方法重载理解局部变量的作用域熟悉Math类掌握声明和导入包什么是方法?方法(method)是为完成一个操作而组合在一起的语句组。一个类中可以有多个方法组成。例如:写一代码完成计算从整数num1到整数num2的整数和的操作。Publicstaticintsum(intnum1,intnum2)

{intsum=0;for(inti=num1;i<=num2;i++)sum+=i;returnsum;}定义(创建)方法(5.2)语法修饰符返回值类型方法名(参数列表){//方法体}方法头方法体修饰符返回值类型方法名称形式参数形参列表参数类型参数名称返回值Publicstaticintsum(intnum1,intnum2)

{intsum=0;for(inti=num1;i<=num2;i++)sum+=i;returnsum;}方法签名定义(创建)方法(5.2)方法可以返回一个值。有些方法只是执行某些操作,不返回值,这时返回类型关键字为void。注意:在其他语言中,方法称为过程(procedure)或函数(function)。带返回值的方法称为函数,返回值类型为void的方法称为过程。调用方法(5.3)创建方法只给出方法的定义。要执行方法,必须调用(call/invoke)方法。如果方法有返回值,通常将方法调用作为一个值来处理。如:ints=sum(1,100);System.out.println(sum(1,100));如果方法没有返回值,方法调用必须是一条语句。如:System.out.println(“WelcometoJava!”);当调用方法时,程序控制权转移至被调用的方法。当执行return语句或到达方法结尾时,程序控制权转移至调用者。如:调用方法(5.3)

publicstaticvoidmain(String[]args){inti=1;intj=10;

ints=sum(i,j);……}publicstaticintsum(intnum1,intnum2){intsum=0;for(inti=num1;i<=num2;i++)sum+=i;returnsum;}Example:TestSum.java调用堆栈每当调用一个方法时,系统将参数、局部变量存储在一个内存区域中,这个内存区域称为调用堆栈(callstack)。当方法结束返回到调用者时,系统释放相应的堆栈内存mains:j:10i:1调用main方法mains:j:10i:1调用max方法maxsum:51num2:10num1:1mains:51j:10i:1max方法结束main方法结束调用堆栈追踪-举例声明i并初始化调用堆栈追踪-举例声明i并初始化声明k调用堆栈追踪-举例调用max方法调用堆栈追踪-举例调用堆栈追踪-举例实参iandj的值传递给形参num1andnum2声明result调用堆栈追踪-举例(num1>num2)istrue调用堆栈追踪-举例num1赋给result调用堆栈追踪-举例返回result并赋给k调用堆栈追踪-举例执行print语句调用堆栈追踪-举例传递参数(5.5)如果方法声明中包含形参,调用方法时必须提供实参。实参的类型必须与形参的类型兼容。实参顺序必须与形参的顺序一致。当调用方法时,实参值的副本被传递给方法的形参。方法内部对形参的修改不影响实参值。publicstaticvoidnPrintln(Stringmessage,intn){for(inti=0;i<n;i++)System.out.println(message);}调用方法:nPrintln(“Hello”,3);//正确调用方法:nPrintln(3,“Hello”);//错误Example5-5:testPassByValue.java(书P129)注意在有返回值的方法中,return语句是必须的。下面的例子逻辑上是正确的,但在编译时有错误,Java编译器认为该方法可能不会返回任何值。

publicstaticintsign(intn){if(n>0)return1;elseif(n==0)return0;elseif(n<0)return–1;}要解决这个问题,删除if(n<0).方法的一个好处就是可以重复使用,如果是当前类中的静态方法,可以直接调用。其它类中的静态方法需要通过“类名.方法名”调用。非静态方法需要通过“类对象名.方法名”调用Example:testSign.java方法重载(5.8)提出问题:前面用到的max方法只能用于int数据类型。如果要求两个浮点数的最大值,该怎么办?解决方法:创建另一个方法名相同但参数不同的方法。如:publicstaticdoublemax(doublenum1,doublenum2){

if(num1>num2)returnnum1;elsereturnnum2;}这就是“方法重载”方法重载(5.8)方法重载(overloading)是指方法名称相同,但方法的参数不同的方法。一个类中可以包含多个重载的方法。当调用方法时,Java编译器会根据实参的个数和类型寻找最精确匹配的方法进行调用。调用可能匹配的方法多于一个,则会产生编译错误,称为歧义调用(ambiguousinvocation)。Example:AmbiguousOverloading.java(书/P135)Example5-9:TestMethodOverloading.java(书/P134)例:使用方法计算税款美国的个人所得税根据纳税人情况和须纳税收入进行计算。编写程序,用户输入纳税人情况和须纳税收入,计算出2002年的所得税。2002年美国个人所得税税率表Example:ComputeTaxWithMethod.java局部变量的作用域(5.9)方法内部声明的变量称为局部变量(localvariable)。变量的作用域(scope)指程序中可以引用该变量的范围。局部变量的作用域从它的声明开始,直到包含该变量的块结束为止。局部变量在使用前必须先声明和赋值。形参就是局部变量在方法中,可以在不同的非嵌套程序块中以相同的名称多次声明局部变量。但不能在嵌套的程序块中以相同的名称多次声明局部变量。在for语句的初始动作部分声明的变量,作用域是整个循环。在for语句循环体中声明的变量,作用域从变量声明开始到循环体结束。Example:TestLocalVariable.javaMath数学类(5.10)常量(double型)PI(π):3.14159265358979323846E(自然对数的底):2.7182818284590452354方法三角函数(书/P137)sin,cos,tan,asin,acos,atan,toRadians,toDigrees指数(书/P137)exp,log,log10,pow,sqrt取整(书/P138)ceil,floor,rint,round其它(书/P138)-下面都是重载方法min,max,abs,random例

生成随机字符(5.11)编写生成随机字符的方法。分析:Java中每个字符对应一个Unicode编码从0000到FFFF。在生成一个随机字符,就是产生一个从0到65535之间的随机数。由于0<=Math.random()<1.0,所以随机生成一个字条的计算表达式为:(int)(Math.random()*(65535+1))要生成两个字符之间的随机字符的表达式为:(char)(ch1

+Math.random()*(ch2–ch1+1))Example:RandomCharacter.java,

TestRandomCharacter.java方法抽象(5.12)方法的实现细节封闭在方法内,对使用该方法的用户来说是看不见可以将方法体看作一个黑匣子,其中包含了方法实现的细节。方法头方法体输入返回值对客户可见对客户不可见逐步求精(5.12)在设计较大的程序时,可以采用“分而治之”的方法,将其分解为一些子问题。子问题再被分解为更小、更易处理的问题。这种做法叫做逐步求精。自顶向下的设计自底向上的实现自顶向下的设计—举例

显示日历编写程序,显示给定年和月份的日历,运行结果如下所示。书/P141—142自顶向下设计分析printCalenderreadInputprintMonthprintMonthTitleprintMonthBodyprintMonthNamegetStartDaygetTotalNumOfDaysgetNumOfDaysInMonthisLeapYear书/P142图5-12自顶向下设计分析打印日历读取输入打印日历月份打印日历月份的标题打印日历月份的主体确定月份名称确定这个月的第一天是星期几计算1800年1月1日和日历月份的第一天之间相差的总天数计算该月的天数该年是否为闰年实现:自顶向下自顶向下法是自上而下每次实现结构图中的一个方法。把未实现的方法用待完善方法代替。(见书/P143)实现:自底向上自底向上方法是从下向上每次实现结构图中的一个方法。对每个实现了方法都写一个测试程序进行检测。两种方法结合有助于分离程序错误,使调试变得简单。Example5-12:PrintCalendar.java(书/P144)包包(package)是相关类和接口的集合,它可以提供访问保护和名称空间管理。组织功能:将相关的类和接口组织在一起,便于识别和管理防止命名冲突:不同包中的相同命名,不会产生冲突访问控制:控制包间的类型的可访问性语法packagepackagename;package语句必须位于源文件的第一条语句,源文件中定义的所有类和接口都属于指定的包。如果没有使用package语句,那么类和接口被放在缺省包(defaultpackage)中,缺省包是一个没有名称的包。包使用包的几个理由:查找定位类。避免命名冲突。便于发布软件。保护类。允许同一个包中的类访问类中被保护的成员,而外部类无权限。Optional包的命名(??)使用组织的internet域名的反序形式命名包。一个组织内部发生的命名冲突需要由组织内部的约定来处理,通常在组织名称后面包含项目名称。组织WorldWideWebConsortium

域名

包名org.w3c.domorg.w3c.dom.bootstraporg.w3c.dom.events组织TheApacheSoftwareFoundation域名

包名org.apache.tools.antorg.apache.tools.ant.helperorg.apache.catalinaorg.apache.catalina.core组织北京师范大学信息技术与软件工程学院域名

包名com.bnuitse.putcom.bnuitse.put.modelcom.bnuitse.put.viewExample:com/prehall/mypackage/Format.java包的目录Java要求包名与文件系统的目录结构一一对应。对于名为com.prenhall.mypackage的包,需创建对应的目录。换句话说一个包实际上是包含类的字节码的目录。com.prenhall.mypackage设置classpath环境变量

温馨提示

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

评论

0/150

提交评论