《Java进阶》大纲

《Java进阶》

教学大纲

一、课程教学目标
(一)知识目标
1.掌握枚举的语法。
2.掌握泛型在Java中的应用规范和方法。
3.理解容器,掌握List、Set、Map的相关概念。
4.掌握内部类的概念。
5.掌握Collections工具类的作用。
6.掌握文件和IO流的相关概念。
7.理解Java线程的相关概念。
8.掌握基于TCP和UDP协议的网络编程实现原理。
9.理解反射的作用并掌握反射的运行原理。

(二)技能目标
1.会创建和使用枚举类。
2.会创建和使用泛型类,接口和方法,能使用泛型解决问题。
3.熟练使用List,Set,Map的实现类解决数据管理问题。
4.能够使用Collections工具类解决实际问题。
5.会定义和使用各种内部类。
6.熟练使用文件和各种IO流解决实际问题。
7.熟练完成基于TCP和UDP的网络通信功能。
8.熟练完成多线程下的网络通信。
9.能够使用反射创建和操作对象。
(三)速度目标
1.代码量:1000行
2.300分钟内单独完成《开心聊天室》核心功能,其中包括:需求分析、类设计、代码实现。功能包括:注册,登陆,发公告,客户端群聊,客户端单聊,客户端私聊,聊天记录管理。
细化考核目标:
(1)30分钟完成:注册
(2)20分钟完成:登陆
(3)40分钟完成:发公告
(4)40分钟完成:群聊
(5)40分钟完成:单聊
(6)60分钟完成:私聊
(7)40分钟完成:聊天记录管理
(8)30分钟综合调试
二、课程教学内容
(一)教学内容及考核要求

第一单元 枚举(4课时)

1.1 为什么要使用枚举类型
1.2什么是枚举
1.3 如何使用枚举
1.4 实现接口的枚举
1.5 包含抽象方法的枚举
知识目标:
1.理解枚举的概念。
2.理解枚举的作用。
3.掌握枚举的语法格式。
能力目标:
1.会定义枚举。
2.会熟练使用枚举进行应用。
3.会使用枚举完成贯穿案例的中相关功能。
速度目标:
1.代码量200行。
2.10分钟内使用枚举完成四季的表示
3.20分钟内使用枚举完成开心聊天室的主菜单功能。

第二单元 泛型(4课时)

2.1泛型的规则和限制
2.2系统提供的泛型类
2.3自定义泛型类、泛型接口、泛型方法
2.4泛型的有界类型(上限和下限)
2.5泛型通配符(*,?)
2.6泛型的继承规则
知识目标
1.理解泛型的概念
2.理解泛型规则限制
3.了解系统提供的泛型类和泛型接口
4.理解泛型类、泛型接口、泛型方法
5.理解泛型通配符的作用
6.理解有界通配符和有界类型形参的作用
7.理解泛型的继承规则
能力目标
1.会创建自定义泛型类
2.会创建自定义泛型接口
3.会创建自定义泛型方法
4.会使用泛型通配符
5.会使用有界通配符
6.会使用有界类型形参
7.会继承泛型类和实现泛型接口
速度目标
1.代码量600行
2.10分钟内,根据需求完成泛型接口的定义
3.10分钟内,根据需求完成泛型类的定义
4.10分钟内,根据需求完成泛型方法的定义

第三单元 容器框架及List集合(4课时)

3.1 容器框架概述
3.2 Collection接口
3.3 List集合
3.3.1 什么是List接口
3.3.2 ArrayList集合类
3.3.3 Vector集合类
3.3.4 ArrayList与Vector的区别
3.3.5 List集合泛型应用
3.3.6 List集合应用泛型优势
3.4 Iterator迭代器
3.4.1 Iterable接口
3.4.2 用Iterator迭代器遍历集合
3.4.3 用ListIterator遍历集合
3.4.3 Iterator迭代器泛型应用
3.4.4 使用foreach遍历集合
3.4 Queue集合
3.4.1什么是 Queue接口
3.4.2 LinkedList集合类
3.4.3 ArrayList和LinkedList的区别
3.5集合类中常见的数据结构
3.5.1 数组
3.5.2 栈
3.5.3 队列
3.5.4 链表

知识目标:
1.掌握Collection接口的常用方法
2.掌握List接口的常用方法
3.理解泛型的优点
4.掌握ArrayList和LinkedList类的使用
5.理解ArrayList和LinkedList的区别及适用情况
6.理解ArrayList和Vector的异同点
7.理解Iterable接口与集合遍历之间的关系
8.掌握使用Iterator接口进行集合遍历
9.掌握使用增强的for循环进行集合遍历
10.了解使用Iterator接口和增强的for循环遍历集合的区别
技能目标
1.能够使用ArrayList实现集合的存储
2.能够用LinkedList实现集合的存储
3.能够使用Vector实现集合的存储
4.能够使用Iterator接口及实现类完成集合的遍历
速度目标:
1.代码量250行
2.20分钟内完成以下案例:
创建一个保存字符串对象的List集合,并进行以下操作:
(1)向集合中添加字符串“张三”。
(2)向集合中添加字符串“李四”
(3)用向集合中添加字符串“王五”
(4)遍历输出所有信息。
3.40分钟内完成以下案例:
(1)定义学生类(Student),该类的属性包括:姓名、年龄、成绩,重写toString()方法。
(2)定义测试类(Test),在测试类中执行以下操作:
常见5个Student类的对象,通过构造器对各属性进行赋值;
将创建的5个Student对象放入到List集合中;
遍历输出每个Student对象的基本信息。

第四单元 容器-Set集合(4课时)

4.1 Set集合概述
4.1.2 什么是Set接口
4.1.2 List与Set的区别
4.1.3 Set接口的常用方法
4.2 常用的Set集合类
4.3.1 HashSet类
4.3.2 LinkedHashSet类
4.3.3 TreeSet类
4.3.4 各Set集合类的性能分析
4.3.5 Set集合泛型应用
4.3.6 Set集合应用泛型优势
4.3 List和Set的区别
4.4 比较器
知识目标:
1.掌握Set接口的特点和常用方法
2.掌握List集合和Set集合的区别
3.掌握HashSet类的使用
4.了解LinkedHashSet和TreeSet类的使用
5.掌握HashSet、LinkedHashSet和TreeSet之间的区别
6.熟悉Collections类的功能和常用方法
7.理解Collection和Collections之间的区别
技能目标
1.能够使用LinkedHashSet存储集合
2.能够使用HashSet存储集合
3.能够使用TreeSet存储集合
4.能够使用Collection是类的常用方法操作集合
速度目标:
1.25分钟内完成以下案例:
(1)分别使用HashSet、LinkedHashSet、TreeSet创建三个Set集合对象
(2)向三个Set集合对象向分别放入4个字符串:“one”、“two”、“three”、“four”
(3)遍历输出3个Set集合中的内容,查看并分析输出结果之间的区别。
2.25分钟内完成以下案例:
(1)创建一个List集合对象
(2)向List集合对象中放入4个字符串:“one”、“two”、“three”、“four”
(3)使用Collections类中的sort()方法对List集合对象进行排序
(4)遍历输出List集合中的内容,查看并分析输出结果
3. 代码量300行

第五单元 容器-Map(4课时)

5.1 Map接口
5.1.1 为什么使用Map
5.1.2 Map接口常见实现类
5.1.3 Map接口常用方法
5.2 HashMap的使用
5.2.1 HashMap常用方法的使用(put,get,size,isEmpty ,remove,clear)
5.2.2 Map的遍历
5.2.3 Map泛型应用
5.2.4 Map应用泛型优势
5.3 HashMap,HashTable和LinkedHashMap的区别
5.4 TreeMap
5.4.1向TreeMap中添加元素并遍历

知识目标:
1.理解Map集合的结构和特点
2.掌握Map接口的常用方法
3.掌握HashMap类的使用
4.了解LinkedHashMap和TreeMap的使用
5.理解HashMap、LinkedHashMap和TreeMap之间的区别
6.掌握遍历Map集合的基本方法
7.了解Map.Entry的使用
速度目标:
1.40分钟内完成以下案例:
(1)定义学生类(Student),该类的属性包括:学号、姓名、年龄、成绩,重写toString()方法。
(2)定义测试类(Test),在测试类中执行以下操作:
常见5个Student类的对象,通过构造器对各属性进行赋值;
将创建的5个Student对象放入到Map集合中;
遍历输出每个Student对象的基本信息。

第六单元 Collections工具类(4课时)

46.1 Collections类
6.1.1 Collections和Collection的区别
6.1.2 Collections的常见方法
6.2 模拟斗地主洗牌和发牌
6.2.1斗地主发牌原理
6.2.2斗地主洗牌和发牌的实现逻辑
6.2.3将发到的牌进行排序
知识目标:
1.理解Collections工具类的作用。
2.理解Collections与Collection的区别。
3.掌握Collections工具类的常用方法的语法。
能力目标:
1.会熟练使用Collections工具类的常用方法。
2.会使用Collections工具类的方法解决实际问题
速度目标:
1.代码量:400行。
2.10分钟内使用常用方法实现集合排序
3.10分钟内使用常用方法实现集合查找
4.10分钟内使用常用方法实现集合反转

第七单元 IO流(一)(4课时)

7.1 File类
7.1.1 File类访问文件的方法
7.2.2 File类访问目录的方法
7.2 Java中的IO流
7.2.1 什么是流
7.2.2 流的分类
7.2.3 字节流
7.2.4 字符流
7.3 字节流、字符流
7.3.1 FileInputStream类的常用方法
7.3.2 FileOutputStream类的常用方法
7.3.3 FileReader类的常用方法
7.3.4 FileWriter类的常用方法
知识目标:
1.理解File类的概念。
2.了解IO流的分类。
3.理解字节流的概念。
4.理解字符流的概念
能力目标:
1.会使用File对象访问文件属性。
2.会使用FileInputStream对象读取文件内容。
3.会使用FileOutputStream对象写入文件的内容。
4.会使用FileReader对象读取文件内容。
5.会使用FileWriter对象写入文件内容。
速度目标:
1.代码量:300行。
2.30分钟内完成读取D盘目录下所有的mp3文件的操作.
3.30分钟内完成项D盘目录下hello.txt文件中写入“hello Java”。
4.20分钟内完成读取D盘目录下hello.txt内容到控制台。

第八单元 IO流(二)(4课时)

58.1 缓冲流
8.1.1 使用缓冲流的目的
8.1.2 BufferedReader类的常用方法
8.1.3 BufferedWriter类的常用方法
8.1.4 BufferedInputStream类的常用方法
8.1.5 BufferedOutputStream类的常用方法
8.3 转换流
8.3.1 使用转换流的目的
8.3.2 InputStreamReader类的常用方法
8.3.3 OutputStreamWriter类的常用方法
8.4 打印流
8.4.1 PrintStream类的常用方法
8.4.2 PrintWriter类的常用方法
知识目标:
4.了解节点流和处理流的区别。
5.掌握缓冲流的概念。
6.掌握数据流的概念。
7.掌握转换流的概念。
8.掌握打印流的概念。
能力目标:
1.会使用BufferedInputStream类读文件的方法。
2.会使用BufferedOutputStream类写文件方法。
3.会使用BufferedReader类读文件的方法。
4.会使用BufferedWriter类写文件的方法。
5.会使用InputStreamReader类转换字节输入流。
6.会使用OutputStreamWriter类转换字节输出流。
7.会使用PrintStream类实现字节流打印。
8.会使用PrintWriter类实现字节流打印。
速度目标:
1.代码量:400行。
2.20分钟内使用BufferedReader和BufferedWriter读写磁盘文件。
3.20分钟通过PrintStream和PrintWriter向磁盘中输出文件及内容。

第九单元 IO流(三)(4课时)

9.1对象序列化
9.1.1 什么是序列化和反序列化
9.1.2 使用对象流实现序列化和反序列化
9.2 Properties类的使用
9.2.1 load方法
9.2.2 setProperty,getProperty方法使用
9.3 RandomAccessFile的使用
9.4 新IO的特性(NIO,AIO)
9.4.1 阻塞IO和异步IO
9.4.2 同步IO和异步IO
9.4.3 字符集
9.4.4 NIO的使用
知识目标:
1.理解对象序列化和反序列化的概念。
2.理解NIO和BIO的区别。
3.理解字符集的作用。
能力目标:
1.能够通过对象流实现对象的序列化和反序列化。
2.能够通过Properties类实现配置文件的读写。
3.能够通过RandomAccessFile类随机读写文件的内容。
4.可以熟练使用Buffer读取Channel中的数据。
速度目标:
1.代码量:400行。
2.20分钟内实现学生对象的序列化和反序列化。
3.40分钟内通过NIO的方式实现用户的登录和注册。

第十单元 内部类(4课时)

10.1 成员内部类
10.1.1 什么是成员内部类
10.1.2 使用this关键字获取内部类与外部类的引用
10.2 局部内部类
10.2.1 什么是局部内部类
10.3 匿名内部类
10.3.1 什么是匿名内部类
10.4 静态内部类
10.4.1 什么是静态内部类
10.5 内部类的继承(扩展)
10.6 java8新增的lambda表达式
知识目标
1.理解嵌套类的概念
2.理解成员内部类的概念
3.理解局部内部类的概念
4.理解匿名内部类的概念
5.理解内部类的概念
6.理解静态嵌套类的概念
7.理解内部类和静态嵌套类的区别
8.理解Lambda表达式的概念
9.理解内部类和Lambda表达式的关系
能力目标
1.掌握成员内部类的创建和使用
2.掌握局部内部类的创建和使用
3.掌握匿名内部类的创建和使用
4.掌握静态嵌套类的创建和使用
5.了解内部类的继承
6.掌握Lambda表达式的使用
速度目标
1.10分钟内,完成成员内部类的创建和测试
2.10分钟内,完成局部内部类的创建和测试
3.10分钟内,完成匿名内部类的创建和测试
4.10分钟内,完成静态嵌套类的创建和测试
5.10分钟内,完成使用Lambda表达式改造项目

第十一单元 多线程(一)(4课时)

11.1线程概述
11.1.1什么是线程和进程
11.1.2多线程的优势是什么
11.2怎么创建线程和启动线程
11.2.1继承Thread类创建线程类
11.2.2实现Runnable接口创建线程类
11.2.3 用Callable和Future创建线程
11.3线程的生命周期
11.3.1新建和就绪状态
11.3.2运行和阻塞状态
11.3.3线程死亡
11.4 线程的调度
11.5线程的控制
11.5.1 join线程
11.5.2设置守护线程:setDaemon
11.5.3线程睡眠:sleep
11.5.4线程让步:yield
11.5.5线程中断:interrupt
11.5.6改变线程优先级
知识目标:
1.掌握线程的概念
2.掌握多线程的优点
3.掌握创建线程的两种基本方式
4.掌握线程生命周期的基本状态和状态转换条件
5.了解如何实现带返回值的线程任务
6.掌握主要的线程控制方法
能力目标:
1.能够熟练使用两种方式实现线程类。
2.能够实现线程的创建和启动。
3.能够实现线程状态的控制。
4.能够完成本章贯穿案例。
速度目标:
1.代码量300行
2.20分钟内完成快餐店点餐和出餐程序:主线程中创建点餐线程和出餐线程,点餐线程添加订单,出餐线程出餐完成后删除已完成订单。
3.15分钟内编写代码模拟接力赛跑。

第十二单元 多线程(二)(4课时)

12.1线程同步
12.1.1为什么出现线程安全问题
12.1.2如何解决线程安全问题
12.1.3什么是同步代码块
12.1.4什么是同步方法
12.1.5释放同步监视器的锁定
12.1.6什么是Lock同步锁
12.1.7什么是死锁
12.2线程通信
12.2.1传统的线程通信
12.2.2使用Condition控制线程通信
知识目标:
1.掌握线程同步的概念和作用
2.掌握同步锁的概念和两种同步锁的区别
3.掌握线程通信的概念
4.掌握死锁的概念和死锁产生的条件
能力目标:
1.能能够使用同步方法和同步代码块实现线程互斥。
2.能够使用Lock同步锁实现线程互斥。
3.能够使用synchronized同步机制实现生产者消费者线程同步。
4.能够使用Lock同步机制实现生产者消费者线程同步。
速度目标:
1.代码量300行
2.20分钟内完成快餐店点餐和出餐程序:使用synchronized同步机制实现点餐线程和出餐线程的同步。
3.20分钟内完成快餐店点餐和出餐程序:使用Lock同步机制实现点餐线程和出餐线程的同步。

第十三单元 多线程(三)(4课时)

13.1 阻塞队列
13.1.1什么是阻塞队列
13.1.2 BlockingQueue接口
13.1.3 BlockingQueue的常用实现类
13.2 线程池
13.2.1什么是线程池
13.2.2 几种常用线程池
13.2.3 Executors工具类
知识目标:
1.掌握阻塞队列的概念
2.掌握几种阻塞队列的特点和区别
3.掌握线程池的概念
4.掌握线程池的作用和原理
5.掌握几种线程池的不同
能力目标:
1.能够熟练使用阻塞队列实现生产者消费者模型。
2.能够创建和使用线程池完成Runnable任务。
3.能够创建和使用线程池完成Callable任务。
4.能够创建和使用定时线程池完成定时任务。
速度目标:
1.代码量300行
2.20分钟内完成快餐店点餐和出餐程序:主线程中创建点餐线程和出餐线程,点餐线程将订单放入阻塞队列,出餐线程从队列中取订单。
3.20分钟内使用线程池完成快餐店点餐和出餐程序。

第十四单元 网络编程(上)(4课时)

14.1 什么是计算机网络
14.2 计算机网络的分层
14.2.1 OSI七层模型
14.2.2 TCP/IP四层模型
14.3什么是网络通信协议
14.3.1 IP协议
14.3.2 TCP协议
14.3 什么是IP地址
14.4 使用InetAddress
14.5什么是端口
14.6 什么是套接字
14.7 使用ServerSocket类和Socket类进行网络通信
知识目标:
1.掌握计算机网络基础知识
2.掌握IP地址的概念
3.掌握端口号的概念
4.掌握套接字的概念
5.掌握TCP协议下网络通信的原理
技能目标
1.能够使用InetAddress包装IP地址
2.能够使用ServerSocket类接收客户端连接
3.能够使用Socket类和ServerSocket类建立连接
4.能够完成TCP协议下的服务器和客户端的一次网络通信
速度目标:
1.代码量600行
2.25分钟内完成以下案例:
完成客户端和服务器的一次消息通信,服务器向客户端输出“你好,客户端”,客户端向服务器输出“你好,服务器”。

第十五单元 网络编程(中)(4课时)

15.1基于TCP协议的服务端和客户端无限通信
15.2基于TCP协议的服务端和客户端即时通信
15.3基于TCP协议的服务端群发消息的实现
15.4基于TCP协议的客户端群发消息的实现

知识目标
1.掌握基于TCP的即时通信的流程
能力目标
1.能够完成基于TCP协议的一个服务端和一个客户端的即时通信
2.能够完成基于TCP协议的,一个服务端和多客户端的连接
3.能够完成基于TCP协议的客户端和客户端之间的即时通信
速度目标
1.代码量1000行
2.25分钟内完成以下案例:
完成一个客户端和一个服务器的即时通讯功能。

第十六单元 网络编程(下)(4课时)

16.1基于TCP协议的客户端私聊的实现
16.2 关闭socket
16.3 TCP协议的小结
16.4基于UDP协议的网络编程
16.4.1 UDP协议发送数据
16.4.2 UDP协议接收数据
16.5了解基于NIO实现的非阻塞通信(扩展)
16.6了解基于AIO实现的非阻塞通信(扩展)
知识目标:
1.了解NIO模型。
2.了解AIO模型。
3.理解UDP协议的通信原理。
能力目标:
1.能够实现基于UDP协议的网络通信。
速度目标:
1.代码量:400行。
2.20分钟内实现客户端向服务端的单向信息通信(UDP)
3.20分钟内实现客户端和服务端的双向信息通信(UDP)

第十七单元 反射(上)(4课时)

17.1类加载
17.1.1什么是类的加载
17.1.2类初始化时机
17.1.3什么是类加载器
17.2反射概述
17.2.1为什么使用反射
17.2.2什么是反射
17.3 Class类
17.3.1 Class类创建的三种方式
17.3.2 三种方式的区别和场景
17.4利用反射分析类(分析构造器,属性,方法)
17.5 运行时使用反射分析对象
17.6反射与泛型
知识目标
1.了解JVM和类的关系
2.理解类的声明周期
3.理解类的加载
4.了解类加载器
5.理解类初始化的时机
6.理解反射的获得类信息的过程
能力目标
1.掌握使用反射获得类或接口的信息
2.掌握使用反射获得内部类的信息
3.掌握使用反射获得构造方法的信息
4.掌握使用反射获得成员变量的信息
5.掌握使用反射获得成员方法的信息
速度目标
1.代码量:800行
2.10分钟内,通过反射获得类的基本信息(类名、所在包、父类、实现接口、修饰符等信息)
3.10分钟内,通过反射获得类中构造方法的信息(修饰符、参数列表等信息)
4.10分钟内,通过反射获得类中成员变量的信息(变量名、类型、修饰符等信息)
5.10分钟内,通过反射获得类中成员方法的信息(方法名、修饰符、返回值类型、参数列表等信息)

第十八单元 反射(下)(4课时)

18.1 反射创建对象
18.2 反射操作对象
18.3 设计模式
18.4动态代理
18.4.1 什么是动态代理
18.4.2 使用JDK动态代理
能力目标
1.理解反射的概念
2.理解设计模式的概念
3.理解代理模式的概念
4.理解静态代理的概念
5.理解动态代理的概念
能力目标
1.能使用反射机制创建对象
2.能使用反射机制调用方法
3.能使用反射机制操作成员变量
4.能使用反射机制创建数组对象
5.会使用静态代理对目标对象进行控制
6.会使用动态代理对目标对象进行控制
速度目标
1.代码量:600行
2.10分钟内,实现从文件中读取类信息并生成对象
3.10分钟内,实现成员方法的调用
4.10分钟内,实现成员变量的操作
5.10分钟内,实现数组的创建和使用
6.10分钟内,使用静态代理为目标方法增加异常处理
7.10分钟内,使用动态代理为目标方法增加异常处理

第十九单元 综合案例(4课时)

多线程聊天(涵盖枚举、泛型、容器、流、线程、网络编程等技术)
小组自主完成安排的项目任务(小组项目任务各不一样)
附录:
项目任务需求说明

第二十单元 项目答辩(4课时)

项目答辩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值