zoukankan      html  css  js  c++  java
  • 20162320刘先润第6周学习总结

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

    教材学习内容总结

    • 继承,从已有的一个类派生一个新类的过程。比如类是设计图,对象则是设计图的具体体现,而基于已有的设计图来设计新设计图就是继承。两个类为父子类,用空箭头表示继承,由子类指向父类。在面对对象中,继承就是一个类得到另外一个类当中成员变量和成员方法。
    • protected修饰符,即受保护的,方法或变量声明为保护可见性而设置。通俗的讲法就是一旦使用protected就可以在其派生类中使用,详细见例子程序8.2。
    • super引用,用于访问父类的成员.,引用父类的构造方法。注:调用时用于构造方法的第一行。
    • 方法的重写,即子类可以重定义继承来自父类的方法。
    • 类层次,即父类派生多个子类,子类还可派生自己的子类。继承的机制是可传递的,即父类可将一个特性传给子类。
    • Object类,所以的类都是由Object类派生的,如果类中没有extends声明继承了哪个父类,则默认这个类派生于Objec类,例如
    • 抽象类,即一个不能被实例化的类。1.在类的头部含有abstract修饰符就可以将类声明为抽象类。2.抽象类不能生成对象 3.如果一个类当中包含抽象函数,那么这个类必须被声明为抽象类 4.如果一个类当中没有抽象函数,那么这个类也可以被声明为抽象类。
    • 可见性,关键概念:私有成员被子类继承不能通过名字直接饮用,但可间接引用。
    • 设计继承,它是面向对象软件的主要特征之一,软件设计必须谨慎且具体地声明继承。如果final修饰符用于一个类,则该类不能被继承。
    • 多进程,在操作系统中能(同时)运行多个任务(程序)。多线程(thread):在同一个应用程序中有多个顺序流(同时)执行
    • 线程的简单控制方法,中断线程Thread.sleep()(在括号内填入休眠的时间)和Thread.yield()(这个方法会让当前线程让出CPU,但并不代表当前线程不会去抢占CPU),设置线程的优先级getPriority()setPriority(),注:线程的优先级最大是10最小是1,可以使用Thread所提供的静态常量来设置线程的优先级。
    • 类集框架,类集框架是一组类和接口,位于java.util包中,主要用户存储和管理对象,分三大类——集合(Set)、列表(List)、映射(Map)注:HashMap<String,String>指的是先键后值的类型
    • equals,对象的内容相等的条件:1.对象的类型相同(可以使用instance操作符进行比较);2.两个对象的成员变量的值完全相同

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

    • 问题1:在程序8.1中使用了Dictionary这个类,而这个类有一个子类Book,为什么一定要将父类分出子类,直接用一个类岂不是更方便?
      解决方案:我的理解是之所以创建子类是有意义的,Book类不能使用Dictionary类显式声明的变量或方法,子类是有限制的,因为子类是父类更特殊的情况,例如:字典可以含有页,因为所以的书都含有页;字典还有定义的部分,但并不是所以的书也都有定义的部分。
    • 问题2:关于方法重写程序8.7中parked.message()dates.message()parked和dates的用法。
      解决方案:教材上和网上并未给出解答,我的理解是,用来调用方法的对象决定实际执行的是哪个方法,在main中,当使用parked对象调用message方法是执行的就是父类的版本。而使用dates对象时执行的就是子类的版本。
    • 问题3:抽象类到底是什么意思。
      解决方案:视频讲解里面是这样解释的,在面向对象过程中,先抽象后具体。教材上说抽象类不能被实例化,不能被调用。这是不是代表它不能使用new产生对象,那这个类感觉没什么用啊。

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

    • 问题1:在蓝墨云班课的线程视频中,多线程程序抢CPU执行,为什么不能直接使用ft.run();方法
      解决方案:通过代码调试发现使用ft.run();的话不会存在多线程抢CPU,而是按照顺序执行。两个循环交替运行表示运行在不同线程中,当调用ft.start();方法后,ft这个线程处于就绪状态,在执行了几个循环后,ft抢到了CPU,主线程则处于就绪状态,二者何时运行是无规律的。
    • 问题2:如图 try catch代码是什么意思?
    • 问题2解决方案:包裹,当编译出现异常时则使用try catch,例如
    try
    {
    int i = 1/0;
    }
    catch(Exception e)
    {
    ........
    }
    

    如果没有try的话,出现异常会导致程序崩溃。而try则可以保证程序的正常运行下去,一个计算的话,如果除数为0,则会报错,如果没有try的话,程序直接崩溃。用try的话,则可以让程序运行下去,并且输出为什么出错。

    代码托管

    (statistics.sh脚本的运行结果截图)

    上周考试错题总结

    本周无错题

    结对及互评

    点评模板:

    • 博客中值得学习的或问题:
      结伴伙伴暂未发表博客

    • 代码中值得学习的或问题:
      结伴伙伴暂未发表博客

    • 基于评分标准,我给本博客打分: 分。得分情况如下:

    • 参考示例

    点评过的同学博客和代码

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

    说实话,感觉结对学习这一个设置有些多余,我分析以下几点:

      1.我们班的同学对于java是从零开始学习,有学懂的同学,但是可以说是少数,但从一个对象不能给予太大的帮助

      2.结对学习要求提供学习照片和学习内容,我认为这是不合理的,因为我们结对是大多数建立在问问题的基础上,是属于单方面进步,而不是共同进步

      3.大多数同学是没有一定的时间和空间进行结对学习的

      4.现在我相信班上大部分同学的结对学习这项内容都是为了应付作业,而不是学习的本质

    综上4点我认为可以加以改进甚至取消结对学习。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 180/180 1/4 15/15
    第二周 465/645 1/5 18/33 学习了scanner
    第三周 456/1101 1/6 17/ 50 学会了如何编写数学公式等
    第四周 620/1734 2/8 40/90 学了条件循环和数组
    第五周 890/2604 1/9 25/115 接近学会了编写类
    第六周 462/3068 1/10 30/145 了解了继承的概念
    第七周 0/0 1/11 0/0

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:20小时
    • 实际学习时间:30小时

    (有空多看看现代软件工程 课件 软件工程师能力自我评价表)

    参考资料

  • 相关阅读:
    Junit单元测试
    win7的6个网络命令
    WOJ1024 (POJ1985+POJ2631) Exploration 树/BFS
    WOJ1022 Competition of Programming 贪心 WOJ1023 Division dp
    woj1019 Curriculum Schedule 输入输出 woj1020 Adjacent Difference 排序
    woj1018(HDU4384)KING KONG 循环群
    woj1016 cherry blossom woj1017 Billiard ball 几何
    woj1013 Barcelet 字符串 woj1014 Doraemon's Flashlight 几何
    woj1012 Thingk and Count DP好题
    woj1010 alternate sum 数学 woj1011 Finding Teamates 数学
  • 原文地址:https://www.cnblogs.com/lxrlxr/p/6664980.html
Copyright © 2011-2022 走看看