第5讲 使用类和对象编程(三) 内部类 实例 程序控制结构 选择语句.

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

第五章 类的继承和派生 Inheritance/extends/derive. 教学目标 理解继承的概念和作用 派生类的定义 理解访问修饰符 protected 方法的重写 继承下的构造函数的使用 继承下的 finalize 方法的使用 理解超类和子类的关系.
系統分析與設計 楊子青 H-1 H 、物件導向技術 n 物件導向的基本概念 – 物件、類別 – 封裝、繼承 – 同名異式 ( 多型 ) 、超荷 ( 過載 ) n 物件導向分析與設計及塑模工具 n UML 塑模工具.
第6章 对象和类.
第3-2章 类与 对象 Java类的特性 教学内容: 类的私有成员与公共成员 方法的重载 构造方法 实例成员与静态成员 重点: 重载 难点:
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
第 9 章 物件的建構.
项目6 通用堆栈.
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
四資二甲 第三週作業 物件導向程式設計.
C#程序设计案例教程 第3章 程 序 结 构.
第一章 面向对象程序设计.
第 5 章 流程控制 (一): 條件分支.
程設一.
第二章 JAVA语言基础.
Ch07 介面與多重繼承 物件導向程式設計(II).
第三章 控制结构.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
程設一.
Ch08 巢狀類別 物件導向程式設計(II).
程式設計實作.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
控制流程 邏輯判斷 迴圈控制.
H、物件導向技術 物件導向的基本概念 物件、類別 封裝、繼承 同名異式(多型) 、超荷(過載) 物件導向分析與設計及塑模工具 UML塑模工具.
物件導向程式設計 (Object-Oriented rogramming)
第二章 C# 基础知识.
第四章 在 C# 中实现 OOP 概念.
CHAPTER 9 建構方法 ROBERT.
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
第六章 类的扩展与继承.
程式敘述執行順序的轉移 控制與重複、方法 Lecturer:曾學文.
第3章 語法入門 第一個Java程式 文字模式下與程式互動 資料、運算 流程控制.
程式設計實作.
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
程序设计期末复习 黎金宁
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
實作輔導 3 日期: 4/14(星期六) 09:10~12:00、13:10~16:00
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
2019/1/17 Java语言程序设计-程序流程 教师:段鹏飞.
Java程序设计 第2章 基本数据类型及操作.
C/C++/Java 哪些值不是头等程序对象
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
第16章 虛擬與多形 16-1 虛擬函數 16-2 純虛擬函數與抽象類別 16-3 多形 16-4 虛擬繼承與虛擬解構子.
第三章 C# 基础知识.
辅导课程八.
第二章Java基本程序设计.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
主编:钟元生 赵圣鲁.
Interfaces and Packages
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 Java语法基础.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
第1章 数据结构基础概论 本章主要介绍以下内容 数据结构研究的主要内容 数据结构中涉及的基本概念 算法的概念、描述方法以及评价标准.
C# 匿名委派 + Lambda + Func 建國科技大學 資管系 饒瑞佶.
PPT注意事项: 当前PPT课件文件必须和提供的源代码文件夹“代码”在同一目录中即不要移动文件夹“代码”的默认位置。
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基础语法 北京传智播客教育
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
第6章 继承和多态 伍孝金
Presentation transcript:

第5讲 使用类和对象编程(三) 内部类 实例 程序控制结构 选择语句

目标 了解内部类的定义和使用 掌握定义简单内部类的方法 理解程序控制结构 根据程序需要设计合理的布尔表达式 运用分支语句实现选择结构的程序设计

内部类 类可以嵌套定义,即在一个类的类体中,还可以嵌套定义另外一个类。被嵌套的类称为内部类(Inner Class),它的上级称为外部类。内部类中还可以再嵌套另一个类,在最外层的类被称为顶层类(Top level class)。内部类的创建方法与外部类相似。实例代码3_7 使用内部类的原因: Inner class methods can access the data from the scope in which they are defined—including data that would otherwise be private. Inner classes can be hidden from other classes in the same package. Anonymous inner classes are handy when you want to define callbacks without writing a lot of code.

匿名内部类 有一种称为匿名内部类(anonymous inner class)的内部类,是指可以利用内部类创建不具名称的对象,并利用它访问类里的成员。匿名内部类的创建不同于普通的内部类的创建,不需要定义类名,直接用new创建对象。 class Out{        void show(){            System.out.println("this is Out showing.");        }    }  

public class TestAnonymousInterClass{        public static void main(String args[]){            TestAnonymousInterClass test=new TestAnonymousInterClass();            test.show();        }        //在这个方法中构造了一个匿名内部类        private void show(){            Out anonyInter=new Out(){// 获取匿名内部类实例                                void show(){//重写父类的方法                    System.out.println("this is Anonymous InterClass showing.");                }            };            anonyInter.show();// 调用其方法    }

实例一 已知圆半径,用面向对象的编程方法,计算圆面积。 分析: 一切数据和操作被封装在对象中,可以将圆作为一个对象来处理。这里的数据就是圆的半径,操作即计算圆面积。 进一步分析: 对象是类的实例化,因此需要创建一个类,属性就是半径。计算圆面积,需要获得圆的半径,而半径应该能够变化,这些操作是类的属性行为,操作在类中以方法的形式表示,因此需要在类中建立3个方法,分别用来读取半径、修改半径和计算面积。 类和方法的设计: Circle作为类名,数据为Radius,创建的3个方法:getRadius()、setRadius()和computeArea()。

实例一(续) class Circle { private double radius; public Circle(double r) { radius=r; } public double getRadius() { return radius; } public void setRadius(double newRadius) { radius=newRadius; } public double computeArea() { return radius*radius*3.14159; }

实例一(续) public class Ex3_10 { public static void main(String args[]) { Cricle myCircle=new Circle(5.0); System.out.println(“the circle radius is :” + myCircle.getRadius() + ”the circle area is :” + myCircle.computeArea()); myCirle.setRadius(myCircle.getRadius()*2.0); System.out.println(“the circle radius is :” + myCircle.getRadius() + ”the circle area is :” + myCircle.computeArea()); }}

实例代码Ex3_10 程序分析:声明了类Circle,方法getRadius、setRadius和computeArea()分别用来读取、修改半径和计算圆面积。主方法中先通过自定义构造方法circle(double r),实例化对象myCircle并对其成员变量进行初始化。第一行输出语句中,myCircle.getRadius()获得圆的初始化半径5.0,然后由此半径计算圆面积;下一行语句 myCirle.setRadius(myCircle.getRadius()*2.01); 修改了圆的半径为10.0,再据此半径计算新的圆面积。

实例2 设计一个名为Fan的类模拟风扇,属性为speed 、on、radius和color。假设风扇有3种固定的速度,用常数1、2、3表示慢、中、快速。写一个用户程序,程序中创建一个Fan对象,具有最大速度、半径为10、黄色、打开状态的属性。要求返回包含类中所有属性值的字符串。 分析:这个问题已经给了类名和属性名,我们需要设计的是如何获得和修改4个属性值,以及如何将4个属性转换为字符串。

小结 变量、常量的定义 类的定义 对象的创建 方法的声明 实例变量(或方法)和静态变量(或方法) 方法重载和构造方法 内部类的定义*

程序设计的三种基本结构 面向对象程序的主体是类及对象,对象是属性及方法的封装。 在设计一个对象的方法时,还要对具体的处理过程进行分析,并通过形式化的程序设计语言表示这个过程。从程序设计语言的宏观上看,处理过程呈现出顺序结构,从局部看,处理过程还要重复或者选择。Java提供了基本的程序控制语句处理这些结构。 这三种基本结构是“顺序结构”、“选择结构”、“循环结构” 。

基本控制结构示意图 图4-1 基本控制结构示意图

选择结构 选择结构用于判断给定的条件是否满足(真或假),以决定执行某个分支程序段。Java有几种类型的选择结构语句: 1、简单if语句; 2、双分支if…else语句; 3、嵌套if语句; 4、if…else if语句; 5、多分支switch语句等。

简单if语句 简单if语句又称单分支if语句,它的格式如下: 程序执行流程图如图4-2所示。 执行过程是: {语句组;} 程序执行流程图如图4-2所示。 执行过程是: 如果布尔表达式值为真, 则执行语句组,否则, 不执行语句组。 【例4.1】判断一个整数是否能被3整除。

双分支if…else语句 if…else语句的格式如下: if(条件表达式){ 语句组1; } else{ 语句组2; 程序执行流程如图4-3所示 从键盘输入一个正整数,判断其是奇数还是偶数

嵌套if语句 当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。 其一般形式可表示如下: if(表达式) if语句; 或者为 else 嵌套可以一层一层展开,原则上没有深度的限制。但是,嵌套的层数不宜过多。如上例 if(i>k){ if(j>k) System.ou.println("i和j大于k。"); else System.ou.println("i大于k,j小于或等于k。"); }

If…else if 语句 当有多个分支选择时,可采用if-else-if语句,其一般形式为: 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; … else if(表达式m) 语句m; else 语句n; 其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。

switch语句 switch语句(又称开关语句)是和case语句一起使用的,其功能是根据某个表达式的值在多个case引导的多个分支语句中选择一个来执行。它的一般格式如下: switch(表达式){ case 判断值1:语句块1;[break;] case 判断值2:语句块2;[break;] case 判断值3:语句块3;[break;] …… case 判断值n:语句块n;[break;] default:语句块n+1 }

switch语句 switch后面括号中表达式的值必须是符合byte,char,short,int类型的常量表达式,而不能用浮点类型或long类型,也不能为一个字符串。 一个switch语句可以代替多个if—else语句组成的分支结构,而switch语句从思路上显得更清晰。 【例4.3】 输入一个百分制成绩,输出相应等级,等级划分如下: 100≥成绩≥90,等级为“优秀” 89≥成绩≥80,等级为“良” 79≥成绩≥70,等级为“中” 69≥成绩≥60,等级为“及格” 成绩≤60,等级为“不及格”

作业与实验 作业 习题3的10、11 实验 Java基本数据类型简单编程