湖南科技职业学院软件职业技术学院 教师课时授课计划 教师姓名: 授课班级: 授课课时:4 课程名称:JAVA程序设计 第 1 课 教学循环号:1 课题 为什么JAVA  各教学环节课时分配 讲授  4 课时   有指导的实践  1 课时   独立实践  1 课时  教学内容 分析客户要求 确定基于Web编程要用的编程语言  重点 分析客户要求  难点 分析客户要求  教具 多媒体  作业 独立实践  授课日期 (校历) 第 周星期 第 节   第 周星期 第 节   第 周星期 第 节   第 周星期 第 节  课后小结 通过本课的学习,学生掌握了: java是一个纯面象对象的编程语言,具有安全性,平台独立性,高性能,简单性的特征 java不支持多重继承,不支持运算符重载 java支持接口,它是一组抽象方法  详细教学过程附后 详细教学过程: 一、教学目标陈述(5分钟) 二、JAVA编程语言的介绍(25分钟) 1.Java的历史 ? Java 为由Sun Microsystems公司开发的 面 向 对 象 编 程 语 言 ? Sun Microsystems的 首 席 程 序 员James Gosling,创 建 一 个 新 的语 言Java以克 服C++ 中 的问 题 ? Gosling的新 语 言 以C++ 为 主 线, 但 克 服 了C++ 的 缺 陷 2.Java程序分类 ? 程序有二类:应用程序和小应用程序 ? 应用程序 可任何操作系统提示下执行 它们可以是基于窗口的应用程序或是控制台应用程序 它们比applets有更为安全的特权 它们驻 留 在 本 地 机 器 的硬 盘 上 ? Applets 在支持Java的浏览器中执行 它们是基于窗口的 它们只可访问宿主机上资源;它们不可访问被下载计算机上的文件 它们驻 留 在 远 程 计 算 机 上 三、实例分析 1.D.1(45*2分钟) 1、问题陈述 CellGO公司是移动通信领域中全球领先的公司之一。CellGO的客户分布在不同国家。CellGO 要有一个系统,使客户只要按一下键就能得到关于它的产品和模式的信息。它还要一个谈话实用程序,将便于来自任何国家、使用任何操作系统的个人可与它的客户服务中心(Customer Care Centre)的专家交互。此系统应是安全和可靠的。 CellGO 有一个用C++开发的内部使用的系统。他们要尽可能地重用这个程序以减少新应用的开发时间。 此新应用需要在三个月内由现有的C++开发者小组开发出来。 CellGO的技术主管办公室(CTO) 推荐Java 作为所选的语言,因为它满足新应用的所有需求并阐明- “现有的小组将能够尽早地学习这个新的语言,以便减少学习时间和开发时间 CTO 必须向管理层描述选择Java作为新系统的编程语言的合理性 证明Java是其优选的语言 2、确定需求 在世界任何位置的可访问性 客户要一个顾客管理系统,它将使任何国家的各个人能收到CellGO 提供的关于其产品和模式的帮助 没有病毒的系统 系统应很可靠足以防止影响系统的病毒 跨平台应用 客户和商人应能够使用任何类型的操作系统平台 速度 CellGO 要一个计算机化的系统,它能够使客户和商人按一下键就可得到关于它的产品和模式的信息 开发时间 整个应用需在三个月内开发完 3、问题的分析(确定支持需求的Java性质) Java 是一个Internet 编程语言: 可用Java程序跨网络地访问数据,不管其源平台 Java是安全的 : 由于Java 作了强类型检查,对程序所作的任何变动都标签为错误,且程序将不执行。因此,Java 是安全的 Java 是独立于语言的平台: Java 编译器把Java 代码编译成被Java 环境 理解的中间字节代码。Java 解释器或任何的Java-使能的 Internet浏览器可执行这些字节代码 由于字节代码的编译过程和浏览器对它的解释,使Java程序可在不同的硬件和操作系统上执行 Java 是高性能的语言: Java 程序在速度上可与C 和 C++之类基于编译的语言相比较。Java 程序比用其他的基于解释的语言写的程序要快,如BASIC Java是简单的 Java的语法类似于C++。Java 不支持指 针、多 重 继 承性、goto语句、及运 算 符 重 载 使应用开发周期慢下来的 C++ 特性已在Java 中删去 Java 防止由于不合适的内存用法而引起的错误,程序员不必操纵内存 Java是一个简单的语言,新程序员也可容易地学习它 4、问题验证 Java 与 C++对比 Java 是一个纯面向对象语言,因为Java 中每个语句都写在类内。C++中, main()方法总是写在类外。 Java中,所有的数据类型,除了初等类型外,都是对象。即使初等数据类型也可封装在类内 数据类型 Java 除了C++中有的外,还有二个附加的初等数据类型 byte 数据类型占有一个字节的内存空间,可存储整数 另一个数据类型boolean ,可存储二个布尔值(true 和 false)之一 Java省略了C++中有的pointers 和 structs Java中,字符数据类型存储Unicode格式的字符,不象C++中8位ASCII格式。 Unicode可存储亚洲语言字母表的 16-位字符格式 Java中数据类型有固定的大小,与所用的操作系统无关 构造 Java中诸如 if...else, while, 和 do...while 构造的表达式都以布尔值为其结果 switch 构造和 for 循环都类似于C++中相应的构造 继承性 Java不支持多重继承 Java 中所有的类都是从 Object 类派生出来的 为继承一个类,你使用 extends 关键字 方法重载 Java允许方法重载,但不支持运算符重载 数组 C++中数组是元素的集合,而Java中数组是实在的对象,因为你可用new 运算符分配内存给数组 Java中检查数组访问以确保其下标落在数组的范围内 语法: <data_type> []<array_name>; <data_type> <array_name>[]; 上面给出的第一个语法是Java 中惯用的 在声明数组之后,你必须为它分配内存 数组长度存储在变量length中 String 对象 Java中串(String)是一个实在的对象,不象C++那样是一个以空为终结的字符数组 Java 中, String对象是一致的。获取串和访问串的方式对所有系统都是一致的。它们有良定义的编程接口 Java 中 String 对象是可靠的。它们不会引起程序中的内存泄漏 main() 方法 Java 中 main() 方法都在类声明内定义 Java 中main() 方法的用法: Java 中 main() 方法和它定义的类应声明为public,因为Java运行环境必须访问main()方法以执行程序 main()方法应声明为 static因为此类的任何对象在创建前它必须存在 其命令行参数是String 类型变量– main(String args[])。变元的个数由String类对象确定 执行 Java程序 称为Java 虚拟机 (JVM)的程序执行 Java 程序。JVM 包含运行环境和类加载器 你必须保存带.java 扩展的 Java 源文件。此文件的名应与公共类名一样 当你编译.java文件时,创建了 .class 文件 为编译文件你使用 javac 实用程序。执行 .class文件,你使用此 java 实用程序 例如。为编译和执行Welcome类: 保存文件为Welcome.java 在命令提示处,打入javac Welcome.java <Enter> 在此命令提示处,打入java Welcome <Enter> 包 Java中你使用包来组织相关的类 通过使用import语句,你可在程序中使用 Java 包 包有类似于目录结构的层次结构 import 语句的语法: 包的名后接星号(*)或包中类的名。点 (.) 分割元素 为指出类是包的成员,你使用package 关键字 此包语句必须是import 语句之后文件的第一个语句 访问区分符 Java有四种类型的访问区分符: public, protected, private, and friendly 缺省访问区分符是friendly。你不使用此字,friendly,因为它不是关键字。是表示此缺省区分符的一个口语的术语 Java 中每个声明你必须指出访问区分符 Java 中 protected成员变量和方法对所有的子类和对于同一包中的类是可见的 Java 中friendly成员变量和方法仅在同一包中的类是可见的 废料收集 C++ 中, 你用new 分配内存,用 delete解除内存 Java 中, 你不可删除内存中的对象,因为运行系统为你考虑此事。 废料收集器一直运行并解除不用的内存 抽象类和接口 与C++中 virtual类等价的是Java中abstract类 修饰符abstract用来指出类或方法是抽象的 abstract修饰符的语法: 接口是一组抽象方法。用接口提供了Java 中多重继承的性质 接口可用来实现不相关的类之间的继承关系 结果 看一看Java的性质和它与C++的类似性, 显然,现有的小组将能够容易地学习Java 1.D.2(45分钟) 1、问题陈述 为减少新应用的开发工作量, CellGO有重用用C++写的现有应用的某些类的计划。以下 Customer 类是用C++设计的。用Java重写此代码。 public: Customer() { strcpy(customerID,”CID001”); strcpy(name,”Carol”); age=29; } void displayDetails() { cout<<” Customer ID is ” <<customerID; cout<<” Customer Name is ”<<name; cout<<”Customer age is ”<<age;} }; void main() { Customer custObj; custObj.displayDetails(); } 2、分析解决问题 识别需要改变的数据类型. 结果: 改变所有字符数组为String 对象,因为用 Java时,字符数组说明为String类的对象 识别要用的方法和函数 Java 使用了所有系统资源,如:在System 类帮助下的显示设备和键盘。此类包含处理系统资源所需的 所有方法 out是封装在System 类的一个对象,表示标准的输出设备。此对象包含println()方法 println()方法在屏幕上显示数据 结果: 因为Java 使用 System 类以便与显示和键盘设备接口,用System.out.println()替代cout 对象 用Java 写出此类 保存文件 动作: 保存此文件为Customer.java 3、验证 验证编译此程序没有错误 动作: 在命令提示处,打入javac Customer.java <Enter> 四、指导性练习 1.P.1(45分钟) 1、问题陈述 以下 Dealer类是用C++设计的。用Java重写它. class Dealer{ char dealerID[10]; char name[20]; char dealerAddress[30]; public: Dealer() { strcpy(dealerID[],”DID001”); strcpy(name,”Carol”); strcpy(dealerAddress,”21 Rock St., NY, 56417”); } void displayDetails() { cout<<”Dealer ID is ”<<dealerID; cout<<”Dealer name is ”<<name; cout<<”Dealer address is ” <<dealerAddress; } }; void main() { Dealer dealer; dealer.displayDetails(); } 2、问题分析 3、验证 四.总结(10分钟) 五.独立实践(45分钟) 布置学生进行独立实践1.MR.1、1.MR.2 根据完成情况进行少量讲解