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