zoukankan      html  css  js  c++  java
  • 201271050130-滕江南-《面向对象程序设计(java)》第十二周学习总结

    201271050130-滕江南-《面向对象程序设计(java)》第十二周学习总结

      项       目

    内      容

    这个作业属于哪个课程

    https://www.cnblogs.com/nwnu-daizh

    这个作业的要求在哪里

    https://www.cnblogs.com/nwnu-daizh/p/11867214.html

     

     

    作业学习目标

    (1) 掌握Vetor、Stack、Hashtable三个类的用途及常用API;

    (2)  掌握ArrayList、LinkList两个类的用途及常用API;

    (3) 了解java集合框架体系组成;

    (4) 掌握Java GUI中框架创建及属性设置中常用类的API;

    (5) 了解Java GUI中2D图形绘制常用类的API;

    第一部分:总结第九章、第十章理论知识

    第九章 集合

    1、Java的集合框架

    Java的集合框架实现对各种数据结构的封装;

    所谓框架就是一个类库,框架中包括一些通用接口和超类,编程者实现这些接口或者 创建这些超类的子类就可方便的设计程序所需要的类;

    集合(或者称为容器)是一类包含多个元素并提供对所包含元素的操作方法的类,其包含的元素可以由同一类型的对象组成,也可以由不同类型的对象组成;

    集合框架:Java集合类库的统一架构。

    2、集合类的作用

    (1)Java的集合类提供了对基本数据类型的支持;

    (2)例如:Vector、Hashtable、Stack等;

    3、集合类的使用

    Java的集合类包含在java.util包中;

    import java.util.*;

    4、集合类的特点

      只容纳对象:

    注意:数组可以容纳基本数据类型的数据和对象;

      如果集合类中想使用基本数据类型,邮箱利用集合类的灵活性,可以把基本数据类型数据封装成该数据类型的包装器对象,然后放入集合中处理;

    5、新旧集合类

    在Java1.0和JDK1.1中提供了Vector(矢量),Hashtable(哈希表),Stack(堆栈),Properties(属性集)等集合类,尽管这些类非常有用,但是彼此独立,缺少一个统一集中的机制。

    6、Vector类

    Vector类类似长度可变的数组;

    Vector中只能存放对象;

    Vector的元素通过下标进行访问;

    Vector类关键属性:

    ——capacity表示集合最多能容纳的元素个数;

    ——capacityIncrement表示每次增加多少容量;

    ——size表示当前元素的集合;

    7、Vector类的关键方法

    ——void  addElement(Object   obj)

    ——void   add(int  index,  Object   element)

    ——Object  elementAt(int   index)

    ——void   insertElementAt(Object   obj,  int  index)

    8、Stack类:

    Stack类是Vectoe类的子类;

    Stack类描述堆栈数据结构,即FILO;

    Stack类的关键方法:

    ——public   void  push(Object   item)        //把项压入栈顶

    ——public  Object   pop()       //移除栈顶元素对象并作为此函数的值返回该对象

    ——public  Object  peek()      //查看栈顶元素而不移除它

    ——public    Boolean   empty()      //测试堆栈是否为空

    9、Hashtable类

    Hashtable类通过键值来查找元素;

    Hashtable类用散列码(hashcode)来确定值。所有对象都有一个散列码,可以通过Object类的hashCode()方法来获得;

    10、集合的基本框架:

    第10章 图形程序设计

    10.1 AWT与Swing简介

    1.用户界面(User Interface) 的概念:用户与计算机系统(各种程序)交互的接口
    2.图形用户界面(Graphical User Interface)的概念: 以图形方式呈现的用户界面

    3.AWT:

    a. Java的抽象窗口工具箱(AbstractWindow Toolkit,AWT)包含在java.awt包中,它提供了许 多用来设计GUI的组件类和容器类。

    b. AWT库处理用户界面元素的方法:把图形元素的创 建和行为委托给本地GUI工具箱进行处理。

    c. 应用AWT编写依赖于本地用户界面元素GUI会暴露 出一些缺陷。例如,菜单、滚动条和文本域这些 用户界面元素,在不同的平台上,操作行为上存 在一些微妙的差异。

    4. Swing 

    a. Swing用户界面库是非基于对等体的GUI工具箱。

    b.Swing具有更丰富并且更方便的用户界面元素集合。
    c.Swing对底层平台的依赖很少,因此与平台相关的bug很少。
    d.Swing会带来交叉平台上的统一视觉体验。
    e.Swing类库被放在javax.swing包里。

    f. AWT与Swing的关系

      (1) 大部分AWT组件都有其Swing的等价组件。
      (2) Swing组件的名字一般是在AWT组件名前面添加一个字母“J”,如:JButton,JFrame,JPanel等。

    10.2 框架的创建

    10.2.1 组件

      构成图形用户界面的元素,拿来即用 .

      用图形表示(能在屏幕上显示,能和用户进行交互) –Button、Checkbox、Scrollbar、Choice、Frame

    10.2.2 容器

      容器是Java中能容纳和排列组件的组件。

      常用的容器是框架(Frame,JFrame) 例: Frame fra= new Frame(“这是一个窗口”);

      java.awt.Frame类的常用API(教材414页) void setResizable(booleanb) 缩放框架 void setTitle(String s) 设置框架标题 void setIconImage(Image image) 将Image用 作框架图标

    10.2.3 添加组件

      Container类提供了一个方法add(),用来在容器类 组件对象中添加其他组件。 

      容器本身也是一个组件,可以把一个容器添加到 另一个容器里,实现容器嵌套。

    10.2.4 框架(Frame)的创建

    (1)创建空框架 :在Java中,常采用框架(Frame)创建初始界面, 即GUI的顶层窗口

      AWT库中有一个基于对等体的Frame类。 该类的Swing版本为JFrame,JFrame是Frame子类。 

    (2)框架定位与框架属性
      定位: 常用Component类的setLocation和setBounds方法 常用属性

        Title:框架标题

        IconImage:框架图标

    (3)确定框架大小 : 通过调用Toolkit类的方法来得到屏幕尺寸信息。
          Toolkit kit = Toolkit.getDefaultToolkit();   //生成 Toolkit对象
          Dimension screenSize= kit.getScreenSize();  //返回 Dimension对象的屏幕大小
          intscreenWidth= screenSize.width;  //获得Dimension对 象屏幕的宽度
          intscreenHeight=screenSize.height;   //获得Dimension 对象屏幕的高度

    10.3 图形程序设计

    图形编程这部分内容会在实验中有所体现。

    包含以下特点:
    1 处理2D图形
    2 颜色的使用
    2 字体的使用

    10.4显示图像

    (1)在Java应用程序中,一旦图像保存在本地或因 特网的某个位置上,就可以将它们直接读入到java 应用程序中。

      String filename = “…”; Image image= ImageIcon(filename).getImage();

    (2)完成将一个图像文件加载到程序中,再调用 Graphics类提供的DrawImage()显示它。
      public void paintComponent(Graphics g)

      {   … g.drawImage(image, x, y, null); }

    第二部分:实验部分

    测试程序1:

    //示例程序1
    import java.util.Vector;
    class Cat {
        private int catNumber;
        Cat(int i) {
            catNumber = i;
        }
        void print() {
            System.out.println("Cat #" + catNumber);
        }
    }
    class Dog {
        private int dogNumber;
        Dog(int i) {
            dogNumber = i;
        }
        void print() {
            System.out.println("Dog #" + dogNumber);
        }
    }
    public class CatsAndDogs {
        public static void main(String[] args) {
            Vector cats = new Vector();
            for (int i = 0; i < 7; i++)
                cats.addElement(new Cat(i));
            cats.addElement(new Dog(7));
            for (int i = 0; i < cats.size(); i++)
                ((Cat) cats.elementAt(i)).print();
        }
    }

    //示例程序2
    import java.util.*;
    
    public class Stacks {
        static String[] months = { "1", "2", "3", "4" };
    
        public static void main(String[] args) {
            Stack stk = new Stack();
            for (int i = 0; i < months.length; i++)
                stk.push(months[i]);
            System.out.println(stk);
            System.out.println("element 2=" + stk.elementAt(2));
            while (!stk.empty())
                System.out.println(stk.pop());
        }
    }

    //示例程序3
    import java.util.*;
    
    class Counter {
        int i = 1;
    
        public String toString() {
            return Integer.toString(i);
        }
    }
    
    public class Statistics {
        public static void main(String[] args) {
            Hashtable ht = new Hashtable();
            for (int i = 0; i < 10000; i++) {
                Integer r = new Integer((int) (Math.random() * 20));
                if (ht.containsKey(r))
                    ((Counter) ht.get(r)).i++;
                else
                    ht.put(r, new Counter());
            }
            System.out.println(ht);
        }
    }

    测试程序2:

    import java.util.*;
    
    public class ArrayListDemo {
        public static void main(String[] argv) {
            ArrayList al = new ArrayList();
            // Add lots of elements to the ArrayList...
            al.add(new Integer(11));
            al.add(new Integer(12));
            al.add(new Integer(13));
            al.add(new String("hello"));
            // First print them out using a for loop.
            System.out.println("Retrieving by index:");
            for (int i = 0; i < al.size(); i++) {
                System.out.println("Element " + i + " = " + al.get(i));
            }
        }
    }

    import java.util.*;
    public class LinkedListDemo {
        public static void main(String[] argv) {
            LinkedList l = new LinkedList();
            l.add(new Object());
            l.add("Hello");
            l.add("zhangsan");
            ListIterator li = l.listIterator(0);
            while (li.hasNext())
                System.out.println(li.next());
            if (l.indexOf("Hello") < 0)   
                System.err.println("Lookup does not work");
            else
                System.err.println("Lookup works");
       }
    }

     测试程序3:

    package linkedList;
    
    import java.util.*;
    
    /**
     * This program demonstrates operations on linked lists.
     * @version 1.11 2012-01-26
     * @author Cay Horstmann
     */
    public class LinkedListTest
    {
       public static void main(String[] args)
       {
          List<String> a = new LinkedList<>();
          a.add("Amy");
          a.add("Carl");
          a.add("Erica");
    
          List<String> b = new LinkedList<>();
          b.add("Bob");
          b.add("Doug");
          b.add("Frances");
          b.add("Gloria");
    
          // 将单词从B合并为A
    
          ListIterator<String> aIter = a.listIterator();
          Iterator<String> bIter = b.iterator();
    
          while (bIter.hasNext())
          {
             if (aIter.hasNext()) aIter.next();
             aIter.add(bIter.next());
          }
    
          System.out.println(a);
    
          // 从B中删除每个第二个单词
    
          bIter = b.iterator();
          while (bIter.hasNext())
          {
             bIter.next(); // 跳过一个元素
             if (bIter.hasNext())
             {
                bIter.next(); // 跳过下一个元素
                bIter.remove(); // 删除该元素
             }
          }
    
          System.out.println(b);
    
          // 批量操作:从A中删除B中的所有单词
    
          a.removeAll(b);
    
          System.out.println(a);
       }
    }

     测试程序4

    import javax.swing.*;
    public class SimpleFrameTest
    {
       public static void main(String[] args)
       {
         JFrame  frame = new JFrame(); 
         frame.setBounds(0, 0,300, 200);
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         frame.setVisible(true);    
       }
    }

     测试程序5:

    package sizedFrame;
    
    import java.awt.*;
    import javax.swing.*;
    
    /**
     * @version 1.34 2015-06-16
     * @author Cay Horstmann
     */
    public class SizedFrameTest
    {
       public static void main(String[] args)
       {
          EventQueue.invokeLater(() ->
             {
                JFrame frame = new SizedFrame();
                frame.setTitle("SizedFrame");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
             });
       }
    }
    
    class SizedFrame extends JFrame
    {
       public SizedFrame()
       {
          // 获取屏幕尺寸
    
          Toolkit kit = Toolkit.getDefaultToolkit();
          Dimension screenSize = kit.getScreenSize();
          int screenHeight = screenSize.height;
          int screenWidth = screenSize.width;
    
          // 设置框架宽度、高度并让平台选择屏幕位置
    
          setSize(screenWidth / 2, screenHeight / 2);
          setLocationByPlatform(true);
    
          // 设置帧图标
    
          Image img = new ImageIcon("icon.gif").getImage();
          setIconImage(img);      
       }
    }

     测试程序6:

    package notHelloWorld;
    
    import javax.swing.*;
    import java.awt.*;
    
    /**
     * @version 1.33 2015-05-12
     * @author Cay Horstmann
     */
    public class NotHelloWorld
    {
       public static void main(String[] args)
       {
          EventQueue.invokeLater(() ->
             {
                JFrame frame = new NotHelloWorldFrame();
                frame.setTitle("NotHelloWorld");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
             });
       }
    }
    
    /**
     * A frame that contains a message panel
     */
    class NotHelloWorldFrame extends JFrame
    {
       public NotHelloWorldFrame()
       {
          add(new NotHelloWorldComponent());
          pack();
       }
    }
    
    /**
     * A component that displays a message.
     */
    class NotHelloWorldComponent extends JComponent
    {
       public static final int MESSAGE_X = 75;
       public static final int MESSAGE_Y = 100;
    
       private static final int DEFAULT_WIDTH = 300;
       private static final int DEFAULT_HEIGHT = 200;
    
       public void paintComponent(Graphics g)
       {
          g.drawString("Not a Hello, World program", MESSAGE_X, MESSAGE_Y);
       }
       
       public Dimension getPreferredSize() { return new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT); }
    }

     实验总结

               在本周的学习过程中,复习了上周内容即泛型程序设计的知识,学习了新的关于集合类的知识,总体来说一点点跟上大家的进度。之前对Eclipse软件的使用不熟悉,好多程序性的错误来源于初始创建不准确。在群文件中按照步骤学习操作,基本掌握了使用方法。本周的测试程序基本能够自主完成,但是对于程序的理解程度还不够,只能照本宣科敲代码,希望后续能多花时间在敲代码上,提升写代码的思路和速度!

  • 相关阅读:
    [WP8.1UI控件编程]SemanticZoom控件实现分组列表
    [深入浅出WP8.1(Runtime)]Toast通知
    [深入浅出WP8.1(Runtime)]生成图片和存储生成的图片文件
    [深入浅出WP8.1(Runtime)]应用文件的URI方案
    [深入浅出WP8.1(Runtime)]浮出控件(Flyout)
    [深入浅出WP8.1(Runtime)]文本框(TextBox)
    [深入浅出WP8.1(Runtime)]文本块(TextBlock)
    [深入浅出WP8.1(Runtime)]Windows Phone 8.1和Silverlight 8.1的区别
    [WP8.1UI控件编程]Windows Phone XAML页面的编译
    [WP8.1UI控件编程]Windows Phone大数据量网络图片列表的异步加载和内存优化
  • 原文地址:https://www.cnblogs.com/tjnkxh/p/11881041.html
Copyright © 2011-2022 走看看