一、教学模式
1. 案例驱动教学模式介绍【了解】(视频01) (4‘’)
-
什么是案例驱动教学模式
通过新知识点去优化代码
-
优化代码的目标
提高复用性
提高可读性
提高维护性
二、分类思想
1. 分类思想【理解】(视频02) (11‘’)
-
为什么分类
因为分类,可以提高代码的 复用性、可读性、维护性
-
分类的核心思想
分工协作,专人干专事
单一职责原则:一个类或者一个方法只负责一项职责
-
分类思想的使用-案例
三、分包思想
1. 包的概述和定义【理解】(视频03) (6‘’)
-
什么是包
本质上就是文件夹
-
为什么分包
不同功能的类文件,放在不同的包下。方便管理和后期维护
-
包的创建规则
-
包名所有字符均为小写,同时不能有特殊字符(% ¥ $ @ ! 等等)
-
多级包之间使用”.”进行分割
-
公司域名地址翻转(去掉www)
比如:黑马程序员的网站地址是: www.itheima.com
包的命名就是 com.itheima.项目名…
互动: www.taobao.com
-
-
package关键字
package : 用于指定一个类在哪个包下
2. 包的注意事项和类访问【理解】(视频04) (11‘’)
-
包的注意事项
- package 语句必须是程序的第一条可执行代码
- package 语句在一个java文件只能有一个
- 如果没有package,默认无包名
-
类的访问
-
同一个包下类的访问
- 不需要导包,直接使用即可
-
不同包下类的访问
-
import关键字
import : 指定引用类所在包的路径
必须在: package 关键字下面,class关键字上面
-
全类名访问
包名+类名
应用场景: 引用类时,出现包路径不同, 类名相同的情况
-
-
四、项目实战(黑马信息管理系统)
1. 需求说明和效果演示【了解】(视频05) (5‘’)
2. 环境搭建【】(视频06) (8‘’)
-
创建模块 itheima-edu-info-manager
-
创建包、创建类
包 | 存储的类 | 作用 |
---|---|---|
com.itheime.edu.info.manager.domain | Student.java | 封装学生信息 |
com.itheime.edu.info.manager.dao | StudentDao.java | 访问存储数据,进行增删改查(库管) |
com.itheime.edu.info.manager.service | StudentService.java | 业务的逻辑处理(业务员) |
com.itheime.edu.info.manager.controller | StudentController.java | 和用户打交道(客服接待) |
com.itheime.edu.info.manager.entry | InfoManagerEntry.java | 程序的入口类,提供一个main方法 |
3. 菜单搭建【】(视频07) (13‘’)
-
黑马管理系统菜单
——————–欢迎使用黑马信息管理系统—————————-
1、学生管理 2、老师管理 3、退出
请输入您的选择:
-
学生管理系统菜单
——————–欢迎使用黑马<学生>管理系统—————————-
1、添加学生 2、删除学生 3、修改学生 4、查询学生 5、退出
请输入您的选择:
-
开发思路
- 用输出语句完成主界面编写
- 用Scanner实现键盘录入数据
- 用switch语句完成操作选择
注意: 学生菜单的退出,是回到上级菜单,并不是将整个程序退出
System.out.println("--------------欢迎使用黑马信息管理系统--------------"); System.out.println("请输入您的选择:1、学生管理 2、老师管理 3、退出"); Scanner scanner = new Scanner(System.in); String next = scanner.next(); switch (next) { case "1": System.out.println("学生管理!"); break; case "2": System.out.println("老师管理!"); break; case "3": System.out.println("感谢您的使用!"); System.exit(0); //退出当前正在运行的虚拟机 break; default: System.out.println("请重新输入有效值!"); break; }
-
退出当前正在运行的虚拟机
System.exit(0);
自由练习-15分钟 (注意:命名规则 , 选择JDK)
4. 添加功能-思路分析【理解】(视频08) (4‘’)
- 需求明确
-
开发思路分析
核心还是理解分类思想
-
类与类之间的相互调用 (代码实现)
通过new对象,让其它类帮我们做事
通过返回值,获取事情的反馈结果
-
代码到底是该写到那个类? (放错了也没关系)
将搞不清楚的东西,统统放到service类里面就可以了
-
类的调用是单向的
Controller类中就是调用Service类, Service类中就是调用Dao类的
-
5. 添加功能-代码实现【重点】(视频09) (15‘’)
-
代码图
-
对象存储-数组
自由练习
6. 添加功能-加入学号判断【重点】(视频10) (15‘’)
- 思路分析
- controller 调用 service的 isExists方法 获取id是否存在,存在提示id重复,重新输入,不存在继续正常的添加流程
- service 调用 dao的 findAllStudent方法,遍历数组判断是否存在,返回结果
- dao 获取数组信息返回
- 代码图
自由练习-15分钟
7. 添加功能-问题分析【重点】(视频11) (3‘’)
同一个类,new出来的对象是不同的实例, 不同的实例中对象的成员变量存储空间是不同的
8. static关键字【重点】(视频12) (10‘’)
-
static关键字、可以修饰哪些成员
static关键字 可以修饰成员变量,成员方法
被static修饰的成员变量,一般叫做静态变量
被static修饰的成员方法,一般叫做静态方法
-
被static修饰的成员特点
- 多了一种调用方式,可以通过类名.进行调用
- 被static修饰的成员,会被该类的所有对象所[共享]
- 被static修饰的成员,会随着类的加载而加载,优先于对象存在
9. static注意事项-学号存在问题解决【】(视频13) (7‘’)
-
static 关键字 – 静态方法
- 静态方法只能访问静态的成员
- 非静态方法可以访问静态的成员,也可以访问非静态的成员
- 静态方法中是没有this关键字
自由练习-10分钟(另一种解决方式)
10. 查看学生-代码实现【】(视频14) (10‘’)
- 需求
- 开发思路
- 代码图(只有关键代码)
11. 删除功能-代码实现【】(视频15) (14‘’)
- 需求
- 开发思路
- 代码图(只有关键代码)
12. 修改功能-代码实现【】(视频16) (8‘’)
-
需求
-
开发思路
- 代码图(只有关键代码)
13. 代码优化【】(视频17) (8‘’)
业务相同的重复代码,可以提取到一个方法中,提高代码的复用性
14. 老师管理系统-环境搭建【】(视频18) (2‘’)