************************************面对对象*****************************************
1、图书管理系统
技能点:构造方法,方法重载,封装
1、所有图书显示
2、按条件查找图书
3、修改图书信息
4、删除图书信息(不真删除)
声明一个数组(逻辑删除)
思路分析:
1、类:
Book 图书
BookManager 图书管理员
Test main 程序的入口
2、类的属性:
Book:id序号 name书名 price单价 publish出版社 ISBN条形码
BookManager无需属性
Test也无需属性
3、类的方法:
Book无方法
BookManager:
addBook 添加图书
queryAllBook 查询所有图书
queryBookByName 通过书名查找图书
updateBook 修改图书
deleteBook 删除图书
Test:
main方法
main(){
声明存放图书的数组
输出菜单功能
}
常规做法:
1)属性是private形式
2)封装成get set方法
类 对象=new 类();
把对象理解成普通变量
但是普通对象里存放的是具体的值
对象存的是new出的内存地址,通过地址来找具体内容
引用类型的数组里数组元素存的是对象的地址
把要删除的元素(地址)首先复制到另一个数组中,在数组中设置为null
1.在main方法中设置一个Book类型的数组,存放已经删除的图书的数组
【重要】
方法的参数是基本类型和方法参数是引用类型的区别?
引用类型无数个
例如:String Scanner Random
数组 自己创建的类
见代码:Demo.java
DemoTest.java
方法的参数如果是基本类型,是复制了实参的值传入形参中,形参的改变不影响实参。
方法的参数如果是引用类型,是复制了实参的地址传入形参中,形参和实参是一个地址,
既然是同一个地址,所以方法内部形参改变值,方法外部实参的值也跟着改变。
技能点:
对象到底是什么?
对象就是一个内存地址,通过这个地址里存放了对象所属的类成员。
对象数组 数组里存放的是什么?
存放的是new出的对象的地址
方法参数是基本类型和引用类型,区别是什么?
类里有两类成员:
1.属性也就是成员变量,是有默认值的
属性的生命周期:也就是成员变的生命周期取决于所属的对象
只要对象在,那么成员变量就在,对象消失,成员变量就消失
属性的默认值如下:
int 0
String null
char 空格
float 0.0
boolean false
【注意】局部变量没有默认值
局部变量:声明在方法的内部,或方法中的语句块内部的变量
生命周期:调用方法时,开始出现,方法调用后就消失
【说明】局部变量必须先声明赋值,然后使用
局部变量的情况:
声明变量如果没有赋值,那么这个局部变量的内存空间实际并不存在
只有给局部变量赋值了,那么内存空间才真正分配,才允许使用
variable变量
local局部的
initialized初始化 赋值
总结:
成员变量比局部变量在内存中存在的时间更长
使用原则:
1.优先使用局部变量,其次是成员变量
2.成员变量在类中的各个方法都可以直接使用,范围比局部变量更大
作业:
商品管理系统
必做功能如下:
1、新增商品 (单价属性)
2、修改商品
3、删除(把删除的存在另外一个数组中)
4、查看所有商品
5、查看已删除商品
6、按条件查询功能(按价格的范围查询显示,例如查询30~100之间的商品)