zoukankan      html  css  js  c++  java
  • 201521123027 <iava程序设计>第六周学习总结

    1. 本周学习总结

    1.1 面向对象学习暂告一段落,请使用思维导图,以封装、继承、多态为核心概念画一张思维导图,对面向对象思想进行一个总结。
    注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖面向对象的核心内容即可。
    注2:颜色要少、连线不要复杂,必要的时候要在连线上进行说明。

    2. 书面作业

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

    答: Object对象中的clone方法是被protected修饰,需要在同一个包里或者在子类中才可以访问,在自定义的类中克隆对象要覆盖clone方法,声明改为public,另外还需要实现Cloneable接口。
    

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

    答:当我们希望方法只能在子类中或在同一个包内访问,不能被不是同一个包内的类访问时可以使用protected进行修饰;
    
    例如在作业Shape中,子类Circle、Rectangle都是继承Shape类,所以这两个子类有getPerimeter()与getArea()两种方法,而我们只想这两种方法只在子类Circle、Rectangle中调用,不想其他的类获得这两种方法,故我们要用protected进行修饰getPerimeter()与getArea()方法。
    

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

    答:不能成功;因为protected修饰了clone()方法,所以clone()方法不能被其他包内的类调用,而且Employee类与TestProtected类分属不同类,故无法成功。
    

    Q2.使用匿名类与Lambda表达式改写题集面向对象2-进阶-多态接口内部类的题目5-2
    仅需粘贴关键代码与运行结果,图片不要太大。

    内部类:
    Comparator<PersonSortable2> AgeComparator = new Comparator<PersonSortable2>(){
                public int compare(PersonSortable2 o1, PersonSortable2 o2) {
                    if (o1 == o2) return 0;
                    return o1.getAge()-o2.getAge();
                }
            };
    
    Lambda表达式:
            PersonSortable2 o1;
            PersonSortable2 o2;
            Comparator<PersonSortable2> NameComparator = (o1 , o2) --> o1.getName().compareTo(o2.getName());
            Comparator<PersonSortable2> AgeComparator = (o1,o2) --> o1.getAge()-o2.getAge();
    

    运行结果:

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

    Comparator<Shape> shapeComparator = new  Comparator<Shape>() {  
         @Override  
         public int compare(Shape o1, Shape o2) {  
             //你的代码     
          }         
    };  
    
    答:shapeComparator所指向的对象实现了Comparator接口,并且重行写了compare()方法覆盖了父类的compare()方法。
    

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

    事件:用户在GUI组件上进行的操作,如鼠标单击、输入文字、关闭窗口等;
    事件源:能够产生事件的GUI组件对象,如按钮、文本框等;
    事件监听器:调用事件处理方法的对象;
    事件适配器:在适配器中,实现了相应监听器接口的所有方法,但不做任何处理。
    

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

    private void jButtonActionPerformed(java.awt.event.ActionEvent evt) {                                        
        String a=aTextField.getText();//得到aTextField输入的字符串
        String b=bTextField.getText();//得到bTextField输入的字符串
        double da=Double.parseDouble(a);
        double db=Double.parseDouble(b);
        resultLabel.setText(""+(da+db));//JLabel得到两个double数字的和
         } 
    //JButton的功能,在里面输入想要实现的功能,在运行时按下按钮触发事件,实现功能,例如本代码,实现输入两个数字字符串,并转换为double数字,并相加
    

    Q5.结对编程:面向对象设计(大作业2-非常重要,未完成-2)
    继续完善上周的项目作业。考核点如下:
    5.1 尝试使用图形界面改写。
    登录界面:

     private void loginButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            
            String a= nameTextField.getText();
            String b= passwordTextField.getText();
            if(a.equals("ccc")&&b.equals("123456")){
                Tips.setText("登录成功!");
            }
            else
                Tips.setText("登录失败,请重试!");
        }                                           
    

    商品界面:

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

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

    答:主要改动是在netbeans中进行了图形界面的设计,用鼠标点击按钮来实现购物的功能,使整个过程更加清晰明了。
    

    3. 码云上代码提交记录及PTA实验总结

    3.1. 码云代码提交记录

    3.2. PTA实验

    5-3此题用数组来实现栈的功能。最难的在于判断栈空和栈满时输出相应的null,可以直接调用IntegerStack接口中的size()方法,代码为if(this.size()>=arr.length) return null;。
    5-4静态内部类的使用。在外部类的方法中创建内部类对象,值得注意的是静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().属性 的方式访问。
    
  • 相关阅读:
    day25:接口类和抽象类
    vue1
    How the weather influences your mood?
    机器学习实验方法与原理
    How human activities damage the environment
    Slow food
    Brief Introduction to Esports
    Massive open online course (MOOC)
    Online learning in higher education
    Tensorflow Dataset API
  • 原文地址:https://www.cnblogs.com/DevilRay/p/6658587.html
Copyright © 2011-2022 走看看