项目一计算器主讲:雷静任务一:•完成简单计算器的程序设计,能够通过控制台实现两个数的加、减、乘、除。•本节目标:•掌握变量、标识符的定义;•掌握简单数据类型的使用;•掌握各种运算符的使用;变量的定义•变量是Java程序中存储数据的基本单元。•声明变量的语法为:•数据类型变量名[=值][,标识符[=值]…];•Java中的所有变量都必须声明后才能使用。通过将标识符用逗号隔开可以声明多个变量,变量区分大小写。标识符•用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。•Java语言规定标识符由字母、数字、下划线“_”和美元符号“$”组成,并且第一个字符不能是数字符号。•Java语言中的标识符是严格区分大小写的。•关于标识符的另一个重要限制是,不能使用Java语言的关键字。Java标识符的长度没有任何限制。基本数据类型变量•变量声明由以下三个部分组成:–数据类型–名称–要赋给的初始值(可选)语法:数据类型标识符[=值][,标识符[=值]…];标识符•标识符必须以字母,下划线“_”或“$”符号开头。首字母后面可以跟任意数量的字母,数字,下划线“_”或“$”符号。•可以包含数字,但不能以数字开头。•不能使用Java关键字。•判断下列变量名是否合法:•Myvariable•9pins•a+c•_9pins-9pins数据转换类型自动类型转换强制类型转换将一种类型的变量赋给另一种类型的变量时,只要满足以下条件,就会发生自动类型转换:两种类型兼容;目标类型大于源类型;强制转换用于显式类型转换。如果被转换的值的数据类型大于其目标类型,就会丢失部分信息类型强制转换•类型强制转换使程序将变量视为某种类型,尽管此变量中包含的是另一类型的数据••示例:floatc=34.89675f;intb=(int)c+10;//将c转换为整型算术运算符赋值运算符关系运算符逻辑运算符•编写程序实现Xn,n!。•本节目标:•掌握Java语言中的各种流程控制语句的使用。任务二:控制流语句的类型•判断语句–if-else语句–switch-case语句•循环语句–while循环–do-while循环–for循环if-else语句•If-else语句测试条件的结果,然后根据此结果来执行相应的操作•它可用于以两个不同的路径来执行程序•if-else语句的语法为:•if(condition)•{•action1;•}•else•{•action2;•}switch-case语句•switch-case语句可用于替换if-else-if语句•在表达式可以得出多个值的情况下,使用此语句•使用switch-case语句会带来更好的效果•switch-case语句的语法为:•switch(表达式){•case1:•操作1的语句;•break;•case2:•操作2的语句;•break;•….•casen:•操作n的语句;•break;•default:•默认语句;•}循环3-1while只要指定的条件评估为true,while循环则执行一个语句或一组语句语法intcount=0;while(count10){System.out.println(count);count++;}示例while(测试){//语句}被执行条件=true循环3-2do-whiledo-while循环执行某些语句,直到指定的条件为真。此循环确保循环体至少执行一次语法do{System.out.println(count);count++;}while(count10)示例do{//语句}while(测试)被执行条件=true循环3-3forfor循环主要用于按预定的次数执行语句或语句块语法for(count=0;count10;count++){System.out.println(count);}示例for(初始化;测试;增量){操作语句;}条件=true被执行跳转语句2-1•两种跳转语句为:–break–continue•break语句:用于终止块。•continue语句:有时程序员可能希望继续循环,而停止处理其主体内的其余代码,以进行特定的迭代。continue语句可用于这种操作。•运用面向对象的思想,编写计算器类,并定义加、减、乘、除四个方法。•本节目标:•掌握类和对象的声明;•掌握类的继承实现;•掌握类的覆盖和重载的区别和使用。任务三:面向对象编程OOP旨在在计算机程序中模拟现实世界中的概念在OOP中,现实世界的所有事物全都被视为对象能够在计算机程序中用类似的实体模拟现实世界中的实体设计和实现软件系统的方法对象对象面向对象编程的核心为计算机应用程序提供实用基础完成特定任务表示现实世界中的实体“对象是存在的具体实体,具有明确定义的状态和行为。”类•类以共同特性和操作定义实体•类是用于组合各个对象所共有操作和属性的一种机制形状类动物类汽车类类的示例“类是具有相同属性和行为的一组对象的集合”属性•事物的特性在类中表示为变量•每个对象的每个属性都拥有其特有的值•属性名称由类的所有实例共享住址姓名属性年龄“在类中表示对象或实体拥有的特性时称为属性”促销员对象在Java中实现类•语法•classclassname{•bodyofclass•}•其中,•class是创建类所使用的关键字,•classname是类的名称,•bodyofclass包含属性和方法的声明。类中的方法6-1方法的定义方法的名称参数列表方法的主体方法返回的对象类型或原始类型类中的方法6-2•语法•returntypemethodname(type1arg1,type2arg3,…){•setofstatements•}•其中,•returntype是方法返回值的数据类型•methodname是用户自定义的方法名称•方法的参数列表是一组变量声明。类中的方法6-5•实例方法可使用圆点符号来访问–方法被调用的对象在圆点左边,而方法的名称在圆点右边–例如:Obj.isAvailable();this关键字•用于任何实例方法内,指向当前对象•this的值指向对其调用当前方法的对象•this关键字可在需要当前类类型的对象引用时使用构造方法•每当创建给定类的实例时就调用的方法•与类同名,但没有返回类型•Java为对象分配内存,初始化实例变量并调用构造方法•两种构造方法–参数化构造方法–隐式构造方法继承父类子类父类/子类是相对的Cow类Lion类Tiger类Animals类Carnivorous类Herbivorous类Coat类继承的特点继承的特点具有层次结构子类继承了父类的非私有属性和方法继承的优点继承的优点代码的可重用性父类的属性和方法可用于子类设计应用程序变得更加简单可以轻松地自定义子类子类构造方法2-1子类构造方法的名称与类的名称相同先调用父类构造方法,再调用子类构造方法要调用父类构造方法,使用关键字super子类构造方法2-2•调用父类构造方法的语法为:•super()或super(参数列表);•super()方法始终指向调用类的父类多态性2-2父类子类-绘制和移动三角形子类-绘制和移动矩形子类-绘制和移动五边形ShapeDraw()Move()TriangleDraw(){DrawTraingle}Move(){MoveTriangleVertices}RectangleDraw(){DrawRectangle}Move(){MoveRectangleCorner}PentagonDraw(){DrawPentagon}Move(){MovePentagonVertices}方法重载方法重载类中有多个具有相同名称的方法方法重载类中有多个具有相同名称的方法方法具有不同的参数列表方法覆盖方法覆盖子类和父类的方法具有相同的名称和类型用子类对象调用子类中的重写方法super.methodname()用于调用父类中的方法•编写程序完成计算器的界面设计。•本节目标:•掌握包的定义与包的导入;•掌握修饰符的作用范围;•掌握AWT图形界面组件类的使用;•掌握布局管理器的使用;任务四:包•包允许将类组合成较小的单元(类似文件夹),使其易于找到和使用相应的类文件•有助于避免命名冲突。在使用许多类时,类和方法的名称很难决定。有时需要使用与其他类相同的名称。包基本上隐藏了类并避免了名称上的冲突•包允许在更广的范围内保护类、数据和方法,可以在包内定义类,而在包外的代码不能访问该类“包将类名空间划分为更加容易管理的块,包既是命名机制也是可见度控制机制”创建包•packagemypackage;•publicclassCalculate{•publicdoublevolume(doubleheight,•doublewidth,•doubledepth)•{•……•}•……•}•声明包导入包•importmypackage.Calculate;•publicclassPackageDemo{•publicstaticvoidmain(Stringargs[])•{•Calculatecalc=newCalculate();•……•}•}导入包访问修饰符3-1•信息隐藏是OOP最重要的功能之一,也是使用访问修饰符的原因•信息隐藏的原因包括:–对任何实现细节所作的更改不会影响使用该类的代码–防止用户意外删除数据–此类易于使用访问修饰符访问修饰符privateprotectedpublic默认访问修饰符3-2该类或非该类均可访问public只有该类可以访问private相同数据包中的类可以访问默认该类及其子类的成员可以访问,同一个包中的类也可访问protected访问修饰符3-3•访问修饰符可访问性位置private默认protectedpublic同一个类是是是是同一个包内的类否是是是不同包内的子类否否是是不同包并且不是子类否否否是方法修饰符方法修饰符staticfinalabstractstatic修饰符3-1•static修饰符修饰的方法叫静态方法•目的–使该方法独立于类的实例,使用类去访问,而不是类实例,所以也叫类方法static修饰符3-2•调用静态方法的语法为:•classname.methodname();规则可以调用其他静态方法必须访问静态数据不能使用super或this关键字final修饰符final不能修改变量子类不能重写方法abstract修饰符3-1•由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类•抽象方法必须声明在抽象类中•抽象方法语法:abstracttypemethod_name(parameter_list);•声明抽象类语法:•abstractclass{……}•使用:父类中的某些抽象不包含任何逻辑,并需要在子类中重写,子类提供这种抽象方法的实现细节abstract修饰符3-2•抽象类可以具有指向子类对象的对象引用abstract抽象类不能被实例化构造方法和static方法不能是抽象的父类的抽象方法往往在子类中实现java.awt包中的类体系结构ComponentButtonCheckboxContainerChoiceCanvasTextComponentLabelPanelWindowAppletFrameDialogTextAreaTextField容器•可以存放组件的区域,可在容器上进行绘制和着色•java.awt包中的Container类可直接或间接派生出两个常用容器:框架(Frame类)和面板(Panel类)。•框架是一个带有边框的独立的窗口。•面板是包含在窗口中的一个不带边框的区域。容器–框架•框架是独立于Applet和浏览器的一个窗口。•可以通过以下任一构造函数来创建:容器-面板•面板不是一个单独的窗口,它只是包含在窗口中的一个区域。•面板是可以将许多组件组合起来的一种容器。•必须将面板添加到窗体中。标签•通常用来指明项目的用途•标签不可以被用户编辑文本域•一种用来输入文本的GUI组件•只能接受