java第五次作业

《Java技术》第五次作业

(一)学习总结

1.在上周完成的思维导图基础上,补充本周的学习内容,对Java面向对象编程的知识点做一个全面的总结。

1081352-20170423113421054-1750668939.png

2.汽车租赁公司,出租汽车种类有客车、货车和皮卡三种,每辆汽车除了具有编号、名称、租金三个基本属性之外,客车有载客量,货车有载货量,皮卡则同时具有载客量和载货量。用面向对象编程思想分析上述问题,将其表示成合适的类、抽象类或接口,说明设计思路并画出类图。

  • 设计思路:
    抽象类汽车租赁公司Carcompany:属性有:编号no,名称name,租金rent。
    接口A:定义载货量方法:zaihuoMethod();
    接口B:定义载客量方法:zaikeMethod();
    子类客车Passenger继承汽车租赁公司Carcompany,特有属性:载客量zaike。继承接口B。
    子类货车Truck继承汽车租赁公司Carcompany,特有属性:载货量zaihuo。继承接口A。
    子类货车Pickup继承汽车租赁公司Carcompany,特有属性:载客量zaike,载货量zaihuo。继承接口A和B。

  • 类图

1081352-20170423221133851-246388127.png

3.阅读下面程序,分析代码是否能编译通过,如果不能,说明原因,并进行改正。如果能,列出运行结果

interface Animal{    void breathe();void run();void eat();
}
class Dog implements Animal{public void breathe(){System.out.println("I'm breathing");}void eat(){System.out.println("I'm eating");}
}
public class Test{public static void main(String[] args){Dog dog = new Dog();dog.breathe();dog.eat();}
}
  • 答:不能通过编译
    第一:Animal接口中定义的方法,继承他的dog类里边必须都有 dog类里没有void run()方法。
    第二:子类重写方法必须有public,接口中可以省略
  • 修改为:

     interface Animal{    void breathe();void run();void eat();}class Dog implements Animal{public void breathe(){System.out.println("I'm breathing");}public void eat(){System.out.println("I'm eating");}public void run() {}}public class Test{public static void main(String[] args){Dog dog = new Dog();dog.breathe();dog.eat();}}
  • 运行结果为:

     I'm breathingI'm eating

    4.运行下面的程序

     import java.util.Arrays;public class Test{public static void main(String[] args){String[] fruits = {"peach","banana","orange","apple"};Arrays.sort(fruits);for(int i = 0;i < fruits.length;i++){System.out.println(fruits[i]);}}}

    程序输出的结果是升序排序的。查看String 类的源码,说明是如何实现的?如果现在希望对输出的结果进行降序排序,该如何处理?修改上述代码,实现按照字母顺序逆序排序。
    询问同学后得知出题的目的:关于comparable和compareTo比较器的使用

String属于对象,String类继承了comparable接口,使用compareTo方法比较,Arrays中只提供基本数据类型数组排序,其他的都从属于Arrays.sort(Object[])。

  • 其他的Object类型排序需要对象实现CompareTo接口

      public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {//此处继承了comparable接口public int compareTo(String anotherString) {   int len1 = value.length;int len2 = anotherString.value.length;int lim = Math.min(len1, len2);char v1[] = value;char v2[] = anotherString.value;int k = 0;while (k < lim) {char c1 = v1[k];char c2 = v2[k];if (c1 != c2) {return c1 - c2;}k++;}return len1 - len2;}}
  • 使用实现了ComparaTor接口的对象作为Arrays.sort方法的第二个参数.

      import java.util.Arrays;import java.util.Comparator;public class Test {public static void main(String[] args) {String[] fruits = { "peach", "banana", "orange", "apple" };Arrays.sort(fruits, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {char a = o1.charAt(0);char b = o2.charAt(0);if(o1.equals(o2)){return 0;}else if(a>b){return -1;}else{return 1;}}});for (int i = 0; i < fruits.length; i++) {System.out.println(fruits[i]);}}}

(二)实验总结

1.某工厂生产各种音乐盒,客户无需知道音乐盒的制作过程,只需知道如何播放音乐盒即可。用简单工厂设计模式实现该过程:接口MusicBox具有方法play(),两个音乐盒类PianoBox,ViolinBox,MusicBoxFactory 产生MusicBox的实例。

  • 实验问题分析:
    没有什么问题,知道接口怎么使用和工厂类如何实例化就行了

2.修改第三次作业的第一题,使用java.util.Date类表示职工的生日和参加工作时间,并将职工信息按照生日大小排序后输出。(分别用comparable和comparator实现)

  • 实验问题分析:
    问题1:根据第三次作业,其中有Date类,Dept类,Employee类,根据以前想法保留了Date类,导致实例化Date时造成混乱
    解决方案:询问老师后,可以把Date类省略,直接导入包就行了。

3.在案例宠物商店的基础上,实现以下功能:
(1)展示所有宠物
(2)购买宠物
(3)显示购买清单

  • 实验问题分析:
    问题1:输入关键字查找时输出结果是最后一个输入的宠物信息
    原因:因为是一个字符串,输入第二个时把第一个输入的就覆盖了
    解决方案:询问同学后,定义了一个keyWord数组,把输入的字符串存到里面,再用循环进行比较。
    问题2:进行测试时显示空指针异常
    原因:定义keyWord数组时分配内存空间为6,如果用户输不到6个字符串时其他的就为空,在方法里进行比较时空串也进行比较,造成错误
    解决方案:多加了一个判断条件:

     keyWord[j] != null

(三)[代码托管]https://git.oschina.net/hebau_cs15/hebau-cs01cyl.git

  • 码云commit历史截图

1081352-20170423113345366-1399473718.png

(四)学习进度条

代码行数(新增/累积)学习时间(新增/累积)本周学习内容
目标5000行300小时
第2-4周
第5周
第9周15015学习了抽象类,接口等面向对象的知识点

转载于:https://www.cnblogs.com/chenyuelin/p/6752017.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysqld已删除但仍占用空间的_Windows 10删除备份文件方法

Windows具有许多内置备份功能&#xff0c;包括卷影副本&#xff0c;系统还原点和整个系统备份。尽管它们既不是最可靠也不是功能最丰富的备份解决方案&#xff0c;但它们确实提供了一种备份系统和个人数据的不错的方式。Windows内置备份工具的问题之一是它们几乎过于安静和方便…

服务器维修天长,台达精密空调服务天长市供电局

【IT168 厂商动态】项目背景&#xff1a;天长市供电局率属于安徽省供电局&#xff0c;主要负责其辖区内的电力生产与供应。本项目包括三个机房&#xff1a;南、北数据中心机房以及资料中心;台达风冷型精密空调为上述机房的IT设备运行提供7*24小时恒温恒湿高洁净度的运行环境&am…

终端主题_泛终端全渠道新模式中国移动5G泛智能终端渠道生态合作峰会开幕

11月20日&#xff0c;以“泛终端 全渠道 新业态 新模式”为主题的中国移动5G泛智能终端渠道生态合作峰会在广州成功举办。作为2020中国移动全球合作伙伴大会期间举办的重要主题峰会之一&#xff0c;该峰会吸引了超过100家终端、渠道等产业链合作伙伴&#xff0c;会议通过咪咕直…

jq中查找上级_【节能学院】电能管理系统在福州三岐小学项目中的设计及应用...

1项目概述该项目总投资约2.6亿元&#xff0c;建筑规模为4.8万㎡&#xff0c;建设地点在南屿镇葛岐村、晓岐村。项目设有教学楼A区、教学楼B区、教学楼C区、综合楼一区、综合楼二区、室内篮球场、室内游泳馆、足球场等。此电能管理系统为Acrel-3000V7.1系统&#xff0c;在结构设…

[HTML5amp;CSS3]Transform具体解释

Transform字面上就是变形&#xff0c;改变的意思。在CSS3中transform主要包含以下几种&#xff1a;旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix。以下我们一起来看看CSS3中transform的旋转rotate、扭曲skew、缩放scale和移动translate详细怎样实现。老样…

比亚迪定薪后多久给offer_比亚迪车主给爱车做四门隔音,没想到两年后肠子都悔青...

许多车主都有过这样的经历&#xff1a;总感觉爱车的静谧性不够如意&#xff0c;为了提升隔音效果改善驾乘质感&#xff0c;往往产生给爱车做一个全车隔音的冲动。只不过冲动归冲动&#xff0c;在着手对车子进行隔音改造工程前&#xff0c;一定要选择靠谱的隔音材料&#xff0c;…

Centos开机自己主动挂载windows中的ntfs磁盘

装了windows和centos双系统后&#xff0c;发如今centos中无法进入windows中的磁盘&#xff0c;更不要说查看磁盘里的文件了&#xff01; 原来默认情况下。centos不支持Widows NTFS硬盘分区读写&#xff0c;要想把NTFS格式的磁盘挂载到CentOS 以下须要安装第三方软件ntfs-3g。…

人工智能方向毕业设计_毕业季|广州美术学院视觉设计学院毕业设计展

视觉艺术设计学院成立于2010年9月&#xff0c;由广州美术学院最传统的装潢系和新兴的数码艺术设计系联合组建而成&#xff0c;2018年11月&#xff0c;艺术与科技专业并入学院。学院现拥有视觉传达设计、数字媒体艺术设计、动画、艺术与科技4个专业。视觉文化设计工作室 视觉文化…

江西住建云实名认证怎么弄_王者荣耀无限时间怎么弄 2020年无限时间账号

腾讯游戏都是有健康系统的&#xff0c;王者荣耀自然也不例外&#xff0c;王者还是第一批出健康系统的游戏&#xff0c;今年健康系统同时有时间限制和充值限制&#xff0c;未成年玩家一天最多只能玩1.5个小时&#xff0c;游戏现在有传闻无限时间账号&#xff0c;那么无限时间怎么…

coherence安装_在Oracle Coherence中分发Spring Bean

coherence安装本文展示了如何通过使用Oracle Coherence中的EntryProcessor和可移植对象格式&#xff08;POF&#xff09;功能来分发Spring Bean。 Coherence通过EntryProcessor API支持无锁编程模型。 此功能通过减少网络访问并在条目上执行隐式的低级锁定来提高系统性能。 此隐…

spring 的aop操作

转载于:https://www.cnblogs.com/hwgok/p/6760663.html

excel 公式 单引号 concat_Excel两个新函数帮你快速搞定批量连接

如果将两个文本连接起来&#xff0c;通常第一反应用连接符号"&"。使用连接符&连接文本字符记得曾经有记者采访刘强东问奶茶妹妹漂不漂亮&#xff0c;他竟然回答看不出来好赖…当时真觉得这家伙身在福中不知福&#xff0c;饱汉不知饿汉饥。果然之后还闹出一些…

练习~虚拟线上银行

数据库操作&#xff0c;网络编程及多线程的综合练习~ 客户端&#xff1a; UI层 1 import javax.swing.*;2 import java.awt.*;3 import java.awt.event.*;4 5 public class ATMUI{6 7 //主方法8 public static void main(String [] args){9 ATMUI ui new ATMUI();…

mybatisplus 操作另一个数据库的数据_MySQL数据库的基础操作

一、基本概念数据库术语数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件)。数据表(table) - 某种特定类型数据的结构化清单。模式(schema) - 关于数据库和表的布局及特性的信息。模式定义了数据在表中如何存储&#xff0c;包含存储什么样的数据&#xff0…

JEP 277“增强弃用”非常好。 但这是一个更好的选择

维护API很难。 我们正在维护非常复杂的jOOQ API。 但是就语义版本而言&#xff0c;我们遵循相对宽松的规则 。 当您阅读Brian Goetz和其他人关于在JDK中保持向后兼容性的评论时&#xff0c;我只能对他们的工作表示敬意。 显然&#xff0c;我们都希望最终移除Vector &#xff…

ds哈希查找—二次探测再散列_大白话之哈希表和哈希算法

哈希表概念哈希表&#xff08;散列表&#xff09;&#xff0c;是基于关键码值(Key value)而直接进行访问的数据结构。也就是说&#xff0c;它通过把关键码值映射到表中一个位置来访问记录&#xff0c;以加快查找的速度。这个映射函数叫做散列函数&#xff08;哈希函数&#xff…

二叉搜索时与双向链表python_剑指Offer(二十六) 二叉搜索树和双向链表

题目描述输入一棵二叉搜索树&#xff0c;将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点&#xff0c;只能调整树中结点指针的指向。思路以及解答主要是使用递归&#xff0c;设置一个head和end&#xff0c;head只在第一次设置值&#xff0c;后面就是将end的…

第五天敏捷冲刺

每日任务&#xff1a; 1.本次会议为第三次 Meeting会议&#xff1b; 2.由于本次会议人员都有各自的事情&#xff0c;所以都通过私聊组长来&#xff0c;讨论接下来的任务&#xff1b; 3.今天的代码部分coding:https://git.coding.net/ysh0904/wl2ban.git 4.燃尽图&#xff1a; 5…

mobx中跟新了数据视图没变化_【第1781期】MobX 简明教程

前言SEEConf&#xff0c;2020年1月4号杭州见&#xff0c;C位抢票见文章末尾。今日早读文章由腾讯whinc投稿分享。正文从这开始&#xff5e;&#xff5e;导读&#xff1a;MobX 是一个优秀的响应式状态管理库&#xff0c;在流行的状态管理库 Redux 之外为我们提供了其他选择。如果…

excel导航窗格_Excel小技巧16:在每天的某个时刻自动打开特定工作簿

学习Excel技术&#xff0c;关注微信公众号&#xff1a;excelperfect我想要在每天下班前&#xff0c;将自已一天的工作进行整理并简短记录在一个Excel工作簿中。然而&#xff0c;有时候忙&#xff0c;可能会忘记&#xff1b;有时候到下班时间了&#xff0c;急于下班&#xff0c;…