201723322017-2018-2《程序设计与数据结构》第七周学习总结

yu757503836      2022-02-09     142

关键词:

20172332 2017-2018-2 《程序设计与数据结构》第六周学习总结

教材学习内容总结

第九章继承

  • 1.创建子类。
    • 子类与父类的关系。子类是父类的其中一种。
    • 派生操作在子类中加保留字extends实现。
    • 子类的实例化并不依赖于父类的实例化。
  • 2.protected修饰符。(为了让子类能够访问并且不违反封装性原则)
    • 父类中的变量和方法被声明为protected可见性时,子类就可以使用。
    • UML图中,protected成员前加#。
    • 父类的构造方法,子类不能继承(除非用super引用)。
  • 3.super引用。
    • super引用可以调用父类的构造方法。
    • super引用调用父类构造方法的操作只能在子类中执行,并且必须是在第一行执行。
  • 4.多继承。
    • 单继承:子类只能有唯一的父类。
    • java语言的设计者明确决定不支持多继承,以防出现父类的方法同名的情况。
    • 作为替代多继承的方法,依赖接口。一个java类只能由一个父类派生,但可以实现多个接口。
  • 5.子类和父类有相同的方法名和签名时,子类方法将重写父类方法,子类方法优先。
    • 子类不能重写final方法。
  • 6.影子变量。
    • 子类父类变量名可以同名,这种定义是合法的,但是不提倡。
  • 7.类层次结构。
    • 从一个父类派生出的子类,还可以是它自己子类的父类。
    • 多个子类可以从一个父类派生。
    • 子类个数和类层次数都没有限制。
    • 同一个父类的两个子类,称为同胞。两者没有继承关系。(可以理解为同胞兄弟,hhh。)
    • 公共特征保持在尽可能高的类层次级上。
    • 继承机制具有传递性。有可能子类的特性不是来自于父类,而是来自于父类的父类或者,父类的父类的父类等等。(也就是祖先类。)
    • 情况不同,最佳的类层次结构不同,类层次结构不是一成不变的。
  • 8.Object类。
    • Java中所有的类归根结底都由Object类派生,如果没有extends,则默认从Object类派生。
    • Java成粗的每一个类都继承toString方法和equals方法。
  • 9.抽象类和抽象方法。
    • 抽象类通常含一个或多个尚未定义的抽象方法,不能被实例化。
    • 抽象类与接口的不同是:①抽象类可以含有非抽象方法。②除了常量之外还可以声明数据。
    • abstract修饰符将一个类声明为抽象类。
    • 抽象类在类层次结构中充当占位符。
    • 抽象类中的每一个抽象方法都必须使用abstract修饰符,但抽象类不必一定包括抽象方法。
    • 在UML类图中,抽象类的类名用斜体表示。
    • 抽象类在类层次上的定义位置不受限制,但一般在较高的类层次上。(存在从非抽象父类派生出抽象类的可能)
    • 由抽象类派生的子类必须重写所有父类的抽象方法,否则该子类仍未抽象方法。
    • 抽象方法不使用finalstatic修饰符。
  • 10.接口层次结构。
    • UML类图中,用空心箭头线表示接口之间的继承关系。
    • 父接口用于派生子接口时,子接口继承了父接口的所有抽象方法和常量,任何实现子接口的类都必须实现所有的抽象方法。
    • 接口间的继承问题不存在可见性问题,因为一个接口的所有成员都是公共的。
    • 接口不能用于派生新类,类不能用于派生接口。(接口只能实现)。
  • 11.可见性。
    • 在子类中,即使不能直接引用父类成员,但是父类成员也总是存在的,可以被间接地引用。
  • 12.类间继承关系的设计。
    • 继承关系小结。
    • final修饰符可用于限制继承。
    • final修饰符可用于方法也可用于类。(方法不能在任何派生类中重写,类不能成为其他类的父类。)

教材学习中的问题和解决过程

  • 问题1:三种可见性修饰符的可见性比较
  • 问题1解决方案:private可见性最严格,public可见性最弱,protected可见性位于两者之间。
  • 问题2:super.message();super(message);的不同
  • 问题2解决方案:super.message()是调用父类的方法并且这里的message是方法名,super(message)是调用父类的构造方法并且这里的message是形参名。
  • 问题3:书中所说的抽象类通常含一个或多个尚未定义(没有实现代码)的抽象方法抽象类不必一定包含抽象方法是否相矛盾。
  • 问题3解决方案:不矛盾。详情见Java中,抽象类可以不含抽象方法吗

代码调试中的问题和解决过程

  • 问题1:出现红线的原因

    技术分享图片

  • 问题1解决方案:该类是子类,如果子类创建构造方法的话,那么需要用super语句把父类的构建方法也输入,(主要是把父类的对象也初始化),否则会有错误。并且一定要注意,super语句要放在第一行。

代码托管

技术分享图片

上周考试错题总结

1.The "off-by-one" error associated with arrays arises because

  • A . the first array index is 0 and programmers may start at index 1, or may use a loop that goes one index too far
  • B . the last array index is at length + 1 and loops may only iterate to length, missing one
  • C . the last array element ends at length - 1 and loops may go one too far
  • D . programmers write a loop that goes from 0 to length - 1 whereas the array actually goes from 1 to length
  • E . none of the above, the "off-by-one" error has nothing to do with arrays
  • 答案:A ;我选的:D
  • 分析:数组的合法索引为0到X- 1,差一错误,因为程序员将编写代码来尝试访问索引1到X
  • 单词:1.array:数组。2.iterate:重复。3.element:元素。4.whereas:然而。

2.If an int array is passed as a parameter to a method, which of the following would adequately define the parameter list for the method header?

  • A . (int[ ])
  • B . (int a[ ])
  • C . (int[ ] a)
  • D . (int a)
  • E . (a[ ])
  • 答案:C ;我选的:E
  • 分析:这题意思是定义一个整型值数组,应该怎么声明。所以选C。
  • 单词:1.parameter:参数。

3.Given the following declarations, which of the following variables are arrays?

int[ ] a, b; int c, d[ ];

  • A . a
  • B . a and b
  • C . a and d
  • D . a, b and d
  • E . a, b, c and d
  • 答案:D ; 我选的:C
  • 分析:声明方式有四种模式:①int[] a,b ②int[] a ③int d[] ④int c,d[]
  • 单词:无

4.If a and b are both int arrays, then a = b; will

  • A . create an alias
  • B . copy all elements of b into a
  • C . copy the 0th element of b into the 0th element of a
  • D . return true if each corresponding element of b is equal to each corresponding element of a (that is, a[0] is equal to b[0], a[1] is equal to b[1] and so forth) and return false otherwise
  • E . return true if a and b are aliases and return false otherwise
  • 答案:A ;我选的:B
  • 分析:“=”是赋值运算符。分两种情况:①a和b如果是两个变量,则把右边变量的值赋给左边变量。②a和b如果是两个数组,导致a和b都在存储器中引用相同的数组,因此它们现在是彼此的别名。
  • 单词:1.alias:别名。2.corresponding:对应的。

5.Arrays have a built in toString method that returns all of the elements in the array as one String with "\n" inserted between each element.

  • A . true
  • B . false
  • 答案:B ;我选的:A
  • 分析:数组是对象,因此它们是从Object类继承的。Object类有一个toString方法。但是,Object类的toString方法不返回存储在对象中的值,而是返回引用变量的值。因此,数组上使用的toString将不会返回数组中存储的值,而是返回一个无意义的字符集。(Object类在第九章的继承中有提到。)
  • 单词:1.insert:插入。

6.So long as one is only accessing the elements of an ArrayList, its efficiency is about the same as that of an array. It‘s only when one begins to insert or remove elements towards the front portion of an ArrayList that its efficiency deteriorates.

  • A . true
  • B . false
  • 答案:A ;我选的:B
  • 分析:只要一个只访问数组的元素,效率就与数组相同。但是,当对数组列表的前面部分进行插入或删除时,也就是当大量元素复制必须发生时,降低其效率。
  • 单词:1.the front portion of an ArrayList:数组列表的前部。

点评模板:

  • 博客中值得学习的或问题:

  • 代码中值得学习的或问题:

点评过的同学博客和代码

  • 本周结对学习情况
    • 20172326
    • 结对学习内容
      • 第九章继承
  • 上周博客互评情况

其他(感悟、思考等,可选)

  • 本周的pp作业是要求画UML类图,这是第一次画UML类图,纪念一下第一幅UML类图(虽然看起来很简单!)
    技术分享图片

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 182/182 1/1 10/10
第二周 458/640 1/2 15/25
第三周 469/1109 2/4 18/43 学会IDEA的使用和调试,学会jdb调试。
第四周 1536/2645 1/5 24/67
第五周 980/3625 1/6 25/92
第六周 870/4495 1/7 16/108
第七周 247/4742 1/8 14/122
  • 计划学习时间:20小时

  • 实际学习时间:14小时

  • 改进情况:这周还有一个实验,此博客交时,还没有开始学习实验三实验四与实验五,因此博客篇中并没有算实验的博客,学习时间也没有加学习实验的时间。因为本周的继承,不难理解,并且没有很多的代码需要敲。所以花费的时间较少,代码的增加量也较少。

参考资料


201723322017-2018-2《程序设计与数据结构》第三周学习总结

201723322017-2018-2《程序设计与数据结构》第三周学习总结教材学习内容总结第五章队列1.队列是一种线性集合,元素从一段加入从另一端删除(先进先出)。2.队尾(tail),队首(head),队列前端(front),队列末端(rear)。3.使... 查看详情

程序设计与算法

程序设计与算法[北京大学] 第一周:枚举完美立方生理周期称硬币熄灯问题讲义加群:597225218  输入:博客园程序设计与算法第一章第二周:递归(一)阶乘汉诺塔N皇后波兰表达式讲义加群:597225218  输入:博客园程序... 查看详情

201723272018-2019-1《程序设计与数据结构》实验三:查找与排序

201723272018-2019-1《程序设计与数据结构》实验三:查找与排序课程:《Java软件结构与数据结构》班级:201723姓名:马瑞蕃学号:20172327实验教师:王志强实验日期:2018年11月19日必修/选修:必修一、实验内容:实验二查找与排序-1... 查看详情

20172328《程序设计与数据结构》实验三:查找与排序

20172328《程序设计与数据结构》实验三:查找与排序课程:《软件结构与数据结构》班级:1723姓名:李馨雨学号:20172328实验教师:王志强老师实验日期:2018年11月19日-2018年11月25日必修选修:必修一、实验要求内容实验1:定义... 查看详情

20172308实验三《程序设计与数据结构》查找与排序实验报告(代码片段)

201723082018-2019-1实验3《查找与排序》报告课程:《程序设计与数据结构》班级:1723姓名:周亚杰学号:20172308实验教师:王志强实验日期:2018年10月20日必修/选修:必修1.实验内容查找与排序-1:定义一个Searching和Sorting类,并在... 查看详情

《程序设计与数据结构》第八周学习总结

学号20172326《程序设计与数据结构》第八周学习总结教材学习内容总结后绑定在程序执行时执行多态性可由继承与接口实现排序有选择法排序与插入法排序搜索分为线性搜索与二分搜索算法,同一类型的不同方法可能解决同一问... 查看详情

程序设计基石与实践专栏引导

本博文主要对通过程序设计基石与实践专栏归类,主要分为C语言与C++语言.下面对程序设计基石与实践专栏博文的索引:(待定未完待续)C语言话谈C语言让你成为一名Top的C语言程序员C语言程序员必读的5本书让你成为... 查看详情

计算机专业毕业设计(论文)题目汇总表.doc

考试报名数据处理系统设计与实现、基于WEB的车票预订信息系统设计与实现、全文搜索引擎的设计与实现、图书借阅管理信息系统设计与实现、图书销售管理信息系统设计与实现、学生选课信息系统设计与实现、运动会成绩管理... 查看详情

红书《题目与解读》第一章数学题解《acm国际大学生程序设计竞赛题目与解读》(代码片段)

...计划红书《题目与解读》第一章数学题解《ACM国际大学生程序设计竞赛题目与解读》全书目录:《题目与解读》红书训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》目录红书《题目与解读》第一章数学题解《ACM国际... 查看详情

风螺旋与飞行程序设计

精简版的课件分享。风螺旋课题的一个阶段性总结,后续将从理论向实践进行转变,希望取得更多的实践成果,再与大家分享!全文完,谢谢!  查看详情

RESTful URL 设计:公共与私有 API、分层 API 设计模式、URI 与 URL 设计?

】RESTfulURL设计:公共与私有API、分层API设计模式、URI与URL设计?【英文标题】:RESTfulURLdesign:publicvsprivateAPI,hierhachyAPIdesignpattern,URIvsURLdesign?【发布时间】:2013-12-1923:00:23【问题描述】:我经常遇到这样的问题,与HierarchicalRESTfulUR... 查看详情

程序设计语言与语言处理程序基础

重点1编译过程2文法定义 一颗语法树 有限自动机正规式7数据类型与程序控制结构8表达式9传值与传址传址调用10各程序语言特点  查看详情

201823222019-2020-1《数据结构与面向对象程序设计》第四周学习总结

教材学习内容总结1.编写类与方法(构造方法的结构和用途)2.实际参数与形式参数、public与private、return与void的区别与含义、3.UML类图的含义与形式4.静态类(Math类)静态变量、静态方法5.类间关系(依赖关系、聚合关系、继承... 查看详情

概要设计与具体设计

概要设计与具体设计在写概要设计与具体设计的时候,对于内容以及他们之间的界限非常easy模糊.今天写点自己的想法.有问题请大家不吝赐教:[email protected]首先大家要注意这2个文档最后2字,都是设计.设计就是设计,不是代码因... 查看详情

数学题解《acm国际大学生程序设计竞赛题目与解读》(代码片段)

...计划红书《题目与解读》第一章数学题解《ACM国际大学生程序设计竞赛题目与解读》全书目录:《题目与解读》红书训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》目录红书《题目与解读》第一章数学题解《ACM国际... 查看详情

201723292017-2018-2《程序设计与数据结构》第十周学习总结

201723292017-2018-2《程序设计与数据结构》第十周学习总结教材学习内容总结第十三章一、集合与数据结构1、集合:是一种对象,类似于保存其他对象的存储库;2、作用:表示一个专用与保存元素的对象,并且该对象还提供增添、... 查看详情

系统分析与设计复习

文章目录系统分析与设计复习第1章系统分析与设计概述系统特性DevOps第2章系统规划**系统规划步骤**规划模型诺兰模型**CMM模型**系统规划方法战略集合转换法SST关键成功因素法CSF企业资源规划法BSPCSB三者联系和区别第3章系统分... 查看详情

win10系统程序与功能查找,卸载程序

win10系统程序与功能查找,卸载程序  查看详情