00016.02 项目三(数组,封装、继承、多态、异常、枚举、项目需求分析)

系列文章目录

前言

主要是想对前面所学做一个复盘,利用起来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数组中
在这里插入图片描述
将 对象转为基本数据类型的过程是 拆箱
结构如下:
在这里插入图片描述
那么到底是有参构造还是无参构造呢?,无参构造没有把数据传过去,我们肯定是想要有参构造
在这里插入图片描述
在这里插入图片描述

员工如下:
在这里插入图片描述
员工完了之后,程序员怎么去判断呢?程序员会多一个设备,就可以利用这个去判断
在这里插入图片描述
在这里插入图片描述
有一些复杂,我们用一个方法来完成这个需求
在这里插入图片描述
在这里插入图片描述
调用很方便,但是我们怎么去写这个方法呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

打印机也是同样的操作
在这里插入图片描述
设备的方法就完成了,下面再来看设计师
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
奖金这样写就行了,很简单
在这里插入图片描述
注意架构师也是和上面一样的写法
只是奖金这里的声明不用再次声明了,因为前面已经声明了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,初始化信息就写完了
写了这么多,这个方法在哪用呢?

在这里插入图片描述
init()方法在哪用?
这俩方法不调用肯定是不会用的,我们将它写在构造器里面在这里插入图片描述
接下来,我们验证一下效果
在这里插入图片描述

.

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有关
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

该项目能够很好的熟悉前面所讲的知识,熟悉怎么去应用,多写几遍,心中无码,方能大成

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值