zoukankan      html  css  js  c++  java
  • 201521123017 《Java程序设计》第6周学习总结

    1. 本周学习总结

    <>

    2. 书面作业

    Q1.clone方法
    1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么?
    1.2 自己设计类时,一般对什么样的方法使用protected进行修饰?以作业Shape为例说明。
    1.3 在test1包中编写简单的Employee类,在test2包中新建一个TestProtected类,并在main中尝试调用test1包中的Employee的clone方法克隆一个新对象,能否成功?为什么?

    1.1 第一,要覆盖clone方法,修饰符为public;第二,实现Cloneable接口

    1.2 protected的访问权限是本类,同包和子类,当子类想要访问父类的属性和方法时,可以使用protected,以Shape为例,当求正方形和圆的面积和 和 周长和,其过程都是将面积和周长相加,可以调用父类的方法 public abstract double add(Shape[] shape),两个子类中调用protecte double add(对象数组)

    1.3 不能成功,编译失败
    在test1中编写clone(),

    public Employee clone() throws CloneNotSupportedException{
    		  return (Employee) super.clone();
    	}
    

    在test2包中调用Employee e1 = new Employee();Employee e2 = e1.clone();

    也就是实际调用了clone()方法却却没有处理它声明抛出的异常,需要显示定义一个构造方法

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

    匿名内部类

    Arrays.sort(person,new NameComparator(){
        public int compare(PersonSortable2 o1, PersonSortable2 o2) {
        int n;
        n=o1.getName().compareTo(o2.getName());
        if(n!=0) return n;
        else return 0;
        }
        });//匿名内部类对Name的排序
    
    Arrays.sort(person,new AgeComparator(){
        public int compare(PersonSortable2 o1, PersonSortable2 o2) {
        int n;
        n=o1.getAge()-o2.getAge();
        return n;
        }
        });//匿名内部类对Age的排序
    

    运行结果

    Lambda表达式
    Arrays.sort(person,(o1,o2)->o1.getName().compareTo(o2.getName()));//Lambda表达式对Name排序

    Arrays.sort(person,(o1,o2)->o1.getAge()-o2.getAge());//Lambda表达式对Age排序

    运行结果

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

    Comparator<Shape> shapeComparator = new  Comparator<Shape>() {  
         @Override  
         public int compare(Shape o1, Shape o2) {  
             //你的代码     
          }         
    };  
    
    1. shapeComparator所指向的对象只是为了实现Comparator接口,对继承方法的调用或覆盖,大部分匿名内部类用于实现接口,在运行时,类为实现这个接口的类,类名没有太大的意义

    Q4.GUI中的事件处理
    4.1 写出事件处理模型中最重要的几个关键词。
    4.2 使用代码与注释,证明你理解了事件处理模型。

    4.1 JTextField-文本字段,JLabel-标签,JButton-按钮;JTextField可以用于得到输入的信息,例如输入账号和密码,JLabel类似提示,例如在输入帐号时,在文本框前面,表示后面的文本框是输入账号,JButton触发事件

    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 尝试使用图形界面改写。
    5.2 给出两人在码云上同一项目的提交记录截图。
    5.3 与上周相比,项目的主要改动是什么?

    (注:使用netbeans来创建图形界面,在按钮中编写new shopping().setVisible(true);但在点击时,并未出现shopping的JFrame窗口,本题只做出个界面,没有上次的购物功能实现,还在研究netbeans的用法)

    5.1

    • 登录界面

    private void interActionPerformed(java.awt.event.ActionEvent evt) {                                      
        String a=account.getText();
        String b=password.getText();
        new shopping().setVisible(true);//按下登录按钮进入到shopping界面,.setVisible(true)显示界面
        }          
    
    
    • shopping界面

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        new shopping().setVisible(true);//继续购买,则进入新的shopping界面
        }                                        
    
        private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        new shopcar().setVisible(true);//不购买,跳转到shopcar界面
        }               
    
    • 结账界面

    • 提交记录

    • 项目的主要改动是图形界面,用JTextField-文本字段,JLabel-标签,JButton-按钮来设计界面,通过点击鼠标来触发事件,实现shop的功能

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

    3.1. 码云代码提交记录

    3.2. PTA实验总结

    1. ArrayIntegerStack,功能与栈一样,在内部建立一个数组和一个标记top,记录栈顶位置,判断是否栈空或栈满,private Integer[] arr; private int top=0;,实现接口的功能,主要是top的值的改变,最难的是判断栈空和栈满时,要输出对应数量的null,此时可根据top-arr.length的差值来输出null的个数

    2. 静态内部类,主要在外部类的方法中,创建内部类对象,使用内部类的属性,静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().属性 的方式访问,创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员

  • 相关阅读:
    XAML学习笔记之Layout(五)——ViewBox
    XAML学习笔记——Layout(三)
    XAML学习笔记——Layout(二)
    XAML学习笔记——Layout(一)
    从0开始搭建SQL Server 2012 AlwaysOn 第三篇(安装数据,配置AlwaysOn)
    从0开始搭建SQL Server 2012 AlwaysOn 第二篇(配置故障转移集群)
    从0开始搭建SQL Server 2012 AlwaysOn 第一篇(AD域与DNS)
    Sql Server 2012 事务复制遇到的问题及解决方式
    Sql Server 2008R2升级 Sql Server 2012 问题
    第一次ACM
  • 原文地址:https://www.cnblogs.com/gemola/p/6641781.html
Copyright © 2011-2022 走看看