面向对象课件第4章 变量
面向对象技术第四章方法jsp精品PPT课件
public static void main(String args[]) { int u=23,v=100;
System.out.println("Before Calling"); System.out.println("u="+u+" v="+v); s); System.out.println("After Calling"); System.out.println("u="+u+" v="+v); } }
第四章 方法
学习目标
• 方法的概念 • 掌握方法的声明 • 掌握方法调用及方法调用过程 • 局部变量只在声明它的方法内可用
类由数据成员和方法组成。方法定义类对象的行 为或可执行的操作,也可以作为类对象与外界交换 信息的界面。方法与其他算法语言的函数、子程序 相似,是独立的程序模块。
一个类可以有多个方法,通过方法完成特定的功 能。方法一旦定义,就可以在不同的程序段中多次 调用。
//定义计算平方值的方法 public class Fangfa4_2 { public static int Square1(int x)
{ int s; s=x*x; return (s);
}
public static void main(String args[])
{ int x1=7;
System.out.println("y="+Square1(x1)); }
// 使用无参方法 public class Fangfa4_4 {
static void sum1() {
java第4章PPT教学课件
2020/12/12
2020/12/12
3
图示:类与对象的关系
2020/12/12
4
4.2 面向对象软件开发的基本过程
1、面向对象的软件开发过程 2、面向对象的分析阶段 3、面向对象的设计阶段 4、实现阶段
2020/12/12
5
1、面向对象的软件开发过程ቤተ መጻሕፍቲ ባይዱ
用面向对象的方法来解决实际问题,是一个比较复 杂的过程,它包括面向对象的分析(OOA)、面向对象的 设计(OOD)和面向对象的编程(OOP)。
这些需求进行分析和筛选,与用户协商,去掉用户的需求中 的不合理元素,形成一个合理的方案。
需求分析的过程是一个复杂、烦琐、甚至艰难的过程, 通常需要反复讨论、协商和修改,才能达成最后的一致。需 求分析非常重要,如果做的不好, 会形成隐患和障碍,影响
整个开发工作。需求分析最后应形成书面的需求陈述。
2020/12/12
2020/12/12
2
2、什么是类
在Java程序中,类是创建对象的模板,对象是类的实例, 任何一个对象都是隶属于某个类的。
类是同种对象的集合与抽象。分类所依据的原则是抽象, 即抽象出能反映与当前目标有关的本质特征,而忽略那些与当 前目标无关的非本质特征,从而找出事物的共性,把具有共同 性质的事物归结为一类,得出一个抽象的概念——类。
6
图示
2020/12/12
Java面向对象程序设计第4章_类与对象
值的级别不可以高于该参数的级别 。
例4-4
public class Rect { //负责创建矩形对象的类 double width,height,area; void setWidth(double width) { if(width>0){ this.width=width; }} void setHeight(double height) { if(height>0){ this.height=height; } } double getWidth(){ return width; } double getHeight(){ return height; } double getArea(){ area=width*height; return area; }}
1.对成员变量的操作只能放在方法中,方 法可以对成员变量和该方法体中声明的局部变 量进行操作。 2.需要注意的是:实例方法既能对类变量操 作也能对实例变量操作,而类方法只能对类变 量进行操作。 3.一个类中的方法可以互相调用,实例方法 可以调用该类中的其它方法;类中的类方法只 能调用该类的类方法,不能调用实例方法。
给类命名时,遵守下列编程风格(这不是语法要求 的,但应当遵守):
◆ 1.如果类名使用拉丁字母,那么名字的首字母使用大写字母, 如。 2.类名最好容易识别、见名知意。当类名由几个“单词”复 合而成时,每个单词的首字母使用大写。
第4章面向对象程序设计基础Java程序设计及应用精品PPT课件
常用方法:部分常见方法如表4-1所示
4.3.2 方法调用
方法的调用即该方法的调用运行。例如isPfime ();
【例4-4】调用业已定义的方法ScircleArea,计算面积。
4.3.3 参数传递
参数传递方式有传值与传地址两种。
若方法的参数为简单数据类型,则传值,即将实参的值传递给形参 若方法的参数为复合数据类型(对象),则传地址,即将实参的地址
面向对象方法
4.1.2 面向对象软件的开发过程
面向对象方法的程序开发过程可以大体划分为面向对象的分析 (Object Oriented Analysis,OOA)、面向对象的设计(Object Oriented Design , OOD ) 、 面 向对象的实 现 ( Object Oriented Programming,OOP)三个阶段。
或可一句语句直接完成:
» 类名 对象名=new类名([参数表]);
使用new后,java实际上完成了如下操作:
(1)在指定类上创建了一个对象;
(2)为该对象分配了引用内存空间(类似于数组分配内存空间);
(3)执行由指定类所定义的构造方法完成一系列初始化工作。
例如,系统已创建了Person类,利用它可生成两个对象 Mali和 John:
Person Mali;
\\ Mali对象两句语句完成
Mali=new Person();
Person John=new Person();
\\ John对象一句语句完成
29.10.2020 第4章 面向对象程序设计基础
8
4.4 对象与构造方法
4.4.2 对象的引用
Java中,当用类创建一个对象后,该对象就拥有了自己的成员变量 和方法,对象通过使用这些方法可以产生一定的行为。即可以达到 通过引用对象成员变量和方法的形式来引用对象。
面向对象程序设计实用第4章.ppt
任务4 使用控件选择图片
跟文件的相关控件
驱动器列表框控件DriveListBox,用来查看当 前计算机中有哪些盘。
目录列表框控件DirListBox,用来查看某个盘 中有哪些文件夹,或者某个文件夹中有哪些子文 件夹。
给第3章的记事本程序添加状态栏控件,要 求在状态栏控件内能显示<CapsLock>键和 <Insert>键的状态。
项目1 制作简单的图片浏览器程序
在程序里面添加适当的图片,不但可以美 化程序的界面,还可以起到了引导用户操 作的作用,增强程序的可操作性。在 ViauslBasic里,可以通过使用图片框控件 (PictureBox) 和映像框控件(Image)来 显示一幅图片。本项目是要制作一个简单 的图片浏览器程序 。
还学习了Windows系统按驱动器和文件夹层次地组织文件 的方法以及使用DriveListBox、DirListBox和FileListBox 三 个控件来浏览存放在计算机任意文件夹里的文件。最后通 过一个例子学习了如何在程序中添加工具栏和状态栏,使 得程序的界面更具专业感。
思考与练习题
做一个动画程序。准备三个内容连续的图 片文件,使用Timer控件和LoadPicture控件 依次并循环加载这三个图片文件,实现一 个简单的动画。
小结
PictureBox控件和Image控件的使用方法、特点以及一些重 要的属性。
一般的图片可以分为位图和矢量图两种,我们可以根据实 际的需要选择使用哪一种。同时考虑到将所有的图片都加 到程序会是程序文件的容量变大,这时可以使用 LoadPicture语句实现动态加载图片,即在需要使用图片时 才从程序外部加载图片。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章变量、常量及数据类型4.1变量变量在计算机中对应的就是一个能够存储数据的内存地址,里面存放了程序运行时的各种数据,里面的数据是可以变化的。
打个比方,变量就相当于一个个空的盒子,每个盒子都有一个标签以之对应,这个标签就是变量名,程序运行时只要找到了标签就找到了盒子,也就找到了存放在盒子里面的数据。
4.1.1给变量命名给变量命名就是给计算机的内存盒子贴上标签,在贴标签的过程中要符合一定的规则,只有符合这些规则的标签才能作为变量名。
1、变量名必须满足的条件●只能为字母(包括大小写)、数字、@符号以及下划线_。
●数字不能放在首位,但下划线可以。
●字符“@”只能放在首位,不能放在任何其他位置。
同时,C#是一种大小写敏感的语言,也就意味着同样的字符串,只要大小写不同也是两个不同的变量名。
2、不能定义为变量名的字符串在C#语言中有一些字符串已经被系统使用,这些保留的字符串就叫做关键字,它们是不能用做变量名的。
C#中一共有77个关键字,这些关键字虽然不能用做变量名,但是若前面加上前导字符@也可以做为变量名使用,但是我们不推荐这样做。
表4-1 C#关键字列表abstract as base bool breakbyte case catch char checkedclass const continue decimal defaultdelegete do double else enumevent explicit extern false finallyfixed float for foreach gotoif implicit in in intinterface internal is lock long namespace new null object operatorout out override params private protected public readonly ref returnsbyte sealed short sizeof stackallocstatic string struct switch thisthrow TRUE try typeof uintulong unchecked unsafe ushort usingvitual void volatitle while4.1.2声明变量1.单变量的声明方法单变量的声明遵照以下的语法格式:数据类型变量名;例如:int number;该语句定义了一个数据类型为整形的单变量,该变量的名字叫做number。
2.多变量的声明方法如有多个变量是同一种数据类型,那么可以在同一条语句中将它们声明完毕,例如:string x,y,z;这条语句同时声明了三个string类型的变量,分别命名为x y z。
但是需要注意的是同一条语句中只能声明同种类型的变量,不能混合声明,例如:string x,int y,double z;这个变量的声明方式是不能通过编译的,在这种情况下只能分开声明为三条单变量的语句。
string x;int y;double z;4.1.3变量的作用域变量的作用域是变量在程序中的有效范围,也就是变量在程序中创建和销毁的跨度。
根据变量的作用域可以将变量划分为类的字段级变量和方法体内的局部变量。
C#中变量作用域的规则如下:●如果变量以类的字段的形式定义,那么它的作用域与类本身所在的作用域相同;●如果变量是方法体的局部变量,那么它的作用域限于声明它的方法体内部,即以{}为界限。
●如果变量是在for、while、foreach循环语句中定义的变量,那么它的作用域限于该循环体内。
代码4-1 变量的作用域namespace Code4_1{class SampleObjcet{//类的字段级变量,和类本身的作用域相同public string sampleValue;}class VariableScope{//public string fieldvar;public void DoSomething(){//SomeVar为方法体的局部变量,作用域局限于其方法体内部,以{}为界var SomeVar = "some var";int[] SomeVars = { 1,2,3,4,5};//item为循环体变量,作用域在其循环体内部foreach (var item in SomeVars){Console.WriteLine(item);}//这里定义SampleObjcet类的对象sObjce,其字段sampleValue的作//用域和该对象的作用域相同SampleObjcet sObjcet = new SampleObjcet();sObjcet.sampleValue = "sampleValue's scope";}}}4.1.4变量的初始化声明变量是用来存放数据的,所谓初始化就是对刚声明的变量进行初始赋值的过程。
基于安全的考虑,C#对于变量的初始化过程有一定的要求:●所有方法体内的局部变量在被初始化之前都会被当作编译异常,这意味着局部变量在声明的时候就要赋值,例如代码4-1中SomeVar为方法体的局部变量,因而在声明时就要赋值为var SomeVar = "some var",若只声明不赋值,例如varSomeVar 则编译时会抛出错误。
●所有类的字段级变量,可以只声明不初始化,在这种情况下,编译器会自动将其初始化为所属类型等价于0的值,例如布尔类型被初始化为false,数值类型被初始化为0,所有引用类型被初始化null。
4.1.5类型推断所谓类型推断就是编译器通过对变量的初始值判断进而推断出变量具体类型。
C#中,编译器只能推断出局部变量的类型,不能推断出字段级变量的类型。
这是因为局部变量声明即要初始化赋值,这样编译器就可以判断其真实变量类型。
C#类型推断只要引入关键字var来定义变量的数据类型即可,例如:var i=10;这样编译器就能够推断出变量类型为整形。
代码4-2 var关键字的使用class Person{private int Age;public void SayHello(){var message = "My age is {0}";Console.WriteLine(message,Age);}}代码中字段级变量Age不能使用关键字var进行类型推断,局部变量message声明时就要初始化,因此可以用var关键字进行类型推断。
4.2常量常量就是一旦声明并且初始化就不在改变的数据。
常量的声明要使用关键字const,语法格式与变量类似:[常量修饰符] const 数据类型常量名;例如:public const int a=1;常量修饰符可以是public,protected,internal和private。
这些修饰符的具体含义将在“方法”一章中具体讲解。
常量是静态的,它能够在类中直接访问,除此之外常量还有一些特征需要了解:●常量必须在声明的时候就立即初始化,其值在初始化后将无法再进行更改。
●常量必须使用显式类型声明,不能使用类型推断关键字var。
●常量即可以作为类的字段级常量,也可以是定义在方法体内作为局部常量。
4.3数据类型声明变量遵照的语法格式中,数据类型是必要的部分。
它定义了数据的模型,其包含了很多的数据模板信息,比如:数据所需要的空间大小;取值范围;继承的基类信息以及自身的方法、字段、事件等。
在C#中主要的数据类型包括值类型和引用类型。
作为值类型的变量,它们直接存放程序运行时所涉及的数据,且彼此之间的数据内容是隔离的,不会影响。
值类型包含了简单类型、枚举类型和结构类型三种。
作为引用类型的变量存储的是存放数据的内存地址,因此两个命名不同的引用类型变量若存储的是同一个内存地址,则实际上对应着同一个数据,这也导致了变量之间相互影响的现象。
引用类型包含了类、接口、委托、数组、字符串。
4.3.1值类型4.3.1.1简单类型简单类型是值类型中的一种,它包括整数类型、浮点类型、十进制类型和布尔类型1.整数类型C#中有9种不同的整数类型,它们分别是:短字节型(sbyte )、字节型(byte )、短整型(short )、无符号短整型(ushort )、整型(int )、无符号整型(uint )、长整型(long )、无符号长整型(ulong )和Unicode 字符(char ),划分的依据是整数类型在内存中所占的位数。
表4-3 C#中的整数类型整数类型 含义取值范围 Sbyte 有符号8位整数 -128~127 Byte 无符号8位整数 0~255Short 有符号16位整数 -32768~32767 Ushort 无符号16位整毅 0~65535Int 有符号32位整数 -2147483648~2147483647Uint 无符号32位整数 0~4294967295Long 有符号64位整数 -9223372036854775808~9223372036854775807 Ulong 无符号64位整数 0~18446744073709551615 Char16位字符0~65535char 之所以是整形是因为它用于声明一个16位的Unicode 字符,通过它可以表示世界上大多数语言。
字符型变量的初始化有三种方法: 方法1:直接赋值字符char s=’X ’; //s 变量中存储字符X方法2:通过前缀\x (十六进制转义符)给字符变量赋值char s=’\x0058’; //s 变量中存储字符X方法3:通过前缀\u (Unicode 表示法)给字符变量赋值char s=’\u0058’; //s 变量中存储字符X2. 浮点型浮点数是在计算机系统中用来表示实数的数据类型。
在C #中,浮点型数据包括单精度浮点型(float )和双精度浮点型(double )两种类型。
它们的差别在于取值范围和精度不同。
单精度浮点型:取值范围在38383.41410 3.0--⨯⨯+之间,精度为7位数。
单精度浮点型的赋值方法为:float x=3.1415f ;这里需要注意的是f 不能省略,因为在默认情况下,赋值运算右侧的实数被视为double 类型,如果上面的声明没有使用后缀f ,则会因为你试图将一个double 值存储到float 变量中而发生编译错误。
双精度浮点型:取值范围在3243085.011001.7-±⨯±⨯之间,精度为15到16位数。
如果希望一个整数被视为double 类型,则整数后面可以使用后缀d ,例如:double x=100d ;计算机对浮点数的运算速度大大低于对整数的运算速度,因此在对精度要求不高的情况下,可以采用float 类型,对精度有较高要求的情况下可以采用double 类型。