当前位置: 首页 > 编程日记 > 正文

作业05-继承、多态、抽象类与接口

1. 本周学习总结

1.1 写出你认为本周学习中比较重要的知识点关键词

接口,Comparable,Comparator

1.2 尝试使用思维导图将这些关键词组织起来。

1122278-20171021112109240-1088541149.png

1.3 可选:使用常规方法总结其他上课内容。

1.接口特点:一个公开的界面
有统一定义的规范
2.面向接口编程就是面向共同行为编程,体现了多态性
3.Comparator比较器

2. 书面作业

1. 面向对象设计大作业

1.1 项目简介表格:

学生负责任务博客地址
孙江涛用户登录类git地址
吴俊杰购物车类git地址

1.2 系统常用功能框架图

1122278-20171021155029287-692284987.png

1.3 系统总体类图

1122278-20171021155716302-52388239.png

1.4 购物车、商品、系统关键代码截图

1122278-20171021162448709-320879543.png
1122278-20171021162518052-1996192684.png
1122278-20171021162543927-1516904613.png

1.5 其他:跟上次的系统比较,系统的设计等有何修改。其他感想。

上周只给出了几个函数的框架,这种丰富了一点具体内容

2. abstract:阅读GuessGame抽象类的设计与使用源代码

2.1 Guess改造前代码很简单,而改造后的代码使用了抽象类、抽象方法,看起来更复杂,这样的改造到底有什么好处呢?

答:改造之前输入输出与控制台绑定,而改造后无论想在哪个地方输入输出只要继承抽象类即可

2.2 GuessGame(改造后).java中有抽象方法与非抽象方法,你觉得抽象类中什么样的方法应该声明为abstract,什么方法不需要声明为abstract直接实现即可。

答:类中具有共同行为的可以声明为abstract,可以直接确定的方法就可以不用声明为abstract.

2.3 重要:在这个例子中,变化的是什么,不变的是什么?尝试结合abstract等概念进行说明。

答:变化的是输入输出的方式,不变的是它的功能。同样的功能可以在不同的环境下实现,只需要继承相应的抽象类即可

3. Comparable与Comparator

3.1 结合PTA 7-1中你的代码说明,为什么某个类实现了Comparable接口,就可以直接使用Arrays.sort对该类型的数组进行排序?

答:因为Comparable里包含CompareTo方法,所以有了Comparable接口就可以用Arrays.sort直接进行排序

3.2 结合PTA 7-2 中你的代码说明,有了Comparable接口为什么还需要Comparator接口呢?

答:因为Comparator是比较器,它可以比较不同类型之间的排序,而Comparable不行

3.3 以前的作业Shape, Rectangle,Cirlce中,Shape类中什么方法应声明为abstract?说出原因。

答:在计算周长面积的方法应该声明为abstract,因为不同形状计算的公式方法是不一样的。而定义时不知道它具体的形状,所以要声明为抽象类

3.4 有很多Shape类型对象如Rectangle、Circle。希望使用Arrays.sort对他们进行排序,请写出相应代码。并简述应在哪个类上实现Comparable接口比较好?

1122278-20171021143613771-347855505.png
Shape类上实现Comparable接口比较好,这样它的所以子类对象都可以继承它的代码进行面积排序

3.5 以3.4你编写的代码为例,简述面向Comparable接口编程、面向父类编程的好处。

子类继承者可以直接在父类代码中修改在面向Comparable接口编程和面向父类编程中,比如在代码中需要重写compareTo()方法,只需要重写父类Shape的抽象方法,不需要添加Comparable接口,然后直接调用用Arrays.sort()排序即可。

4. 面向接口案例分析

4.1 a.画出类关系图。b.StudentDao接口有什么用?

1122278-20171021150800631-2033081977.png
StudentDao定义了三种方法:显示学生信息,读取学生信息,写入学生信息。这样后期可以很方便的调用使用

4.2 StudenDaoListImpl与StudentDaoArrayImpl有何共同之处?有何区别?

答:它们都继承StudentDao接口和StudentDao的方法,区别是实现是的具体方法不一样

4.3 结合Test.java中的main函数,简述面向接口编程的好处。

答:从main函数可以看出,使用接口后直接用StudentDao调用学生性息,不需要去关心内部其他函数的形式作用

5. 什么是面向接口编程?面向接口编程的好处是什么?

答:面向接口编程就是将定义和实现分离开。面向接口编程的最大好处就是在不确定操作环境的情况下,可以先在接口定义抽象方法,然后按具体情况去继承抽象方法

3.码云及PTA

3.1. 码云代码提交记录

1122278-20171021162014302-1391099583.png

3.2 截图PTA题集完成情况图

1122278-20171021153609256-1230083030.png

1122278-20171021153627381-2001395451.png

3.3 统计本周完成的代码量

1122278-20171021154439990-1492202408.png

行数新增行数文件数新增文件数
109724230415

转载于:https://www.cnblogs.com/jmu201621123074/p/7704959.html

相关文章:

炫彩流光按钮 html+css

话不多&#xff0c;先上效果&#xff1a; 简介&#xff1a; 用基础css做一个有一点炫酷的流光按钮&#xff0c;不止按钮&#xff0c;只要是盒子就行。 具体步骤&#xff1a; 1.先定义一个盒子当做按钮&#xff0c;如我就用a标签&#xff1a; <body><a href"#…

SQL取上一条, 下一条记录方法

如果我们需要取id为3的前后的1条记录. 就可以用以下方法 取上一条记录: select * from 表名 where id<3 order by id desc limit 1取下一条记录: select * from 表名 where id>3 order by id asc limit 1大小于比较 order limit 转载于:https://www.cnblogs.com/…

react中使用构建缓存_通过构建海滩度假胜地网站,了解如何使用React,Contentful和Netlify...

react中使用构建缓存In this full course from John Smilga you will learn React by building a beach resort website project. The project uses React router for routing, React context API for state management, Contentful headless CMS for data management, and Net…

R语言实战 - 基本统计分析(2)- 频数表和列联表

数据&#xff1a; > library(vcd) > head(Arthritis)ID Treatment Sex Age Improved 1 57 Treated Male 27 Some 2 46 Treated Male 29 None 3 77 Treated Male 30 None 4 17 Treated Male 32 Marked 5 36 Treated Male 46 Marked 6 23 …

随机位置显示图片不重叠前端实现详细讲解附效果图,代码可直接使用

目录先看看效果图所要实现的功能看看代码js代码讲解&#xff1a;下面看看完整代码吧小程序版本完整代码VUE版本的代码&#xff1a;先看看效果图 所要实现的功能 在页面上随机的位置显示随机大小的图片&#xff0c;并且每个图片不能重叠&#xff0c;完整实现代码。 看看代码 …

MVC缓存OutPutCache学习笔记 (一) 参数配置

OutPutCache 参数详解 Duration : 缓存时间&#xff0c;以秒为单位&#xff0c;这个除非你的LocationNone&#xff0c;可以不添加此属性&#xff0c;其余时候都是必须的。 Location : 缓存放置的位置; 该值为枚举值: None: 当被设置为None时&#xff0c;其余的任何设置将不起作…

在Mac上控制Alt Delete-如何在Macbook上打开任务管理器

It happens to the best of us: were working away on some important project, and our trusty computer freezes. Or rather, a program were in just stops responding. So what do you do?这对我们最好的人来说是偶然的&#xff1a;我们正在做一些重要的项目&#xff0c;而…

HEW MAP文件使用

参考资料转载于:https://www.cnblogs.com/iluzhiyong/p/5145396.html

算法导论九章 答案

http://blog.csdn.net/z84616995z/article/details/18840823?reload 9.3-8题&#xff1a; http://blog.csdn.net/z84616995z/article/details/18938181 9.3-9题&#xff1a; http://blog.csdn.net/z84616995z/article/details/18889535转载于:https://www.cnblogs.com/sa51718…

小程序实现瀑布流,获取图片高度分成两组数据的函数封装代码

把一个数组根据数组内部的图片的高度&#xff0c;拆分成两个数组&#xff0c;组成瀑布流数据的方法。 使用方式&#xff1a; async created() {var arr this.$mock.sssdata.data.lists;//arr 是一个数组&#xff0c;里面包含若干对象&#xff0c;对象里面有图片var myArr a…

实现线程哪种方法更好_实施数据以实现更好的用户体验设计的4种方法

实现线程哪种方法更好Gone are the days when design used to rely mainly on the color palettes and the creativity of the designer. In the rapidly expanding technological world of today, it is essential to work across departments to enhance the screen experien…

String比较.equals

首先定义四个变量str public class SIzhui {public static void main(String[] args) {String str1"wang";String str2"li";String str3"wang";String str4new String("wang");} } 然后进行比较 public class SIzhui {public static …

mac下mysql5.7.10密码问题

mysql5.7.10刚安装好&#xff0c;会生成一个随机密码。 如果没记住这个随机密码&#xff0c;那么到mysql/bin/下执行mysql_secure_installation命令 按照提示重置密码和其他选项。 ps&#xff1a;找了一下午终于找到方法了&#xff01;&#xff01;&#xff01; 转载于:https:/…

Error: Cannot find module ‘express‘

解决方案&#xff1a;把node_module整个文件夹删掉,然后npm clean cache,看下package.json里有没有express的依赖项,有的话直接npm install,没有的话 npm install express --save

Observables简介以及它们与Promise有何不同

‘Observables’, ‘Observables’, ‘Observables’...Yes! Today, we will talk about this often discussed word of the market. Well also learn how they are different from Promises (havent heard about Promises? Not to worry! You will know more soon). Let’s s…

Spring Boot项目错误:Error parsing lifecycle processing instructions

pom.xml文件错误&#xff1a;Error parsing lifecycle processing instructions 解决方法&#xff1a;清空.m2/repository下的所有依赖文件&#xff0c;重新下载即可解决该问题。转载于:https://www.cnblogs.com/EasonJim/p/7724683.html

oracle执行计划连接方式

嵌套循环&#xff08;Nested Loops &#xff08;NL&#xff09;&#xff09;假如有A、B两张表进行嵌套循环连接&#xff0c;那么Oracle会首先从A表中提取一条记录&#xff0c;然后去B表中查找相应的匹配记录&#xff0c;如果有的话&#xff0c;就把该条记录的信息推到等待返回的…

大转盘完整源码附效果图,可以下载直接用

本转盘实现功能&#xff0c;可以动态配置奖品和转盘相关的任何图片&#xff0c;可以灵活配置使用。是基于 uni-app 实现的。可以在小程序或者H5&#xff0c;各端兼容使用。 效果图&#xff1a;因为GIF图的掉帧&#xff0c;所以显示抽奖的转动速度慢&#xff0c;实际上转动比较…

使用FortJs使用现代JavaScript开发Node.js

介绍 (Introduction) Nodejs gives you the power to write server side code using JavaScript. In fact, it is very easy and fast to create a web server using Nodejs. There are several frameworks available on Node package manager which makes the development eve…

find 按时间查找

find 按时间查找 转载▼分类&#xff1a; linuxShell日记-mtime 修改时间-ctime 改变时间-atime 访问时间-mtime 5 至少5天之前修改过的文件&#xff0c;至少5天没修改过-mtime -5 5天之内修改过的文件-mtime 5 刚好5天前修改的文件 -perm 按权限查找 -perm 001 精确匹配权限…

转:从零开始做app需要做的事情列表

https://qdan.me/list/VaXl7N8emfv1ayWg 从零开始做App的Bootstrap 做一个App&#xff0c;需要很多东西。 不定期更新。 团队 工欲善其事&#xff0c;必先利其器。 需求管理 支持版本、迭代、需求的创建与管理。 产品经理在上面录入需求&#xff0c;开发参照开发&#xff0c;测…

uniapp自定义导航栏样式,自定义导航栏组件使用说明,兼容小程序和H5及各端

实现思路&#xff1a; 把底部导航做成一个组件&#xff0c;点击导航显示的页面也做成组件&#xff0c;在启动页面引入这四个组件&#xff0c;点击封装的导航组件就显示相应的组件页面&#xff0c;这样就不会出现页面重新加载的问题了&#xff0c;有个弊端就是导航页面不能使用…

javascript优化_如何通过使用服务人员来优化JavaScript应用

javascript优化Every now and then we hear about optimizing something. There are different kinds of optimizations we can do to make our apps faster and more efficient, or to save time or memory. This article will cover one of those methods — service worke…

【视觉SLAM14讲】ch3课后题答案

1.验证旋转矩阵是正交矩阵 感觉下面这篇博客写的不错 http://www.cnblogs.com/caster99/p/4703033.html 总结一下&#xff1a;旋转矩阵是一个完美的矩阵——正交矩阵。①行列式为1&#xff0c;②每个列向量都是单位向量且相互正交&#xff0c;③它的逆等于它的转置。 2.罗德里…

【转载】邻接表表示法

图的邻接表表示法 图的邻接表表示法类似于树的孩子链表表示法。对于图G中的每个顶点v i &#xff0c;该方法把所有邻接于v i 的顶点v j 链成一个带头 结点的单链表&#xff0c;这个单链表就称为顶点v i 的邻接表(Adjacency List)。 1&#xff0e; 邻接表的结点结构 &#xff08…

宝塔的服务忽然挂掉解决方法

先登录宝塔看内存是否满了 如果满了就点击文件&#xff0c;找到大文件进行删除&#xff0c;然后清空回收站&#xff0c;重启服务器&#xff0c;就解决了。 清空回收站&#xff1a;点击首页&#xff0c;打开终端&#xff0c;输入下面命令&#xff0c; 清空回收站的命令是&#…

免费创办网站_足够好的工程来创办一家互联网公司

免费创办网站I gave a guest lecture in an undergraduate software engineering class (CSCE431) at Texas A&M University in March 2019. Now I’ve turned this lecture into a blog post here, and hopefully some people on the Internet will find this useful.我于…

centos7下安装docker(11容器操作总结)

这段时间主要是学习了对容器的操作&#xff0c;包括&#xff1a;容器的状态&#xff1a;start&#xff0c;stop&#xff0c;restart&#xff0c;rename&#xff0c;pause&#xff0c;unpause&#xff0c;rm&#xff0c;attach&#xff0c;exec&#xff0c;kill&#xff0c;logs…

Js插入元素到数组的头部和尾部 unshift push

我们经常会使用JS 数组插入数据&#xff0c;下面看一下常用的 1. 在数组头部插入元素 var arr [1,2,3]; arr.unshift(0);arr 输出结果&#xff1a; //arr [0,1,2,3] 2. 在数组尾部插入元素 var arr [1,2,3]; arr.push(4);arr 输出结果&#xff1a; //arr [1,2,3,4]

测试用例设计白皮书--正交实验设计方法

一.方法简介利用因果图来设计测试用例时, 作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到。往往因果关系非常庞大,以至于据此因果图而得到的测试用例数目多的惊人&#xff0c;给软件测试带来沉重的负担&#xff0c;为了有效地,合理地减少测试的…