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 = { "", "", "", "" }; public static void main(String[] args) {
Stack stk = new Stack();
for (int i = ; i < months.length; i++)
stk.push(months[i]);
System.out.println(stk);
System.out.println("element 2=" + stk.elementAt());
while (!stk.empty())
System.out.println(stk.pop());
}
}

//示例程序3
import java.util.*; class Counter {
int i = ; public String toString() {
return Integer.toString(i);
}
} public class Statistics {
public static void main(String[] args) {
Hashtable ht = new Hashtable();
for (int i = ; i < ; i++) {
Integer r = new Integer((int) (Math.random() * ));
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());
al.add(new Integer());
al.add(new Integer());
al.add(new String("hello"));
// First print them out using a for loop.
System.out.println("Retrieving by index:");
for (int i = ; 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();
while (li.hasNext())
System.out.println(li.next());
if (l.indexOf("Hello") < )
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(, ,, );
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 / , screenHeight / );
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 = ;
public static final int MESSAGE_Y = ; private static final int DEFAULT_WIDTH = ;
private static final int DEFAULT_HEIGHT = ; 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软件的使用不熟悉,好多程序性的错误来源于初始创建不准确。在群文件中按照步骤学习操作,基本掌握了使用方法。本周的测试程序基本能够自主完成,但是对于程序的理解程度还不够,只能照本宣科敲代码,希望后续能多花时间在敲代码上,提升写代码的思路和速度!

201271050130-滕江南-《面向对象程序设计(java)》第十二周学习总结的更多相关文章

  1. 20155322 2016-2017-2 《Java面向对象程序设计》第十二周课堂练习之Arrays和String单元测试

    20155322 2016-2017-2 <Java面向对象程序设计>第十二周课堂练习之Arrays和String单元测试 练习目地 在IDEA中以TDD的方式对String类和Array ...

  2. 201521123061 《Java程序设计》第十二周学习总结

    201521123061 <Java程序设计>第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对 ...

  3. 201521123072《java程序设计》第十二周学习总结

    201521123072<java程序设计>第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象 ...

  4. 201521123038 《Java程序设计》 第十二周学习总结

    201521123038 <Java程序设计> 第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student ...

  5. 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结

    <面向对象程序设计Java>第八周学习总结   项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...

  6. 201521123122 《java程序设计》第十二周学习总结

    ## 201521123122 <java程序设计>第十二周实验总结 ## 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将St ...

  7. 201771010118马昕璐《面向对象程序设计java》第八周学习总结

    第一部分:理论知识学习部分 1.接口 在Java程序设计语言中,接口不是类,而是对类的一组需求描述,由常量和一组抽象方法组成.Java为了克服单继承的缺点,Java使用了接口,一个类可以实现一个或多个 ...

  8. 201771010134杨其菊《面向对象程序设计java》第八周学习总结

    第八周学习总结 第一部分:理论知识 一.接口.lambda和内部类:  Comparator与comparable接口: 1.comparable接口的方法是compareTo,只有一个参数:comp ...

  9. 201771010134杨其菊《面向对象程序设计java》第七周学习总结

    第七周学习总结 第一部分:理论知识 1.继承是面向对象程序设计(Object Oriented Programming-OOP)中软件重用的关键技术.继承机制使用已经定义的类作为基础建立新的类定义,新 ...

  10. 201521123005 《Java程序设计》 第十二周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

随机推荐

  1. TensorFlow从1到2(十二)生成对抗网络GAN和图片自动生成

    生成对抗网络的概念 上一篇中介绍的VAE自动编码器具备了一定程度的创造特征,能够"无中生有"的由一组随机数向量生成手写字符的图片. 这个"创造能力"我们在模型中 ...

  2. AcWing 791. 高精度加法 解题记录

    题目地址 https://www.acwing.com/problem/content/description/793/ 题目描述给定两个正整数,计算它们的和. 输入格式共两行,每行包含一个整数. 输 ...

  3. acwing 60. 礼物的最大价值

    地址 https://www.acwing.com/problem/content/56/ 在一个m×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于0). 你可以从棋盘的左上角开始拿 ...

  4. Win32 程序开发:创建一个应用程序窗口

    一.创建一个应用程序窗口 代码如下: // 头文件 #include <windows.h> // 全局变量 WCHAR g_lpszClassName[] = L"CLASSN ...

  5. MySQL数据库实战之优酷

    目录 一.项目总结三步骤 二.项目需求分析 三.搭建框架 四.ORM框架分析 五.数据库设计 六.项目中各个功能模块分析 七.项目中遇到的问题及怎么解决的 八.客户端代码框架 8.1 conf 8.1 ...

  6. Dubbo 一些你不一定知道但是很好用的功能

    dubbo功能非常完善,很多时候我们不需要重复造轮子,下面列举一些你不一定知道,但是很好用的功能: 直连Provider 在开发及测试环境下,可能需要绕过注册中心,只测试指定服务提供者,这时候可能需要 ...

  7. IT兄弟连 Java语法教程 流程控制语句 分支结构语句5

    5  switch-case条件语句 Java中的第二种分支控制语句时switch语句,switch语句提供了多路支持,因此可以使程序在多个选项中进行选择.尽管一系列嵌套if语句可以执行多路测试,然而 ...

  8. gRPC+gRPC Gateway+swagger小记

    前言 本文记录了grpc-gateway的简单使用. 定义proto 先来看看最常规的 syntax = "proto3"; package protos; service Gre ...

  9. Spark Streaming Listener 监控批次处理延迟进行告警

    概述 StreamingListener 是针对spark streaming的各个阶段的事件监听机制. StreamingListener接口 //需要监听spark streaming中各个阶段的 ...

  10. oracle学习笔记(十八) PL/SQL 游标

    游标 说明 查询结果的光标,相当于java中的一个迭代器,方便遍历操作 可使用的属性 %FOUND SQL语句查询或影响了一行或多行时为 TRUE.如:mycursor%FOUND %NOTFOUND ...