中級實訓:vi,java,ant 和Junit 的學習報告

vi,java,ant 和Junit 的學習報告

1.vi編輯器

vi編輯器是Linux下的一款編輯器,類似於記事本,但是使用方式跟記事本完全是兩個方式

  • 概念
    vi分爲三種狀態,各模式的功能以及特點如下:
    (1)命令行模式
    這一模式也就是我們剛進入vi時候的模式,可以對行做複製,刪除等一系列操作

(2)插入模式
我們需要想vim中寫入的時候使用的就是插入模式,從命令行模式轉到插入模式通過i鍵實現,而退出該模式使用Esc鍵

(3)底行模式
將文件保存或退出vi,當然他還有其他功能:設置編輯環境,列出行號等,但是我們使用最多的還是保存文件並退出使用的命令是:wq!

  • 基本操作
    (1) 進入vi
    在系統提示符號輸入vi及文件名稱後,就進入vi全屏幕編輯畫面是處於,此時處於命令行模式

(2)切換至插入模式
在命令行模式下按一下字母i就可以進入插入模式

(3) 退出vi及保存文件
在命令行模式下,按一下:鍵進入低行模式,並輸入命令,最常見的是下面兩個命令

: wq 存盤並退出vi
q! 不存盤退出vi
  • 功能以及命令

h、j、k、l,控制光標左、下、上、右移一格(當然鍵盤也可以)

ctrl+b:向“後”移動一頁

ctrl+f:向“前”移動一頁

ctrl+u:向“後”移動半頁

ctrl+d:向“前”移動半頁

0:移到文章的開頭

G:移動到文章的最後

$:移動到光標所在行的末尾

^:移動到光標所在行的頭部

w:光標跳到下個字的開頭

e:光標跳到下個字的字尾

b:光標回到上個字的開頭

l:光標移到該行的第#個位置

x:每按一次,刪除光標所在位置的“後面”一個字符。

X:大寫的X,每按一次,刪除光標所在位置的“前面”一個字符。

dd:刪除光標所在行。

yw:將光標所在之處到字尾的字符複製到緩衝區中。

yy:複製光標所在行到緩衝區。

r:替換光標所在處的字符。

R:替換光標所到之處的字符,直到按下ESC鍵爲止。

w:在冒號輸入字母w就可以將文件保存起來。

q:按q就是退出,如果無法離開vi,可以在q後跟一個!強制離開vi。

wq:一般建議離開時,搭配w一起使用,這樣在退出的時候還可以保存文件。

以上大概就是vi所涉及到的常用操作命令了,當然我們用它大多數時候也就是改改環境變量,所以也用不上什麼太繁瑣的功能,不過vi作爲linux下的基本編輯器,相關知識還是要了解的

2.JAVA

JAVA是一門面向對象的編程語言,在語法上跟C++很類似,不過比C++多了UI方面的編程,略去了C++中複雜又容易使人出錯的指針

由於在大二的時候上過JAVA的專選,所以很多知識還是有印象的(雖然忘了很多)

安裝:現在不知道爲什麼JAVA官網下載安裝包需要Oracle賬號,於是乎在網上查到可以使用PPA來安裝,在安裝的時候沒有截圖不過安裝完之後如下


下面簡單編寫一個helloworld程序

在這裏插入圖片描述

在這裏插入圖片描述
這樣我們就可以編寫JAVA程序了,接下來重點說一下GUI方面的編程,因爲這方面接觸/使用都比較少

在這裏先介紹一下組件和容器相關的知識,在我們進行GUI編程時離不開這兩個概念

組件(component)是圖形界面的基本元素,用戶可以直接操作,例如按鈕。容器(Container)是圖形界面的的複合元素,容器可以包含組件,例如面板。

Java語言爲每種組件都預定義類,程序通過它們或它們的子類各種組件對象,如,Swing中預定義的按鈕類JButton是一種類,程序創建的JButton對象,或JButton子類的對象就是按鈕。Java語言也爲每種容器預定義類,程序通過它們或它們的子類創建各種容器對象。例如,Swing中預定義的窗口類JFrame是一種容器類,程序創建的JFrame或JFrame子類的對象就是窗口。

爲了統一管理組件和容器,爲所有組件類定義超類,把組件的共有操作都定義在Component類中。同樣,爲所有容器類定義超類Container類,把容器的共有操作都定義在Container類中。例如,Container類中定義了add()方法,大多數容器都可以用add()方法向容器添加組件。

Component、Container和Graphics類是AWT庫中的關鍵類。爲能層次地構造複雜的圖形界面,容器被當作特殊的組件,可以把容器放入另一個容器中。例如,把若干按鈕和文本框分放在兩個面板中,再把這兩個面板和另一些按鈕放入窗口中。這種層次地構造界面的方法,能以增量的方式構造複雜的用戶界面

而在這裏另外一個重要的概念就是監聽,當發生了一個事件的時候,比如點擊按鈕,需要有監聽器來檢測到這一事件,並根據這個事件作出應有的動作

java語言編寫事件處理程序主要有兩種方案:一個是程序重設handleEvent(Eventevt),採用這個方案的程序工作量稍大一些;另一個方案是程序實現一些系統設定的接口。java按事件類型提供多種接口,作爲監視器對象的類需要實現相應的接口,即實現響應事件的方法。當事件發生時,系統內設的handleEvent(Event evt)方法就自動調用監視器的類實現的響應事件的方法。

一個事件驅動程序要做的工作除創建源對象和監視器對象之外,還必須安排監視器瞭解源對象,或向源對象註冊監視器。每個源對象有一個已註冊的監視器列表,提供一個方法能向該列表添加監視器對象。只有在源對象註冊了監視器之後,系統纔會將源對象上發生的事件通知監視器對象。

在java語言中,爲了便於系統管理事件,也爲了便於程序作監視器註冊,系統將事件分類,稱爲事件類型。系統爲每個事件類型提供一個接口。要作爲監視器對象的類必須實現相應的接口,提供接口規定的響應事件的方法。

再以程序響應按鈕事件爲例,JButton類對象button可以是一個事件的激發者。當用戶點擊界面中與button對應的按鈕時,button對象就會產生一個ActionEvent類型的事件。如果監視器對象是obj,對象obj的類是Obj,則類Obj必須實現AWT中的ActionListener接口,實現監視按鈕事件的actionPerformed方法。button對象必須用addActionListener方法註冊它的監視器obj。

程序運行時,當用戶點擊button對象對應的按鈕時,系統就將一個ActionEvent對象從事件激發對象傳遞到監視器。ActionEvent對象包含的信息包括事件發生在哪一個按鈕,以及有關該事件的其他信息。
在這裏引用一張我在網上看到的圖片,對組件和事件類型都有一個很好的概括

在這裏插入圖片描述
有了這些知識,以及我們前面學習過的數據結構與算法等知識,我們就能夠寫出一個簡單的計算器了

3.Ant

Ant是一種小巧的,能把java文件編譯成爲class文件的工具,要配合xml文件使用,一般把這個文件起名字叫build.xml,它描述的是編譯時候的規則,跟C++中的makefile類似
先簡單介紹一下ant的基本元素

(1)project元素
project 元素是 Ant 構件文件的根元素, Ant 構件文件至少應該包含一個 project 元素,在每個 project 元素下,可包含多個 target 元素

  • name 屬性
    用於指定 project 元素的名稱。
  • default 屬性
    用於指定 project 默認執行時所執行的 target 的名稱。
  • basedir 屬性
    用於指定基路徑的位置。該屬性沒有指定時,使用 Ant 的構件文件的附目錄作爲基準目錄。

(2)target 元素
target爲Ant的基本執行單元,它可以包含一個或多個具體的任務。多個target 可以存在相互依賴關係。它有如下屬性:

  • name 屬性
    指定 target 元素的名稱,這個屬性在一個 project 元素中是唯一的。
  • depends 屬性
    用於描述 target 之間的依賴關係,若與多個 target 存在依賴關係時,需要以“,”間隔。 Ant 會依照 depends 屬性中 target 出現的順序依次執行每個 target 。被依賴的 target 會先執行。
  • if 屬性
    用於驗證指定的屬性是否存在,若不存在,所在 target 將不會被執行。
  • unless 屬性
    用於驗證指定的屬性是否存在,若不存在,所在 target 將會被執行。
  • description 屬性
    該屬性是關於 target 功能的簡短描述和說明。
    接下來嘗試一下ant的使用,還是使用原來的helloworld程序,將其放置到src文件夾中
    build.xml文件如下
<?xml version="1.0"?>
<project name="ant" basedir=".">
	<target name="clean">
		<delete dir="build"/>
	</target>
	<target name="compile" depends="clean">
		<mkdir dir="build/classes"/>
		<javac srcdir="src" destdir="build/classes"/>
	</target>
	<target name="run">
		<java classname="Helloworld">
			<classpath>
				<pathelement path="build/classes"/>
			</classpath>
		</java>
	</target>
</project>

運行結果如下

在這裏插入圖片描述

4.Junit

Junit是我們用來編寫測試類的,通過這個工具以及測試代碼,我們可以實現測試
網上這方面的教程比較少,所以在學習這裏的時候遇到了一些困難
首先下載兩個東西
就是下圖中左上角和右下角那兩個
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳
在這裏插入圖片描述
下載地址
在這裏使用的還是HelloWorld,只不過在細節上有所不同
HelloWorld.java

import java.util.*;
public class HelloWorld {
  String str;
  public void hello() {
    str = "HelloWorld";
  }
  public String getStr() {
    return str;
  }
}

HelloWorldTest.java

import static org.junit.Assert.*;
import org.junit.Test;
public class HelloWorldTest {
  public HelloWorld helloworld = new HelloWorld();
  @Test
  public void testHello() {
    helloworld.hello();
    assertEquals("HelloWorld", helloworld.getStr());
  }
}

這裏一方面是使用getStr函數來返回HelloWorld中字符串的值,另一方面通過assertEquals來進行對比
測試結果如下
在這裏插入圖片描述
至此,vi,JAVA,ant以及Junit的學習就告一段落了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章