五月 12, 2011

電腦做什麼事
pydoing
程式語言教學誌 is about »

tag cloud

» Java 入門指南 - 解碼

解碼 (decoding) 需要用到與編碼相同的轉換表格 所謂的解碼也就是將編碼 (encoding) 過的小寫英文字母回覆成原來的英文小寫字母,由上圖可以看出,我們儲存表格所用的陣列 (array) ,恰巧依索引值 (index) 可推回原來的英文小寫字母,這是說,索引值 0 為 'q' ,所以是將原本的 'a' 變成 'q' ,因此,解碼就是依索引值重新加上 diff 即可。 實際上我們需要用到巢狀迴圈 (nested loop) ,也就是在迴圈 (loop) 中有其他的迴圈,對單一英文句子而言,我們需要一個迴圈判斷每個字元是否為英文小寫字母,若是英文小寫字母,我們就需要另一個迴圈找出對應的索引值。由這樣的概念設計的解碼方法 (method) toDecode() ,如下 public String toDecode(String s) { char[] cs =


» Java 入門指南 - 套件

Java 利用套件 (package) 來組織、管理 .class 檔案,所謂的套件其實就是類別 (class) 專屬的資料夾 現在我們把 Encrypt 類別放進 encryptor 資料夾中,也就是 encryptor 套件。假設 Encrypt.java 與 EncryptDemo.java 都在 _code 資料夾中 Encrypt.java 原始程式碼的第一行需要使用關鍵字 (keyword) package package encryptor; 完整的 Encrypt 類別程式碼請參考 Encrypt.java 。 藉此標明 Encrypt 在 encryptor 套件中,然後編譯使用 javac -d . Encrypt.java -d 是指令 javac 的旗標之一,表示依路徑編譯,後面需要接路徑名稱,我們用小數點 . 表示目前的目錄,也就是在 _


» Java 入門指南 - import

利用 import ,我們除了可以在程式中引入自訂套件 (package) 或 API 中的類別 (class) 使用 import 同樣要在程式檔案的開頭,例如 import encryptor.Encrypt; 這樣的寫法是只有引入 Encrypt 類別,當然,我們的套件 encryptor 中目前也只有 Encrypt 類別。假設我們在 encryptor 放了很多類別,現在想要把這些類別通通一次引入到程式檔案中,可利用萬用字元星號 * import encryptor.*; 是的,星號也是乘法運算子 (operator) ,但在這裡屬於萬用字元,編譯器 (compiler) 會看符號的所在位置,給符號相對應的功能,小數點 . 也一樣喔!如果小數點的前後是數字,代表浮點數的字面常數 (literal) ,小數點前後是識別字 (identifier) 的話,


» Java 入門指南 - 認識 Java API

API 的全名為 Application Programming Interface ,中文可稱之為應用程式介面,簡單來說 API 就是一個程式庫 (library) ,以 Java 而言,應該說是個類別庫,具有各方面應用的類別 (class) Java API 為隨編譯器下載的官方類別庫,裡頭常見的應用包括 圖形介面 網頁 輸入及輸出 資料結構 時間處理 資料庫 數學計算 網路 伺服器 有些是在 java.lang 的套件 (package) 中,因此使用不需要引入類別名稱,例如數學計算的 Math 類別或是在命令列印出訊息的 System.out 物件 (object) ,其他就需要引入類別名稱,或是使用全名。例如猜數字遊戲 public class GuessGame { public static void main(String[] args)


» Java 入門指南 - Encrypt.java

Encrypt.java 的程式原始碼如下 package encryptor; // 套件 public class Encrypt { // 屬性區 private char[] cArray = new char[26]; private int a; private int b; private int n; private char c; private int diff; // 建構子區 public Encrypt(int a, int b, int n, char c, int dif) { setA(a); setB(b); setN(n); setC(c); setDif(dif);


» Java 入門指南 - EncryptDemo.java

Encrypt.java 的程式原始碼如下 public class EncryptDemo { public static void main(String[] args) { System.out.println(); String s[] = {"There is no spoon.", "It is all around us.", "Free your mind.", "Follow the white rabbit.", "Choice. The problem is choice.", "


» Java 入門指南 - EncryptorGUI.java

EncryptorGUI.java 的程式原始碼如下 import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import encryptor.Encrypt; import java.io.*; public class EncryptorGUI { // 屬性區 private JFrame frame; private ArrayList<JComponent> GUIComponent; private String[] name; private int att[][]; private Encrypt e; private String


» Java 入門指南 - EncryptorGUIDemo.java

EncryptorGUI.java 的程式原始碼如下 public class EncryptorGUIDemo { public static void main(String[] args) { EncryptorGUI gui = new EncryptorGUI(); gui.run(); } } /* 《程式語言:教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:EncryptorGUIDemo.java 功能:示範 Java 程式 作者:張凱慶 時間:西元 2011 年 4 月 */ 範例程式碼 Encrypt.java EncryptDemo.java EncryptorGUI.java EncryptorGUIDemo.java


» Java 入門指南 - GUI 的基本概念

圖形介面的元件有很多種,如標籤 (label) 、按鈕 (button) 、選單 (menu) 、文字方塊 (textfield) 等等 Java API 中有兩個套件, AWT 與 Swing 可以製作圖形介面的程式。 AWT 為 Abstract Window Toolkit 的縮寫詞,這是 Java 1.1 版之前官方程式庫 (libiary) 提供的套件 (package) ,後來 1.2 版以後又採納 Swing 當第二個官方 GUI 的程式庫。 兩者的差別在於, AWT 採用作業系統 (operating system) 提供的視窗元件,所以利用 AWT 所設計的視窗圖形程式會跟作業系統原本的視窗風格一致, Swing 則是利用 Java 原生程式碼重新繪出視窗元件,因此利用 Swing 設計的程式在各平台間並無外觀上的差異。


» Java 入門指南 - 排版管理員

GUI 程式有數個部份需要顧及,分別是視窗用的小工具 (widget) 、排版 (layout) 與事件 (event) 小工具就是我們前面介紹的各種視窗元件,這些都是個別的物件 (object) 。實際上, Java 的 GUI 排版也是由物件來處理,有以下的排版管理員 BorderLayout區域式版面配置 FlowLayout流動式版面配置 CardLayout卡片式版面配置 GridLayout格子式版面配置 GridBagLayout帶狀式版面配置 BoxLayout盒子式版面配置 BorderLayout 把視窗分成五個區域,東、西、南、北、中,如果放入一個小工具,那個小工具就會填滿整個區域。 BorderLayout 也是 JFrame 預設的版面配置,因此無須額外設定就可以使用 BorderLayout 。 FlowLayout 是採流動式的編排,


» Java 入門指南 - GridBagLayout

GridBagLayout 的作法是把視窗分成一個一個的格子 (grid) ,然後把小工具 (widget) 放到選定的格子中,可依視窗元件的大小設定佔用的格子數 當視窗設定為 GridBagLayout 的排版方式後,視窗物件利用 add() 方法加入視窗元件時,必須額外提供 GridBagConstraints 類別 (class) 的參數 (parameter) ,因為實際的設定是由 GridBagConstraints 型態的物件 (object) 來完成的。 以下這些 GridBagConstraints 型態物件的屬性 (field) 是我們需要設定的 gridx行數 gridy列數 gridwidth行寬 gridheight列高 weightx行權值 weighty列權值 fill填滿方式 anchor定位點 直的為行 (column) ,橫的為列 (


» Java 入門指南 - ArrayList

Java 有許多不同的容器類別,像是陣列 (array) 可以儲存多個基本資料型態 (primitive data type) 的數值 (value) ,存取的出入口依據容器類別的識別字變數即可 這些容器類別是實作如 Set 、 List 或 Map 等介面 (interface) 的類別,例如我們會用到的 ArrayList 便是實作 List 介面的。想要建立 ArrayList 型態的參考變數 (reference variable) ,可利用 ArrayList 類別 (class) 的建構子 (constructor) 建構子說明 public ArrayList<E>()建立空的 ArrayList public ArrayList<E>(int initialCapacity)建立含有 initialCapacity 個元素的空 ArrayList public


» Java 入門指南 - 事件處理

我們要處理 GUI 中的事件 (event) ,首先得讓視窗元件傾聽所有使用者可能的動作,依據使用者的動作,例如在文字方塊 (textfield) 中輸入文字,我們設計程式相對應的動作,如可以在另一個標籤 (label) 中顯示提示訊息等 因此,我們得要在 EncryptorGUI 中實作 (implement) 傾聽者介面,然後實作出相對應的方法,最後視窗元件得登記它要傾聽事件。如上述,我們將 Input 標籤後的文字方塊設計成只要使用者輸入任何字元, hint... 標籤就隨之顯示相同的文字,程式如下 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.util.*; public class


» Java 入門指南 - inner 類別

Inner 類別 (inner class) 顧名思義,就是類別 (class) 中的類別,也就是巢狀類別 我們將 EncryptorGUI 改成用 inner 類別來實作傾聽者介面 (interface) ,如下 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.util.*; public class EncryptorGUI { private JFrame frame; private String[] name; private int att[][]; private ArrayList<JComponent> GUIComponent; private String


» Java 入門指南 - 整合 Encrypt

EncryptorGUI 是的圖形介面使用用者軟體,編碼、解碼的計算核心是由 Encrypt 來完成 EncryptorGUI 類別完整的範例程式碼,請參考EncryptorGUI.java 簡單說,我們在 EncryptorGUI 中建立一個 Encrypt 型態的屬性 (field) 即可 private Encrypt e; 因此必須先 import encryptor 套件 (package) import encryptor.Encrypt; 我們在建構子 (constructor) 中,先將 e 設定為 null e = null; // null 表示指向虛無的參考 null 是 Java 中特別的字面常數 (literal) ,表示什麼都沒有的參考 (reference) ,這裡是用 null 當 e 的初值。若一個參考變數 (reference


» Java 入門指南 - 存檔與例外處理

我們要存檔,儲存的到底是什麼呢?物件 (object) 嗎?屬性 (field) 嗎?還有方法 (method) 呢? Encrypt 類別完整的範例程式碼,請參考Encrypt.java EncryptorGUI 類別完整的範例程式碼,請參考EncryptorGUI.java Java 提供序列化的方式儲存物件,凡是可以被儲存的物件都得實作 java.io 的 Serializable 介面。因此,我們要使 Encrypt 型態的物件可以被儲存,就得在 Encrypt.java 中,先 import java.io import java.io.*; 然後在 Encrypt 類別 implements Serializable public class Encrypt implements Serializable { 這樣 Encrypt 就可以被序列化了,


» Java 入門指南 - 完成版的 EncryptorGUI

EncryptDemo 與 EncryptorGUIDemo 都是階段性功能的類別 (class) , EncryptDemo 在命令列對 Encrypt 進行測試, EncryptorGUIDemo 則是作為執行 EncryptorGUI 之用 Encrypt 類別完整的範例程式碼,請參考Encrypt.java EncryptorGUI 類別完整的範例程式碼,請參考EncryptorGUI.java 我們繼續完成 EncryptorGUI 剩下該有的功能.... 先來想想,如果使用者在 Output 標籤 (label) 後面的文字方塊 (textfield) 輸入文字,這會是怎麼樣的光景呢? 或許有人會認為使用者不應該這麼做,因為那是我們放編碼、解碼輸出結果的地方。但是使用者不應該這麼做,並不代表使用者不會這麼做,有時候會不小心唄!因此,如果有使用者在 Output


» Java 入門指南 - 下一步

下一步? 我們順者範例程式,很快的帶領讀者認識 Java 開發軟體的各個面向,有些細節,我們能只是稍微提了一點,並沒有詳細解釋,例如,繼承 (inheritance) // 父類別 class Superclass { public int superfield; public Superclass() { System.out.println("Superclass"); } public void supermethod() { System.out.println("supermethod"); } } // 子類別 class Subclass extends Superclass { public int subfield; public


» Java 入門指南 - 目錄

1990 年代時任職 Sun Microsystems 的 James Gosling 等人著手開發 Java ,最初目的是為了要在一般家電上應用的程式語言 (programming language) ,後來伴隨網路的發展而迅速成長,時至今日,已成為相當多人喜好的程式語言。 依據網路軟體市調網站 TIOBE 每月的報告, Java 長期為受歡迎第一指名的語言,下圖為 2011 年 3 月的 TIOBE 網站報告截圖 由於 Java 跨平台的特性,因此應用相當廣,無論個人電腦或手機,網頁應用程式、網路伺服器、 GUI 軟體到遊戲幾乎都可見到 Java 程式的蹤影,詳細可見 Java in Action 的舉列。 我們打算在此份教材裡,一步一步帶領讀者開發編密碼的應用軟體,依序介紹 Java 的各個面向..... 讀者調查 基礎篇 認識 Java 語言


» Java 入門指南 - Encrypt 類別

利用 Java 寫程式 (program) ,著重在設計類別 (class) ,然後規劃物件 (object) 的使用,以及物件與物件間的互動,同時要注意,一個物件專心做好一件事情就好,類別的設計不應該太過複雜 我們打算開始發展一個 Encrypt 類別,它的主要功能是建立一個英文小寫字母的對換表格,藉由這個表格,我們可以對英文句子中的小寫英文字母進行對換,例如 "There is no spoon." 可能變成以下任一個 Tfqdq ki jo itooj. Tcnan hf gl fqllg. Tczmz dn ij nkjji. Tgfsf pb ir barri. Tdcpc my fo yxoof. 其中, EncryptDemo 類別為我們在命令列 (command line) 對 Encrypt 進行測試的類別,然後,最重要的是我們還要發展使用者介面 (user


A Feebee powered Planet
A Django site.