系列文章目录
文章目录
前言
主要是想对前面所学做一个复盘,利用起来016之前所学
一、ppt概述
有哪些功能?
你在一个公司,公司里面有很多人,你要选一些人来组成开发的团队,基于这样的一个数据的增删改查,只不过数据依然不在数据库里面,而是在一些类里面
1、什么叫对象的关联
1)、(简单的)依赖关系
即我对象里面:我代码里面用到你的类型这就叫依赖
A类中出现了B类、C类、D类、E类
2)、关联关系
3)、聚合
4)、组合
5)、继承(Generalization,又称泛化,is-a的关系)
我们后面把这个数据放到项目里面去
并且要把它们变成对象
选人的时候也要考虑对象的类型,架构师、设计师和程序员、普通员工是不要的(也就是说需要判断员工类型)
主界面
添加成功后的界面
注意删除的时候是删除的团队编号,而不是员工编号
继承
整个项目分为三大模块
视图层–业务逻辑层–数据层(暂时放弃,因为没有暂时我们不使数据库)
二、分析:视图类与管理类分析
三、分析:Javabean实体类与Data类分析
四、分析:包结构
1、创建项目
2、建包
一共要创建的包有:
com.atguigu.bean
com.atguigu.view
com.atguigu.service
(工具类:)
com.atguigu.utils
(测试:也可不写,直接写在view里面也行)
com.atguigu.test
(异常:有点项目组就直接放在管理类里面,你也建一个包)
com.atguigu.exception
五、功能实现:主界面功能
0、先把数据拿到:如果报错,改一下包名
1、然后bean里面先写最基础的员工类型
PPT上直接有设计,可以按照PPT上面的来
添加完属性之后,按照eclipse的功能依次自动生成属性–>构造器–>get/set–>方法
然后写它的子类:程序员类 Programmer.cs 继承至员工
注意这个包别导,这是一个网络状态的一个包,跟我们这里所说的没有关系,这个Status类是我们自己写的
下面我们解决这个Status问题,创建一个枚举,就如图选最后一个
添加三个状态即可、
这个时候可以在程序员类 Programmer 里面添加构造器了,先生成无参构造,再生成有参构造
这里生成有参构造的时候有一个技巧
其它的get/set跟以前没有区别、往下写就行,然后重新toString();
在这里插入图片描述
2、下面写下一个类型:设计师
设计师继承 程序员
属性多了个奖金
同样的 属性–>构造器–get/set–>方法(先把重写toString()方法写上)
先选无参构造,如下
再选有参的,如下
注意有参的程序员类有两个,我们们选下面那个,也可两个都选(这里我们就全部写了吧)
3、 下面写架构师类,继承至设计师类
只是多了一个属性,其它的操作跟上一个设计师类一模一样 属性–>构造器–>get、set–>toString()方法
到这里,人的四个类型就已经写完了(员工–程序员–程序设计师–架构师),他们之间是有继承关系的
4、设备接口完善和 PC类、打印机类
那么实现这个抽象方法的子类我们假设是PC类:
实现Equuipment这个接口
实现Equuipment这个接口过程中我们发现一个问题,因为接口中有抽象方法,所以这里报错了,我们必须要去实现这个抽象方法
对应的,我们要加个 笔记本类
也是实现我们的 设备接口 Equipment
完成上面的操作之后,我们也要重写计算机的 详细信息描述
下面再看打印机类
也去实现我们的接口,同样的操作
重写描述详细信息
bean 包的1.0版本到这里就结束了
下面就要把Data里面的数据分封装成一个个的对象了
5、bean包 1.0版本结束,开始封装数据对象
那么这些数据要像bean里面这些类一样变成一个一个对象,写在哪里呢?
写在我们的管理类,哪个管理类呢?
当然是写在全公司的员工管理类 里面
静态导入
Data中的EMPLOYEE遍历二维数组,把一行一行的数据封装成一个个Employee,Programmer等的对象,放到all数组中
将 对象转为基本数据类型的过程是 拆箱
结构如下:
那么到底是有参构造还是无参构造呢?,无参构造没有把数据传过去,我们肯定是想要有参构造
员工如下:
员工完了之后,程序员怎么去判断呢?程序员会多一个设备,就可以利用这个去判断
有一些复杂,我们用一个方法来完成这个需求
调用很方便,但是我们怎么去写这个方法呢?
打印机也是同样的操作
设备的方法就完成了,下面再来看设计师
奖金这样写就行了,很简单
注意架构师也是和上面一样的写法
只是奖金这里的声明不用再次声明了,因为前面已经声明了
至此,初始化信息就写完了
写了这么多,这个方法在哪用呢?
这俩方法不调用肯定是不会用的,我们将它写在构造器里面
接下来,我们验证一下效果
.
6、初次验证效果:写打印功能1.0版本
分两步
新增一个方法
下面验证一下
验证有两种方法去运行
1、@Test
2、我们之前预留了test包,在test包里面写也行
方式2
运行效果如下:
大致成形了,但是格式有点乱七八糟的,是什么原因造成的呢?是因为我们的toString()方法重写的问题
处理方式其实也有很多种,可以不继承,就是不使用super,但是这样会很麻烦,
那到底应该怎么办呢?
在员工类里面我们发现这几个变量在子类里面、子类的子类里面、曾子类里面、曾孙类里面都要用到,那我们优化一下呢?
7、重构的应用:优化打印的bug
优化如下:
或者ALT+Shift+M
修饰符知识点:
1、public:public表明bai该数据成员、成员函数是du对所有用户开放zhi的,所有用户都可以直dao接进行调用
2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用。
3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。
再回到设计师,也是一样,后面都是如此
再看一次效果,看看是否还有要改的地方
后面每一个类都是这样改
打印机也是
最后效果如下:
现在只剩下状态了
数据里面并没有给出,我们处理办法有两种 1、给出一个默认值 ;
数据里面并没有给出,我们处理办法有两种 2、去原始数据里面的值(但是这里没有)暂不考虑;
六、功能实现:添加功能
1、首先考虑一个问题,添加跟哪些类有关系
第一步得找到TeamView 找到菜单的添加
这个时候就需要用到键盘输入了 一种是用我们的Scanneer一种是用第三方类库如下
ctrl+c /ctrl+v直接放到工具包里面就行了
菜单架构如下
现在我们要做的是添加功能,要怎么做呢?
我们看这个,发现这个也还没写呢
2、该项目里面建议抛自定义异常
揭晓答案,继承如下,并且保留如上图所示的两个构造器
注意这个异常我们只能用throw语句把它抛出去
扔出去我们就不管了,让上一级去处理
回到 TeamView
这里的为什么会报错,因为我们之前把异常扔出去了,这里你要么处理要么接着扔
我们这里就处理一下吧
下面要写哪部分了
TeamService部分
新建一个类
状态怎么加呢?员工这并没有状态,程序员里面才有状态
因此我们想要去获取这个状态要怎么去获取呢
因为我们的形参现在是Employee类型
向下转型就可以了
这里使用total会好一些
因为total在这里是一个不确定的值
下面调试看下效果
没有New Programmer
3、Debug 调试 找bug
改完代码之后再试试
这种不报错的bug怎么解决呢?
现在写了这么多,我们怎么定位问题呢
解决办法:全部关掉,重新来过
最终我们发现 这个对象在这创建是有问题的
这几个也挪上来
再测试运行一下
至此,添加功能就全部完成了
七、功能实现:列表功能
写完这里不知道后面怎么往下写了,缺了什么方法?
一定要注意,后面我们熟悉了是能够推断出需要什么方法的,在初学阶段是缺什么补什么
这里我们使用数组工具类来进行复制,代码如下
然后再看效果
1、TDI 应该改成TID 2、格式不是很对,我们得改对应的toString()方法
那应该怎么办呢?
要么自己拼,要么改java bean (第三版了,也就是第三次改)
我们只需要改程序员、设计师和架构师即可
子类 设计师
再加奖金
架构师也是一样
架构师价格股票就行了
至此,团队成员列表功能完成
八、功能实现:删除功能
快捷键自动配置sop + Alt+/ 快捷键自定义配置
window --> Preferences(属性)–>
换个很多常用的都可以自己设置一下
删除功能
思考一下,删除的流程,第1步怎么丛,第2步怎么做?
测试看看(因为没有使用数据库,每次都要重新开始,这里嫌麻烦可以自行添加模拟数据)
九、功能实现:界面微调
我们来优化
找几个痛点
我们先确定一下,界面跟什么有关呢?
界面只跟TeamView有关
总结
该项目能够很好的熟悉前面所讲的知识,熟悉怎么去应用,多写几遍,心中无码,方能大成