• Java 第六周总结


    1. 本周学习总结

    1.1 面向对象学习暂告一段落,请使用思维导图,以封装、继承、多态为核心概念画一张思维导图,对面向对象思想进行一个总结。

    注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖面向对象的核心内容即可。

    注2:颜色要少、连线不要复杂,必要的时候要在连线上进行说明。

    2. 书面作业

    1.clone方法

    1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?

    • 根据API的解释:子类必须实现Cloneable接口,否则即使覆盖了clone()方法,仍然会抛出异常(CloneNotSupportedException)的。
    • 覆盖clone和覆盖equals类似,也要满足他们Object中的性质。所有使用clone方法的类,不论是继承Object.clone()还是覆盖他,都必须实现一个名味cloneable的接口
    • 所以,一个自定义类中覆盖clone方法必须满足两个条件:
    • (1)implements Cloneable 继承cloneable接口
    • (2)
    
        @Override
         
        public Object clone() throws CloneNotSupportedException
    
    
    • 创建并且返回被克隆对象的Copy,“Copy”的确切含义可能取决于被克隆对象的类。

    1.2 自己设计类时,一般对什么样的方法使用protected进行修饰?以作业Shape为例说明。

    • private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用

    • 长方形的长和宽,圆形的半径,都是私有的。只有长方形类能调用weigth和length,其他的类都不能使用

    1.3 在test1包中编写简单的Employee类,在test2包中新建一个TestProtected类,并在main中尝试调用test1包中的Employee的clone方法克隆一个新对象,能否成功?为什么?



    2.使用匿名类与Lambda表达式改写题集面向对象2-进阶-多态接口内部类的题目5-2

    仅需粘贴关键代码与运行结果。

    • Lambda表达式:就是匿名方法,只是语法不同。(param)->expr param是输入参数列表,expr是一个表达式或者一系列语句。

    3.分析下列代码,回答shapeComparator所指向的对象与Comparator接口有什么关系?

    Comparator<Shape> shapeComparator = new  Comparator<Shape>() {  
     @Override  
     public int compare(Shape o1, Shape o2) {  
     //你的代码 
      } 
    };  
    
    • 在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标。
    • 所以这里是用shapeComparator来实现Coparator接口,重写排序方法,对对象进行排序

    4.GUI中的事件处理

    4.1 写出事件处理模型中最重要的几个关键词。

    • 事件:点击按钮,组件属性发生变化时产生了某个事件
    • 事件源:各种组件。如按钮,文本框,微调器等等
    • 事件服务程序:若事件源上发生的事情被程序处理,就要吧事件源注册给能够处理该事件源上那种类型事件的监听者。
    • 事件监听接口:监听者可以是容器,也可以是另外的对象。

    4.2 使用代码与注释,证明你理解了事件处理模型。

    • 拿这周折腾了好久的购物界面举个例子......虽然写的真的很糙,而且看着超简单,可是从有想法到最后实现差不多弄了两三天
     private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { //当按下按钮的时候,执行以下代码                                        
            // TODO add your handling code here:
            goodlist[1]=(new Books("图书类","Java从入门到精髓",48.86,45));//赋值
            String a=jTextField3.getText();//获取文本框里的数量
            int b=Integer.parseInt(a);//获取到的是sting类型,转成int
             ShoppingCart newone =new ShoppingCart(goodlist[1].getCategory(),goodlist[1].getName(),goodlist[1].getPrice(),goodlist[1].getNum(),b);//初始化
             cartlist.add(newone);//添加到购物列表
             System.out.println(newone);//测试
               }                                        
    
    jPanel5.setBackground(new java.awt.Color(255, 241, 219));//窗口5的背景颜色
            jPanel5.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
            jPanel5.setPreferredSize(new java.awt.Dimension(152, 185));
    
            jLabel8.setFont(new java.awt.Font("隶书", 0, 18)); // NOI18N  窗口8的字体设置
            jLabel8.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
            jLabel8.setText("27.80");//文本框显示的内容
    

    5.结对编程:面向对象设计(大作业2-非常重要,未完成-2)

    继续完善上周的项目作业。考核点如下:

    5.1 尝试使用图形界面改写。

    5.2 给出两人在码云上同一项目的提交记录截图。

    • 我这边码云一直连接不上,所以就只有她一个人的提交记录。然后我们的分工里,我主要是对图形界面这一部分的调整和连接,所以就放了一下图形界面这一部分的代码。
    姓名 地址
    游舒婷 http://www.cnblogs.com/sakurai3104/p/6658217.html
    杨晨露 http://www.cnblogs.com/ycll/p/6658699.html
    码云 http://git.oschina.net/sakurai3104/Shopping

    5.3 与上周相比,项目的主要改动是什么?

    • 主要增加了简单的图形界面
    • 关于购物车类和商品类之间的关系重新理了一下,添加了购物列表来存储商品,并且赋到购物车界面里。因为对于数据库的连接还不太会,所以在购物界面采用的是直接赋值的方法。这样的效率很低,只能面向某几个商品,如果多了的话就很麻烦,这是一个以后要改进的点。

    3. 码云代码提交

    4.实验总结

    • (1)面板的重要性。如果没有面板容器来装各个组件,组件之间不容易互相共容,不方便叠加。
    • (2)setText()显示文本
    • (3)getText()获取文本
    • (4)好像只有按钮和文本框可以向里面进行源码的编写,标签的源码似乎是固定的,没法进行更改。
    • (5)调整页面,熟悉各种组件花费太多时间。以及想实现的页面跳转和弹窗都没法去弄。
  • 相关阅读:
    ASP.NET CORE中控制器内return HTML 内容自动编码问题
    sql server中调用c#写的dll里的方法
    牛腩视频播放管理系统
    apicloud开发笔记
    asp.net core在linux上的部署调试
    C#-微信公众平台接口-上传临时素材
    csc.exe已退出,代码为-532462766
    牛腩记账本core版本源码
    sql server中根据地图经纬度算距离
    ASP.NET CORE做的网站运行在docker上(不用dockerfile文件部署)
  • 原文地址:https://www.cnblogs.com/ycll/p/6658699.html
Copyright © 2020-2023  润新知