【Java】面向对象案例

简介: 【Java】面向对象案例

现在出去旅游,需要对人员进行统计

   学生:

       张三  男  19  小1班

       李四  女  18  小1班

       王五  男  20  小2班

       赵六  女  18  小1班

       钱七  男  22  小2班


   讲师:

       老张  男  40  Java

       老王  男  35  Python

       老李  女  32  前端


   辅导员:

       小王  女  25  小1班

       小李  男  22  小2班


   ①请根据题目,设计学生、讲师、辅导员类.

   已知:  讲师和辅导员都是员工

       员工只是一个抽象的概念,不能是一个具体的对象

       学生和员工都是人

     

   设计时:必须有接口、抽象类

   英文:学生-student

         讲师-Lecturer

         辅导员-ClassTeacher

         班级-classes

         课程名-lesson

         员工-employee

         人-Person


    ②现在将所有人员保存到一个集合中

    ③现在缴纳出行保险:

       学生每人缴纳:10元,学校补助15元

       员工每人缴纳:20元

   下面请计算,保险公司总共收取的保费总额为多少

    ④

   已知:程序员30岁之前秃顶概率 20%

             程序员30~35岁秃顶概率 50%

         程序员35岁之后秃顶概率 30%


   请计算两位男讲师的平均年龄和他们的秃顶概率


定义员工类Emp,拥有姓名(String ename),薪水(Double sal),职位(String job),部门号(deptno)4个属性


要求:

* 创建员工、部门类,在部门中添加属性,表示部门拥有多个员工

* 创建下列员工,并添加到集合ArrayList中

   2.1. 姓名:刘备,薪水:20000,职位:经理,部门号:10

   2.2. 姓名:诸葛,薪水:12000,职位:员工,部门号:10

   2.3. 姓名:孙权,薪水:18000,职位:经理,部门号:20

   2.4. 姓名:黄盖,薪水:12000,职位:员工,部门号:20

   2.5. 姓名:曹操,薪水:50000,职位:经理,部门号:30

   2.6. 姓名:张颌,薪水:30000,职位:员工,部门号:30

   2.7. 姓名:许褚,薪水:20000,职位:员工,部门号:30

   2.8. 姓名:张辽,薪水:30000,职位:员工,部门号:30

 

1.定义方法sumSal,统计指定部门的员工人数和薪资总和    

   示例:

   统计10号部门:sum(empList,10)

   输出:10号部门共2人,薪资和是:22000


2.定义方法selectDeptno,方法接收员工姓名和员工集合,方法中根据员工姓名查询员工的部门号,并返回部门号

   示例:

   selectDeptno("黄盖",empList)

   返回:20

 

3.定义方法selectAvgSql,方法接收部门号、员工集合,方法中查询并打印指定部门号的最高薪资、和平均薪资。

   示例:

   selectAvgSql(20,empList)

   输出:20号部门最高薪资是:18000,平均薪资是:15000


4.定义方法betterThanEmp,方法有2个参数,员工A、员工列表,方法中打印所有比员工A薪资高的员工姓名、员工薪资。


5.定义方法betterThanSal,方法有接收员工集合,方法中打印:比所有员工平均薪资高的员工姓名,员工薪资。


6.定义方法printMyselfManager,方法接收员工集合,方法中打印员工姓名、领导姓名。

   示例:

   10号部门 刘备 领导:无

   10号部门 诸葛 领导:刘备

   ...

   30号部门 曹操 领导:无

   30号部门 张颌 领导:曹操

   30号部门 许褚 领导:曹操

   ...


* 定义部门类Dept,拥有部门号(int deptno),部门名称(String deptName),部门地址(String deptAddr)4个属性

* 创建下列部门

   3.1. 部门号:10,部门名称:蜀,部门地址:汉中

   3.1. 部门号:20,部门名称:魏,部门地址:江南

   3.1. 部门号:30,部门名称:吴,部门地址:江北


* 将上述部门对象添加到部门的集合中(注意:没有要求将员工对象放入部门对象集合中)


1.定义方法printSalary,接收部门集合、员工集合,方法中打印每个部门的部门号、部门名称、最高薪资、最高薪资的员工姓名


2.定义方法printDept,方法接收部门集合,员工集合,方法中根据部门号匹配,打印曹操的部门号,部门名称


3.定义方法printMaxManager,方法接收部门集合,员工集合,方法中打印管理人数最多的经理姓名、部门名称


继承 super练习(本题旨在练习继承super):

   1.创造手机类Phone:拥有品牌brand、价格price、生产日期time属性,属性都私有,提供get/set方法,

     * 提供无参和满参构造方法,

     * 拥有打电话call方法,接收字符串电话号码。方法具体代码由子类实现

   

   2.创建华为手机类HuaWeiPhone,继承手机类:

    * 该类有2个构造方法(考核super的用法):

       - 无参构造方法

       - 有参构造方法,有参构造方法接收3个参数(String brand,Double price,Date productTime),可以给华为手机初始化属性。

     

     

    * 补全HuaWeiPhone类中call方法,该方法可以从之前的通话记录中拨号和更新通话记录功能:String phoneNum

       - 拨号(打印):

               根据接收的电话号码,在项目下的recode.txt中找到该号码的记录,打印该号码通话记录信息。

               打印格式如下:13698652317是第1次通话,上次通话时间2018年12月08日,通话20秒。

         

           1.有记录

              1.1.遍历字符串    

              1.2.切割字符串

              1.3.数据有格式要求                                          

              1.4.打印

             

           2.无记录

              2.1.自己拼接这个格式的字符串:13698652317是第1次通话,上次通话时间2018年12月08日,通话20分。

                 2.1.1.问题点1:当前时间 -> 2018年12月10日

                 2.1.2.        时长:通话20分 ——> 1-200随机数(秒)

     

       - 更新通话记录:

           * 如果有历史记录,将原来通话记录中的拨打次数+1,通话时间改为当前时间

           * 如果没有历史记录,新增一条通话记录,时间为当前时间,通话时长尾1-200以内随机数,拨打次数为1.

         

           ** 发现如果只想修改某一部分数据,操作比较困难

           ** 解决方法:在解析数据时候,提前将解析的数据放入ArrayList集合中。

           **           修改集合中的数据,最后将集合数据全部覆盖写回原文件,这样就能实现修改的效果

     

    * recode.txt  flag=false

       15271312791@2018-12-10@56秒@4

       15656238957@2018-12-10@32秒@2

       17865662379@2018-12-8@157秒@6

       13965879652@2018-12-10@3秒@2

       13999999999@2018-12-10@3秒@1


相关文章
|
1月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
25 1
|
2月前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
27 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
2月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
86 3
|
2月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
73 2
|
2月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
47 2
|
3月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
78 15
|
3月前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
27 1
|
4月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
3月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
【10月更文挑战第8天】本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
49 5
|
3月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
64 2
下一篇
开通oss服务