SlideShare a Scribd company logo
1 of 96
數學系資訊組
 物件導向程式設計
    課程講義




教材編撰:數學系講師冷輝世
九十八學年度第二版
「物件導向程式設計」課程講義
            九十八學年度二版



目錄




第1頁
「物件導向程式設計」課程講義
                                              九十八學年度二版

軟體需求

1.   Java SE6 JDK, Java Doc
     http://java.sun.com
2.   JCreator
     http://www.jcreator.com


Java SE6 JDK 與 Java Doc 請選擇最左邊的




JCreator 有三種版本, Pro 版有自動補完功能 (Auto Paded) ,但是屬 Shareware


, LE 版與 Classics 版則是免費使用。




                               第2頁
「物件導向程式設計」課程講義
                                                          九十八學年度二版

設定系統環境變數

1.   新增

     JAVA_HOME= C:Program FilesJavajdk1.6.0_18

2.   修改

     PATH=%PATH%; C:Program FilesJavajdk1.6.0_18bin


我的電腦(按滑鼠右鍵)→進階→環境變數→系統變數




一定要先設定完系統環境變數以後再開啟 JCreator ,否則 JCreator 會抓不到

Java 的相關設定,造成無法編譯與執行的狀況。




                                   第3頁
「物件導向程式設計」課程講義
                                                            九十八學年度二版

Java 教學文件

1.   Java Tutorial
     http://java.sun.com/docs/books/tutorial/
2.   The Swing Tutorial
     http://java.sun.com/docs/books/tutorial/uiswing/
3.   Example Depot
     http://www.exampledepot.com/
4.   Java Tutorial
     http://www.java2s.com/Tutorial/Java/CatalogJava.htm


本課程預計學生已修習過程式設計,已有基本的程式設計概念,例如程式基本


架構、變數、流程控制等。



Java Doc 一定要裝!雖然檔案大了一點,可是可以節省不少查書的時間。建議安


裝在 C:Program FilesJavajdk1.6.0_12Docs 目錄下。




                                      第4頁
「物件導向程式設計」課程講義
                                                     九十八學年度二版

Applet, Application 與 Swing Application

     Applet 、 Application 與 Swing Application 的差異:


1.   Applet 僅能在網頁中執行,需要 HTML 加以呼叫,所以有兩個檔案。


2.   Application 以「命令提示字元」模式執行,只有簡單的文字輸出入。


3.   Swing Application 與視窗程式相同(事件驅動)。


[HTML]HelloApplet.htm




[Applet]HelloApplet.java




[Application]Hello.java




                                 第5頁
「物件導向程式設計」課程講義
                                                九十八學年度二版

[Swing Applicaton]HelloSwing.java




                                    第6頁
「物件導向程式設計」課程講義
                                                                       九十八學年度二版

Java 程式的編譯與執行

     編譯與執行過程除了使用 JCreator 之外,尚需熟練「命令提示字元」模式。




              圖片來源:http://csjava.occ.cccd.edu/java-setup/D.htm



「命令提示字元」模式




「命令提示字元」模式下的操作

1.   javac.exe
     http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javac.html
2.   java.exe
     http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html


                                       第7頁
「物件導向程式設計」課程講義
                                                      九十八學年度二版

基本程式架構說明

 說明類件(Class)、物件(Object)、建構元(Constructor)等觀念。




       圖片來源:http://www.cs.princeton.edu/introcs/32class/




                            第8頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版

基本資料型態與運算子

 基本資料型態




    資料來源:http://www.artima.com/insidejvm/ed2/jvmP.html



 基本型態運算子與 C/C++ 幾乎都相同(除了字串以外)。




                          第9頁
「物件導向程式設計」課程講義
                                                九十八學年度二版




資料來源:http://www.falkhausen.de/de/table/operator.gif




                      第 10 頁
「物件導向程式設計」課程講義
                                                   九十八學年度二版

Application 模式下的輸出與輸入模式

     Application 模式下的輸出使用 System.out.println() 。


[Application]Hello.java




     Application 模式下的輸入模式有三種:


1.   引數列輸入

2.   鍵盤輸入,使用 BufferedReader 類別物件

3.   鍵盤輸入,使用 Scanner 類別物件


[Application]KeyinDemo1.java




[Application]KeyinDemo2.java




                               第 11 頁
「物件導向程式設計」課程講義
                                              九十八學年度二版




[Application]KeyinDemo3.java




                               第 12 頁
「物件導向程式設計」課程講義
                                                    九十八學年度二版

Swing 模式下的輸出與輸入

    JOptionPane.showMessageDialog() 對話盒輸出,JTextField 元件輸入。


[Swing Application]DialogDemo.java




[Swing Application]SwingIODemo.java




                                     第 13 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 14 頁
「物件導向程式設計」課程講義
                                                 九十八學年度二版

陣列

    Java 陣列的宣告與 C/C++ 不太一樣,注意“[”與“]”的位置;另外,以物件的


方式宣告,包括 Declaration 與 Creation 兩階段,可以分開也可以合併。


[Application]ArrayDemo.java




[Application]ObjArrayDemo1.java




[Application]ObjArrayDemo2.java




                                  第 15 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 16 頁
「物件導向程式設計」課程講義
                                     九十八學年度二版

數字類別與字串類別

     使用數字類別的理由:

1.   可以作為物件的參數。

2.   可以使用數字類別中內建常數。

3.   可以與字串類別做轉換或直接轉換進位制。



分別以 Integer 類別為例,說明數字類別與字串類別。



以 Math 類別為例,說明靜態類別。




                      第 17 頁
「物件導向程式設計」課程講義
                                                             九十八學年度二版

字串類別的宣告、字串與數值的轉換

    字串分為 String, StringBuffer, StringBuilder 三種類別。其中 String 類別為

immutable , StringBuffer 為 mutable, thread-safe , StringBuilder 則為 mutable 用


來取代在 single-thread 情況下的 StringBuffer 。注意這三種類別字串處理的函數


名稱不同。



說明 String, StringBuffered 類別的差異,並舉例。




                                  第 18 頁
「物件導向程式設計」課程講義
                                               九十八學年度二版

如何使用亂數

     亂數有兩種產生的方式:

1.   呼叫 Math.random() 靜態類別函數

2.   宣告 java.util.Random 類別物件


[Application]RandomDemo1.java




[Application]RandomDemo2.java




                                第 19 頁
「物件導向程式設計」課程講義
                                                            九十八學年度二版

MVC 架構

一般的 MVC 架構




     圖片來源:http://java.sun.com/developer/technicalArticles/javase/mvc/


Java MVC




                                 第 20 頁
「物件導向程式設計」課程講義
                                          九十八學年度二版


圖片來源:http://pwosboy.javaeye.com/blog/118768




                  第 21 頁
「物件導向程式設計」課程講義
                                                                  九十八學年度二版

流程控制與事件驅動

    與 C/C++ 相同,有 if, if …else, for , while, do…while, switch…case 等。



    Swing 模式下的事件驅動是所謂的 Event-Driven ,必須熟悉「元件-事件-


介面」的處理程序。 JButton 元件為例,按下按鍵產生 ActionEvent ,必須利用
         以

ActionListener 介面來處理,必須實作 ActionListener 介面中的所有 method (


ActionListener 介面中只有一個 method 即 actionPerformed() )。


Swing Events
http://java.sun.com/developer/onlineTraining/GUI/Swing2/shortcourse.html




                                     第 22 頁
「物件導向程式設計」課程講義
                                                九十八學年度二版

Swing 模式下 JButton 元件的介紹


[Swing Application]Swing3.java




                                 第 23 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 24 頁
「物件導向程式設計」課程講義
                                                         九十八學年度二版

有圖片的 JButton 在 Java Web Start 的宣告方式

原本的 JButton 宣告


JButton b1=new JButton("剪刀",new ImageIcon("./scissor.gif"));



Java Web Start 下的宣告方式


ClassLoader cl=this.getClass().getClassLoader();
Icon scissors1=new ImageIcon(cl.getResource("images/scissors1.gif"));
JButton b1=new JButton("剪刀",scissors1);




                                第 25 頁
「物件導向程式設計」課程講義
                                              九十八學年度二版

Abstract Class 的介紹

    Java 定義有 Abstract Class ,其目的在於利用此 Abstract Class 衍生子類別,


所以不能利用 Abstract Class 建立物件,只能透過其衍生子類別建立物件。

Abstract Class 與一般 Class 宣告類似,有資料成員、成員函數,但多了定義


abstract method , abstract method 是空的,沒有定義函數的內容,而且只能宣告


為 public 或 protected 。


[Application]ExAbstract.java




                               第 26 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 27 頁
「物件導向程式設計」課程講義
                                               九十八學年度二版

Interface 的介紹

     Interface 是 Java 提供的另一項重要功能,與 Abstract Class 非常類似,但有


兩點不同:

1.   所有的資料都要初始化。

2.   所有的 method 都必須宣告為 abstract ,也就是說不能有一般的 method 。


[Application]ExInterface.java




                                第 28 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版

事件處理的多種寫法

     每種 EventListener 都是一種 Interface ,裡面只有定義這個 EventListener 所


提供的方法,所以當要處理事件(Event)時,必須實作出 Interface 所定義的方法,


寫法有三種:。

1.   利用 implements 關鍵字將所有抽象方法實作出來。

2.   利用 Adapter 類別。

3.   利用 Inner Class 的匿名類別方法(可以解決多重繼承的問題)。


[Swing Application]ExEvent1.java




                                   第 29 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 30 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版

[Swing Application]ExEvent2.java




[Swing Application]ExEvent3.java




                                   第 31 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 32 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版

集中事件處理

    另外,當有許多不同事件要處理時,可以考慮集中事件處理。

[Swing Application]ExEvent4.java




                                   第 33 頁
「物件導向程式設計」課程講義
                                                   九十八學年度二版

Swing 模式下 JLabel 元件介紹

    JLabel 用來顯示一段文字或圖形或文字加上圖形。以下舉例說明不同形式的

JLabel 。


[Swing Application]JLabelExample.java




                                    第 34 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 35 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版

利用 JLabel 顯示文字作為提示文字


[Swing Application]ExJLabel.java




                                   第 36 頁
「物件導向程式設計」課程講義
                                                     九十八學年度二版

Swing 模式下 JTextField 和 JPasswordField 元件的介紹

    JTextField 輸入單行文字, JPasswordField 輸入具有遮罩的單行文字。


[Swing Application]FormExample.java




                                      第 37 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 38 頁
「物件導向程式設計」課程講義
                                                   九十八學年度二版

Swing 模式下的 JCheckBox 和 JRadioButton 元件的介紹

    JCheckBox 建立核取方塊, JRadioButton 建立收音機按鈕,若要滿足單選


則必須配合 ButtonGroup 使用。


[Swing Application]ExJRadioButton.java




                                    第 39 頁
「物件導向程式設計」課程講義
                                                     九十八學年度二版




[Swing Application]ExJCheckBox.java




                                      第 40 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 41 頁
「物件導向程式設計」課程講義
                                                      九十八學年度二版

檔案處理

     Java 檔案的處理架構如下,針對文字檔的處理有兩種方式:


1.   利用 FileReader 與 FileWriter 讀取與寫入文字檔

2.   利用 BufferedReader 與 BufferedWriter 讀取與寫入文字檔




[Swing Application]SourceReader.java




                                       第 42 頁
「物件導向程式設計」課程講義
                                                九十八學年度二版




Swing 模式下 JTextArea 和 JFileChooser 元件的介紹

    配 合 Java 檔 案 處 理 , 利用 FileChooser 開 啟檔 案 並 將讀 取 的 內容 放 到

JTextArea 元件中,可供修改後再儲存。


※作業:完成儲存的功能。


[Swing Application]FileRW.java




                                 第 43 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 44 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 45 頁
「物件導向程式設計」課程講義
                                                 九十八學年度二版

整合範例-猜數字遊戲

    利用猜數字遊戲將前面介紹的內容整合,觀察下列原始碼的 MVC 架構。


作業:加入詢問是否再玩一次的功能。




[Swing Application]GuessAB.java




                                  第 46 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 47 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 48 頁
「物件導向程式設計」課程講義
                                                            九十八學年度二版

Java 與 MySQL 的連結

     Java 與 MySQL 連結的步驟如下:


1.   下載 mysql-java-connector-5.1.12.zip ,解壓縮將 mysql-java-

     connector-5.1.12.jar 放至 JRE 下的 libext 目錄下。

     http://dev.mysql.com/downloads/connector/j/

2.   安裝 AppServ 包括 MySQL 與 phpMyAdmin 。

     http://www.appservnetwork.com

3.   修改 C:AppServwwwphpMyAdminconfig.inc.php


     第 31 行為


 $cfg['PmaAbsoluteUri'] = 'http://127.0.0.1/phpMyAdmin/';



4.   資料庫(Database)、資料表(Table)、欄位(Field)、記錄(Record)之間的關係。




                                      第 49 頁
「物件導向程式設計」課程講義
                                         九十八學年度二版

MySQL 資料庫的建立

   使用 phpMyAdmin 建立 math 資料庫,並建立 student 資料表,其中包括

id, name, score 三個欄位。




                        資料庫 math




                         第 50 頁
「物件導向程式設計」課程講義
                                 九十八學年度二版

使用 phpMyAdmin 設定資料庫的權限的問題

  建立一個帳號 www ,密碼為 123 的使用者帳戶,對 math 資料庫擁有

SELECT 權限。




                  第 51 頁
「物件導向程式設計」課程講義
                                                                  九十八學年度二版

SQL(Structured Query Language)介紹

     SQL 命令分為 DDL 與 DML 兩類:


1.   DDL(Data Definition Language) 包 括 CREATE TABLE, CREATE VIEW,


     DROP TABLE, DROP VIEW, GRANT, REVOKE 。


2.   DML DML(Data Manipulation Language) 包 括 SELECT, INSERT, UPDATE,


     DELETE 。

3.   SQL Quick Reference From W3Schools
     http://www.w3schools.com/sql/sql_quickref.asp?output=print




                                     第 52 頁
「物件導向程式設計」課程講義
                                           九十八學年度二版

JDBC 範例

    建立一個基本的 JDBC 範例,目的只是確定之前的安裝連結成功。


[Application]JDBCEx1.java




                            第 53 頁
「物件導向程式設計」課程講義
                                                                     九十八學年度二版

Package 與 Jar

     Package 是指將 class 封裝,則其它程式可使用 import 引入。 Jar 則是將


class 檔壓縮。 Package 時要注意路徑的設定。 Jar 的命令操作可參考下列文件:

1.   Java Archive (JAR) Files
     http://java.sun.com/javase/6/docs/technotes/guides/jar/index.html
2.   Lesson: Packaging Programs in JAR Files
     http://java.sun.com/docs/books/tutorial/deployment/jar/




                                       第 54 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 55 頁
「物件導向程式設計」課程講義
                                                        九十八學年度二版

Swing 模式中的 Model

     Swing 元件中的 Model 可分為三類


1.   儲存元件內將被用來操作的資料,常用來顯示不同的資料顯示方式。例如:

     ListModel, ComboBoxModel, TableModel, Document 。


2.   儲存元件操作模式的資料。例如: ListSelectionModel, TableColumnModel 。

3.   儲存元件本身性質的資料。例如: BoundedRangeModel 。




                                 第 56 頁
「物件導向程式設計」課程講義
                                                    九十八學年度二版

Swing 模式中的 JList 元件介紹

    JList 元件常用建立選取清單。注意 JList 與 JComboBox 不同 JList 是清單,


JComboBox 是下拉式選單。 AbstractListModel 要實作 getElementAt(), getSize()


, DefaultListModel 則是所有方法都有預設值。ListCellRenderer 主要用於建立有

Icon 的 JList ,通常是建立某類別繼承 JLabel 並實作 ListCellRenderer 介面。


[Swing Application]JListEx1.java




                                   第 57 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 58 頁
「物件導向程式設計」課程講義
                                                        九十八學年度二版

Swing 模式下的 JComboBox 元件

    JComboBox 用來建立下拉式選單。 DefaultComboBoxModel 所有方法都有


預 設 值 。 由 於 ComBoxModel 是 繼 承 自 ListModel , 所 以 若 要 實 作

ComboBoxModel ,除了要實作 ComboBoxModel 的兩個方法 getSelectedItem(),


setSelectedItem() 外,還要實做 ListModel 所定義的四個方 法 getElementAt(),


getSize(), addListDataListener(), removeListDataListener() ,共六個方法。所以如果


繼承 AbstractListModel 再實作 ComboBoxModel 則只要實作四個方法。


[Swing Application]JComboEx1.java




                                    第 59 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 60 頁
「物件導向程式設計」課程講義
                                                      九十八學年度二版

Google Chart Tools

     Google Chart 是一組 Google 提供的 API ,我們可以很容易的利用它產生一


般的統計圖表。


     參考文件:

1.   Google Chart Tools
     http://code.google.com/apis/charttools/




                                       第 61 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版

Swing 模式下的 JTabbedPane 元件

    TabbedPane 類似放置文件的檔案夾,每一份文件都有標籤不同的標籤可顯


示不同的頁面。


[Swing Application]JTabbedPaneEx1.java




                                   第 62 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 63 頁
「物件導向程式設計」課程講義
                                                   九十八學年度二版

Swing 模式下 JTable 元件的介紹

    JTable 用來建立表格文字,建立方式可以使用 Array 或是 Vector ,使用


Vector 比較有彈性。區別 AbstractTableModel 與 DefaultTableModel 的不同。


[Swing Application]JTableEx1.java




                                    第 64 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 65 頁
「物件導向程式設計」課程講義
                                                   九十八學年度二版

[Swing Application]JTableEx2.java




                                    第 66 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 67 頁
「物件導向程式設計」課程講義
                                                   九十八學年度二版

[Swing Application]JTableEx3.java




                                    第 68 頁
「物件導向程式設計」課程講義
                                                                九十八學年度二版

JTable 範例

    以下是有關 JTable 的精彩範例:

1. JTable Example 1
http://www.crionics.com/products/opensource/faq/swing_ex/JTableExamples1.html
2. JTable Example 2
http://www.crionics.com/products/opensource/faq/swing_ex/JTableExamples2.html




                                    第 69 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 70 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 71 頁
「物件導向程式設計」課程講義
                                                           九十八學年度二版

Java Web Start 的使用

     執行以下九個步驟:

1.   設定 Web Server ,開啟 C:AppServApache2.2confmime.types,加入:


 # MIME type                     Extensions
 application/x-java-jnlp-file    jnlp



     Apach Restart 。


2.   編譯 Test1.java 檔,產生 Test.class 檔。

     Test1.java→(Compile)→Test1.class(or Test1$.class)


[Swing Application] Test1.java




3.   建立 manifest.txt (第一行的 Test1 前面空一格,第二行空行一定要有)


manifest.txt


                                        第 72 頁
「物件導向程式設計」課程講義
                                                                九十八學年度二版



 Main-Class: Test1




4.   建立 Test.jar (開啟 cmd 視窗,建立 jar 檔)

     jar cvfm Test1.jar manifest.txt *.class

5.   建立簽証檔 myKeystore

     keytool -genkey -keystore myKeystore -alias myself

6.   對 Test.jar 檔加上簽証

     jarsigner -keystore myKeystore Test1.jar myself

7.   建立 Test1.jnlp


Test1.jnlp




8.   建立 Test1.htm 連結 Test1.jnlp


Test1.htm

                                         第 73 頁
「物件導向程式設計」課程講義
                                                      九十八學年度二版




9.   利用瀏覽器開啟 URL , http://127.0.0.1/jws/Test1.htm 。




                               第 74 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版

JDBC 範例

     JDBC 範例包括建立資料庫與 JWSTest.java 兩部份。請先將 mysql-connector-

java-5.1.12-bin.jar 複製至 C:AppServwwwjws 目錄下。



1.   建立 ncue 資料庫,內含 math 資料表,內含 id, name, score 三欄位,並建立


     有 select 上述資料庫權限的帳號與密碼 www, 123 。




2.   確定 JWSTest.java 程式編譯無誤。




                               第 75 頁
「物件導向程式設計」課程講義
                                                 九十八學年度二版

[Swing Application]JWSTest.java




                                  第 76 頁
「物件導向程式設計」課程講義
                                                                   九十八學年度二版




3.   建立 JWSTest.jar

     jar cvfm JWSTest.jar manifest.txt JWSTest*.class

4.   對 JWSTest.jar 檔加上簽証(如果已有簽証,這裡就不必再建立簽証了!)

     jarsigner -keystore myKeystore JWSTest.jar myself

5.   對 mysql-connector-java-5.1.6-bin.jar 作 jarsinger 簽証。

     jarsigner -keystore myKeystore mysql-connector-java-5.1.6-bin.jar myself

6.   建立 JWSTest.jnlp

                                      第 77 頁
「物件導向程式設計」課程講義
               九十八學年度二版




第 78 頁
「物件導向程式設計」課程講義
                                                       九十八學年度二版

JWSTest.jnlp




7.   建立 JWSTest.htm


JWSTest.htm




8.   利用瀏覽器開啟 URL , http://127.0.0.1/jws/JWTest.htm 。



     注意!雖然 jar 檔在檔案總管中直接按兩下即可開啟,但是這只代表在本地


端的執行,與 Java Web Start 遠端佈署的意義是不同的!所以一定要以 URL 的


方式開啟才算成功!



                        ~基礎課程結束~




                               第 79 頁
「物件導向程式設計」課程講義
                                                     九十八學年度二版

自我評量測驗

     針對以下問題,請每位同學自行查詢筆記作答:

1.   Abstract Class 與一般的 Class 有什麼不同?


2.   說明 Interface 的作用?

3.   Java 程式的基本架構包括那些?


4.   環境變數要設定那些?

5.   JCreator 開啟 Java File 與 Java Project 有何不同, Workspace 又是什麼?


6.   Java Swing 程式的基本架構包括那些?


7.   Java 如何與 MySQL 資料庫連結?


8.   Java 程式中執行 SQL 指令的函數有什麼要注意的?


9.   各舉一例說明 SQL 語法的 SELECT 、 INSERT 、 DELETE 、 UPDATE 。

10. 如何在 Java 中取亂數?


11. try…catch 是用在什麼場合?


12. throw 與 try…catch 有什麼不同?


13. 如何實作一個 Interface?


14. 為什麼要利用類別去繼承介面?有什麼作用?


15. String, StringBuffer 與 StringBuilder 這三個類別有什麼不同?


16. Vector 與 Array 有什麼不同?


17. 與例說明 Java 的 MVC 架構(UI-Delegate)。

                              第 80 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版


18. 如果同時有兩個物件會觸發同一種事件,要如何分辨是那一個物件觸發的?


19. 管理 MySQL 資料庫時,會對不同的資料庫設定不同的帳號與管理權限,


   為什麼?

20. FlowLayout, GridLayout, BorderLayout 有什麼不同?


21. Java Web Start 的步驟有那些?




                              第 81 頁
「物件導向程式設計」課程講義
                        九十八學年度二版

CGI 原理




         第 82 頁
「物件導向程式設計」課程講義
                                   九十八學年度二版

CGI 中的 GET 與 POST




                    第 83 頁
「物件導向程式設計」課程講義
                                                      九十八學年度二版

URL 編碼與解碼 (RFC2396)

  CGI 在傳送資料時是以 URL 格式編碼,會將空白轉換為“ +”, Unsafe 字元


則轉換為“%”後面接著以十六進位 ASCII 來表示。Safe 字元指的七位元的 ASCII


文數字與九個特號符號 (-_.!~*'()) , Unsafe 字元指由其它七位元 ASCII 。




      圖片來源:http://www.albionresearch.com/misc/urlencode.php




                             第 84 頁
「物件導向程式設計」課程講義
                                                    九十八學年度二版

觀察 CGI 過程

    利用 Http Analyzer 或 HTTPDebuggerPro 觀察 CGI 的 GET 與 POST 。




[Application]FindBook1.java(GET)




                                   第 85 頁
「物件導向程式設計」課程講義
                                                            九十八學年度二版


     此程式的結果以 XML 格式回傳。那麼我們要如何存取 XML 格式的資料?

1.   利用 javax.xml Package。

2.   利用 org.w3c.dom Package。

3.   利用 org.xml.sax Package。


     參考網址 Processing XML with Java ,

http://www.cafeconleche.org/books/xmljava/chapters/


[Swing Application]FindBook2.java(POST )




                                     第 86 頁
「物件導向程式設計」課程講義
                                                  九十八學年度二版




此程式的結果是 HTML 格式,如何去 Parse 內容?

1.   利用 java.lang.String 類別。

2.   利用 java.util.regex Package。

3.   利用 javax.swing.text.html Package。




                                   第 87 頁
「物件導向程式設計」課程講義
                                                                   九十八學年度二版

NanoXML 函數庫介紹

    NanoXML 是一個免費的小型 Java XML Parser ,針對 XML 的處理提供了


簡單、快速的存取方法。將下列檔案放在 C:Program FilesJavajre1.6.0_18libext


目錄下,如果使用 JCreator ,必須將 nanoxml-2.3.3.jar 加入 JDK Profile 。



下載網址:

http://devkix.com/nanoxml-2.2.3.jar, http://devkix.com/nanoxml-javadoc.tar.gz


[Swing Application]NewFindBook1.java




                                      第 88 頁
「物件導向程式設計」課程講義
                                                                      九十八學年度二版

Regular Expression (Package java.util.regex) 介紹

     在 java.util.regex 這 個 Package 中 主 要 有 兩 個 Class , 包 括 Matcher 與

Pattern ,其中 Pattern 使用的就是 Regular Expresion , Regualr Expression 是字


串的一種特殊處理,是由 Perl 語言最先發明的。



參考文件:

1.   http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Matcher.html
2.   http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html


參考範例:

1.   http://www.java2s.com/Code/Java/Regular-Expressions/Matcher.htm
2.   http://www.java2s.com/Code/Java/Regular-Expressions/Pattern.htm




                                       第 89 頁
「物件導向程式設計」課程講義
                                                九十八學年度二版

以學校圖書館館藏查詢為例




1.   檢視原始碼,找出關鍵字串




2.   找出 Regular Expression 的規則


[Application]RegEx1.java




                                 第 90 頁
「物件導向程式設計」課程講義
                       九十八學年度二版




即可分解出




        第 91 頁
「物件導向程式設計」課程講義
                                                        九十八學年度二版

以 ISBN 全國新書資訊網為例




          資料來源:http://lib.ncl.edu.tw/isbn/4page-3.htm




1.   檢視原始碼,找出關鍵字串




                            第 92 頁
「物件導向程式設計」課程講義
                                                       九十八學年度二版


2.   利用 HTML Parser 擷取所需的部份,這裡我們使用 Jericho HTML Parser 幫


     助我們處理 HTML 文件 。下載 jericho-html-2.6.zip 並解壓縮至 D: ,將 au


     次目錄複製至 D: 。



下載網址:

http://jericho.htmlparser.net/docs/index.html


D:NewFindBook2.java




                                        第 93 頁
「物件導向程式設計」課程講義
                         九十八學年度二版




執行結果:




        ~進階課程結束~




          第 94 頁

More Related Content

Viewers also liked

The Link Between Humor & Higher Scores With Shmoop
The Link Between Humor & Higher Scores With ShmoopThe Link Between Humor & Higher Scores With Shmoop
The Link Between Humor & Higher Scores With ShmoopShmoop
 
The Great Tundra Project Tan
The Great Tundra Project TanThe Great Tundra Project Tan
The Great Tundra Project TanMichelle McGinnis
 
Mediatix. Capacidades. Scope of Work
Mediatix. Capacidades. Scope of WorkMediatix. Capacidades. Scope of Work
Mediatix. Capacidades. Scope of WorkJuan Jose Vicente
 
Interim report Axfood Q3 2010
Interim report Axfood Q3 2010Interim report Axfood Q3 2010
Interim report Axfood Q3 2010Axfood
 
Ley organica del_trabajo_los_trabajadores_y_las_trabajadoras
Ley organica del_trabajo_los_trabajadores_y_las_trabajadorasLey organica del_trabajo_los_trabajadores_y_las_trabajadoras
Ley organica del_trabajo_los_trabajadores_y_las_trabajadorasJosé Morales
 
DigimarcDiscover_CaseStudy_CookingLight_061714_FNL
DigimarcDiscover_CaseStudy_CookingLight_061714_FNLDigimarcDiscover_CaseStudy_CookingLight_061714_FNL
DigimarcDiscover_CaseStudy_CookingLight_061714_FNLdkinpdx
 
#Mrec September 24 2013 Keynote
#Mrec September 24 2013 Keynote #Mrec September 24 2013 Keynote
#Mrec September 24 2013 Keynote Rob Humphrey
 
URA Task Force - PDNA
URA Task Force - PDNAURA Task Force - PDNA
URA Task Force - PDNAmazik
 
Evaluaciòn del status sistèmico en implantología oral
Evaluaciòn del status sistèmico en implantología oralEvaluaciòn del status sistèmico en implantología oral
Evaluaciòn del status sistèmico en implantología oralRicardo Benza
 
Digital publishing and the user experience (no chart)
Digital publishing and the user experience (no chart)Digital publishing and the user experience (no chart)
Digital publishing and the user experience (no chart)Louise Bloom
 
La mission Unione Italiana Vini: una strategia.
La mission Unione Italiana Vini: una strategia.La mission Unione Italiana Vini: una strategia.
La mission Unione Italiana Vini: una strategia.Daniele Sbalchiero
 
Barrick SME (Mar 2011)
Barrick SME (Mar  2011)Barrick SME (Mar  2011)
Barrick SME (Mar 2011)tkrawchyk
 
Creating content sales people will share
Creating content sales people will shareCreating content sales people will share
Creating content sales people will shareRob Humphrey
 
Modern recruiter tips
Modern recruiter tipsModern recruiter tips
Modern recruiter tipsRob Humphrey
 
Using A Video Off The Internet
Using A Video Off The InternetUsing A Video Off The Internet
Using A Video Off The Internetvera.weber
 
Social Bookmarking Introduction To Diigo
Social Bookmarking Introduction To DiigoSocial Bookmarking Introduction To Diigo
Social Bookmarking Introduction To Diigobrosenthal
 

Viewers also liked (20)

The Link Between Humor & Higher Scores With Shmoop
The Link Between Humor & Higher Scores With ShmoopThe Link Between Humor & Higher Scores With Shmoop
The Link Between Humor & Higher Scores With Shmoop
 
The Great Tundra Project Tan
The Great Tundra Project TanThe Great Tundra Project Tan
The Great Tundra Project Tan
 
Mediatix. Capacidades. Scope of Work
Mediatix. Capacidades. Scope of WorkMediatix. Capacidades. Scope of Work
Mediatix. Capacidades. Scope of Work
 
Interim report Axfood Q3 2010
Interim report Axfood Q3 2010Interim report Axfood Q3 2010
Interim report Axfood Q3 2010
 
Ley organica del_trabajo_los_trabajadores_y_las_trabajadoras
Ley organica del_trabajo_los_trabajadores_y_las_trabajadorasLey organica del_trabajo_los_trabajadores_y_las_trabajadoras
Ley organica del_trabajo_los_trabajadores_y_las_trabajadoras
 
DigimarcDiscover_CaseStudy_CookingLight_061714_FNL
DigimarcDiscover_CaseStudy_CookingLight_061714_FNLDigimarcDiscover_CaseStudy_CookingLight_061714_FNL
DigimarcDiscover_CaseStudy_CookingLight_061714_FNL
 
#Mrec September 24 2013 Keynote
#Mrec September 24 2013 Keynote #Mrec September 24 2013 Keynote
#Mrec September 24 2013 Keynote
 
URA Task Force - PDNA
URA Task Force - PDNAURA Task Force - PDNA
URA Task Force - PDNA
 
Evaluaciòn del status sistèmico en implantología oral
Evaluaciòn del status sistèmico en implantología oralEvaluaciòn del status sistèmico en implantología oral
Evaluaciòn del status sistèmico en implantología oral
 
Digital publishing and the user experience (no chart)
Digital publishing and the user experience (no chart)Digital publishing and the user experience (no chart)
Digital publishing and the user experience (no chart)
 
Moving to Drupal
Moving to DrupalMoving to Drupal
Moving to Drupal
 
About
AboutAbout
About
 
La mission Unione Italiana Vini: una strategia.
La mission Unione Italiana Vini: una strategia.La mission Unione Italiana Vini: una strategia.
La mission Unione Italiana Vini: una strategia.
 
Barrick SME (Mar 2011)
Barrick SME (Mar  2011)Barrick SME (Mar  2011)
Barrick SME (Mar 2011)
 
Arctic And Alpine Stinson
Arctic And Alpine StinsonArctic And Alpine Stinson
Arctic And Alpine Stinson
 
Alenty appnexus app
Alenty  appnexus appAlenty  appnexus app
Alenty appnexus app
 
Creating content sales people will share
Creating content sales people will shareCreating content sales people will share
Creating content sales people will share
 
Modern recruiter tips
Modern recruiter tipsModern recruiter tips
Modern recruiter tips
 
Using A Video Off The Internet
Using A Video Off The InternetUsing A Video Off The Internet
Using A Video Off The Internet
 
Social Bookmarking Introduction To Diigo
Social Bookmarking Introduction To DiigoSocial Bookmarking Introduction To Diigo
Social Bookmarking Introduction To Diigo
 

Similar to 物件導向程式設計課程講義(98 ges hi版)

Javascript primer plus
Javascript primer plusJavascript primer plus
Javascript primer plusDongxu Yao
 
IKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 JavaIKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 Java建興 王
 
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit TestingASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing江華 奚
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程yiditushe
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程appollo0312
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展江華 奚
 
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)Will Huang
 
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸twMVC
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Gelis Wu
 
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7javatwo2011
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Wade Huang
 
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式Will Huang
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文Guo Albert
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
Spring 2.0 技術手冊第十章 - 專案:線上書籤
Spring 2.0 技術手冊第十章 - 專案:線上書籤Spring 2.0 技術手冊第十章 - 專案:線上書籤
Spring 2.0 技術手冊第十章 - 專案:線上書籤Justin Lin
 
实战Ejb(最终完美版)
实战Ejb(最终完美版)实战Ejb(最终完美版)
实战Ejb(最终完美版)yiditushe
 
Supersonic Subatomic Quarkus accelerate cloud native development
Supersonic Subatomic Quarkus accelerate cloud native developmentSupersonic Subatomic Quarkus accelerate cloud native development
Supersonic Subatomic Quarkus accelerate cloud native developmentRyan ZhangCheng
 
Js高级技巧
Js高级技巧Js高级技巧
Js高级技巧fool2fish
 

Similar to 物件導向程式設計課程講義(98 ges hi版) (20)

Javascript primer plus
Javascript primer plusJavascript primer plus
Javascript primer plus
 
IKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 JavaIKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 Java
 
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit TestingASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
ASP.NET Core MVC 2.2從開發到測試 - Development & Unit Testing
 
Js培训
Js培训Js培训
Js培训
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展
 
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
 
twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸twMVC#01 | ASP.NET MVC 的第一次親密接觸
twMVC#01 | ASP.NET MVC 的第一次親密接觸
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
 
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
 
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
Spring 2.0 技術手冊第十章 - 專案:線上書籤
Spring 2.0 技術手冊第十章 - 專案:線上書籤Spring 2.0 技術手冊第十章 - 專案:線上書籤
Spring 2.0 技術手冊第十章 - 專案:線上書籤
 
实战Ejb(最终完美版)
实战Ejb(最终完美版)实战Ejb(最终完美版)
实战Ejb(最终完美版)
 
Supersonic Subatomic Quarkus accelerate cloud native development
Supersonic Subatomic Quarkus accelerate cloud native developmentSupersonic Subatomic Quarkus accelerate cloud native development
Supersonic Subatomic Quarkus accelerate cloud native development
 
Js高级技巧
Js高级技巧Js高级技巧
Js高级技巧
 
A
AA
A
 

More from Hui-Shih Leng

Wire shark http報告
Wire shark http報告Wire shark http報告
Wire shark http報告Hui-Shih Leng
 
如何備份物件導向專題
如何備份物件導向專題如何備份物件導向專題
如何備份物件導向專題Hui-Shih Leng
 
[程式設計]標準差
[程式設計]標準差[程式設計]標準差
[程式設計]標準差Hui-Shih Leng
 
[程式設計]Blackfriday
[程式設計]Blackfriday[程式設計]Blackfriday
[程式設計]BlackfridayHui-Shih Leng
 
如何建立Blog中的程式教學檔案
如何建立Blog中的程式教學檔案如何建立Blog中的程式教學檔案
如何建立Blog中的程式教學檔案Hui-Shih Leng
 
[程式設計]判斷閏年
[程式設計]判斷閏年[程式設計]判斷閏年
[程式設計]判斷閏年Hui-Shih Leng
 

More from Hui-Shih Leng (11)

00555 0 ccet0001020
00555 0 ccet000102000555 0 ccet0001020
00555 0 ccet0001020
 
Imresize
ImresizeImresize
Imresize
 
Plot
PlotPlot
Plot
 
Wire shark http報告
Wire shark http報告Wire shark http報告
Wire shark http報告
 
質數的判斷
質數的判斷質數的判斷
質數的判斷
 
如何備份物件導向專題
如何備份物件導向專題如何備份物件導向專題
如何備份物件導向專題
 
Friend function
Friend functionFriend function
Friend function
 
[程式設計]標準差
[程式設計]標準差[程式設計]標準差
[程式設計]標準差
 
[程式設計]Blackfriday
[程式設計]Blackfriday[程式設計]Blackfriday
[程式設計]Blackfriday
 
如何建立Blog中的程式教學檔案
如何建立Blog中的程式教學檔案如何建立Blog中的程式教學檔案
如何建立Blog中的程式教學檔案
 
[程式設計]判斷閏年
[程式設計]判斷閏年[程式設計]判斷閏年
[程式設計]判斷閏年
 

Recently uploaded

10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习PUAXINYEEMoe
 
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdftaibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdfjhujyunjhang
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个michaelell902
 
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...微信 tytyqqww业务接单
 
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptxbusinesshealthwise
 
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdftaibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdfjhujyunjhang
 

Recently uploaded (6)

10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
 
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdftaibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
 
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
 
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
 
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdftaibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
 

物件導向程式設計課程講義(98 ges hi版)

  • 1. 數學系資訊組 物件導向程式設計 課程講義 教材編撰:數學系講師冷輝世
  • 3. 「物件導向程式設計」課程講義 九十八學年度二版 目錄 第1頁
  • 4. 「物件導向程式設計」課程講義 九十八學年度二版 軟體需求 1. Java SE6 JDK, Java Doc http://java.sun.com 2. JCreator http://www.jcreator.com Java SE6 JDK 與 Java Doc 請選擇最左邊的 JCreator 有三種版本, Pro 版有自動補完功能 (Auto Paded) ,但是屬 Shareware , LE 版與 Classics 版則是免費使用。 第2頁
  • 5. 「物件導向程式設計」課程講義 九十八學年度二版 設定系統環境變數 1. 新增 JAVA_HOME= C:Program FilesJavajdk1.6.0_18 2. 修改 PATH=%PATH%; C:Program FilesJavajdk1.6.0_18bin 我的電腦(按滑鼠右鍵)→進階→環境變數→系統變數 一定要先設定完系統環境變數以後再開啟 JCreator ,否則 JCreator 會抓不到 Java 的相關設定,造成無法編譯與執行的狀況。 第3頁
  • 6. 「物件導向程式設計」課程講義 九十八學年度二版 Java 教學文件 1. Java Tutorial http://java.sun.com/docs/books/tutorial/ 2. The Swing Tutorial http://java.sun.com/docs/books/tutorial/uiswing/ 3. Example Depot http://www.exampledepot.com/ 4. Java Tutorial http://www.java2s.com/Tutorial/Java/CatalogJava.htm 本課程預計學生已修習過程式設計,已有基本的程式設計概念,例如程式基本 架構、變數、流程控制等。 Java Doc 一定要裝!雖然檔案大了一點,可是可以節省不少查書的時間。建議安 裝在 C:Program FilesJavajdk1.6.0_12Docs 目錄下。 第4頁
  • 7. 「物件導向程式設計」課程講義 九十八學年度二版 Applet, Application 與 Swing Application Applet 、 Application 與 Swing Application 的差異: 1. Applet 僅能在網頁中執行,需要 HTML 加以呼叫,所以有兩個檔案。 2. Application 以「命令提示字元」模式執行,只有簡單的文字輸出入。 3. Swing Application 與視窗程式相同(事件驅動)。 [HTML]HelloApplet.htm [Applet]HelloApplet.java [Application]Hello.java 第5頁
  • 8. 「物件導向程式設計」課程講義 九十八學年度二版 [Swing Applicaton]HelloSwing.java 第6頁
  • 9. 「物件導向程式設計」課程講義 九十八學年度二版 Java 程式的編譯與執行 編譯與執行過程除了使用 JCreator 之外,尚需熟練「命令提示字元」模式。 圖片來源:http://csjava.occ.cccd.edu/java-setup/D.htm 「命令提示字元」模式 「命令提示字元」模式下的操作 1. javac.exe http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javac.html 2. java.exe http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html 第7頁
  • 10. 「物件導向程式設計」課程講義 九十八學年度二版 基本程式架構說明 說明類件(Class)、物件(Object)、建構元(Constructor)等觀念。 圖片來源:http://www.cs.princeton.edu/introcs/32class/ 第8頁
  • 11. 「物件導向程式設計」課程講義 九十八學年度二版 基本資料型態與運算子 基本資料型態 資料來源:http://www.artima.com/insidejvm/ed2/jvmP.html 基本型態運算子與 C/C++ 幾乎都相同(除了字串以外)。 第9頁
  • 12. 「物件導向程式設計」課程講義 九十八學年度二版 資料來源:http://www.falkhausen.de/de/table/operator.gif 第 10 頁
  • 13. 「物件導向程式設計」課程講義 九十八學年度二版 Application 模式下的輸出與輸入模式 Application 模式下的輸出使用 System.out.println() 。 [Application]Hello.java Application 模式下的輸入模式有三種: 1. 引數列輸入 2. 鍵盤輸入,使用 BufferedReader 類別物件 3. 鍵盤輸入,使用 Scanner 類別物件 [Application]KeyinDemo1.java [Application]KeyinDemo2.java 第 11 頁
  • 14. 「物件導向程式設計」課程講義 九十八學年度二版 [Application]KeyinDemo3.java 第 12 頁
  • 15. 「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下的輸出與輸入 JOptionPane.showMessageDialog() 對話盒輸出,JTextField 元件輸入。 [Swing Application]DialogDemo.java [Swing Application]SwingIODemo.java 第 13 頁
  • 16. 「物件導向程式設計」課程講義 九十八學年度二版 第 14 頁
  • 17. 「物件導向程式設計」課程講義 九十八學年度二版 陣列 Java 陣列的宣告與 C/C++ 不太一樣,注意“[”與“]”的位置;另外,以物件的 方式宣告,包括 Declaration 與 Creation 兩階段,可以分開也可以合併。 [Application]ArrayDemo.java [Application]ObjArrayDemo1.java [Application]ObjArrayDemo2.java 第 15 頁
  • 18. 「物件導向程式設計」課程講義 九十八學年度二版 第 16 頁
  • 19. 「物件導向程式設計」課程講義 九十八學年度二版 數字類別與字串類別 使用數字類別的理由: 1. 可以作為物件的參數。 2. 可以使用數字類別中內建常數。 3. 可以與字串類別做轉換或直接轉換進位制。 分別以 Integer 類別為例,說明數字類別與字串類別。 以 Math 類別為例,說明靜態類別。 第 17 頁
  • 20. 「物件導向程式設計」課程講義 九十八學年度二版 字串類別的宣告、字串與數值的轉換 字串分為 String, StringBuffer, StringBuilder 三種類別。其中 String 類別為 immutable , StringBuffer 為 mutable, thread-safe , StringBuilder 則為 mutable 用 來取代在 single-thread 情況下的 StringBuffer 。注意這三種類別字串處理的函數 名稱不同。 說明 String, StringBuffered 類別的差異,並舉例。 第 18 頁
  • 21. 「物件導向程式設計」課程講義 九十八學年度二版 如何使用亂數 亂數有兩種產生的方式: 1. 呼叫 Math.random() 靜態類別函數 2. 宣告 java.util.Random 類別物件 [Application]RandomDemo1.java [Application]RandomDemo2.java 第 19 頁
  • 22. 「物件導向程式設計」課程講義 九十八學年度二版 MVC 架構 一般的 MVC 架構 圖片來源:http://java.sun.com/developer/technicalArticles/javase/mvc/ Java MVC 第 20 頁
  • 23. 「物件導向程式設計」課程講義 九十八學年度二版 圖片來源:http://pwosboy.javaeye.com/blog/118768 第 21 頁
  • 24. 「物件導向程式設計」課程講義 九十八學年度二版 流程控制與事件驅動 與 C/C++ 相同,有 if, if …else, for , while, do…while, switch…case 等。 Swing 模式下的事件驅動是所謂的 Event-Driven ,必須熟悉「元件-事件- 介面」的處理程序。 JButton 元件為例,按下按鍵產生 ActionEvent ,必須利用 以 ActionListener 介面來處理,必須實作 ActionListener 介面中的所有 method ( ActionListener 介面中只有一個 method 即 actionPerformed() )。 Swing Events http://java.sun.com/developer/onlineTraining/GUI/Swing2/shortcourse.html 第 22 頁
  • 25. 「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下 JButton 元件的介紹 [Swing Application]Swing3.java 第 23 頁
  • 26. 「物件導向程式設計」課程講義 九十八學年度二版 第 24 頁
  • 27. 「物件導向程式設計」課程講義 九十八學年度二版 有圖片的 JButton 在 Java Web Start 的宣告方式 原本的 JButton 宣告 JButton b1=new JButton("剪刀",new ImageIcon("./scissor.gif")); Java Web Start 下的宣告方式 ClassLoader cl=this.getClass().getClassLoader(); Icon scissors1=new ImageIcon(cl.getResource("images/scissors1.gif")); JButton b1=new JButton("剪刀",scissors1); 第 25 頁
  • 28. 「物件導向程式設計」課程講義 九十八學年度二版 Abstract Class 的介紹 Java 定義有 Abstract Class ,其目的在於利用此 Abstract Class 衍生子類別, 所以不能利用 Abstract Class 建立物件,只能透過其衍生子類別建立物件。 Abstract Class 與一般 Class 宣告類似,有資料成員、成員函數,但多了定義 abstract method , abstract method 是空的,沒有定義函數的內容,而且只能宣告 為 public 或 protected 。 [Application]ExAbstract.java 第 26 頁
  • 29. 「物件導向程式設計」課程講義 九十八學年度二版 第 27 頁
  • 30. 「物件導向程式設計」課程講義 九十八學年度二版 Interface 的介紹 Interface 是 Java 提供的另一項重要功能,與 Abstract Class 非常類似,但有 兩點不同: 1. 所有的資料都要初始化。 2. 所有的 method 都必須宣告為 abstract ,也就是說不能有一般的 method 。 [Application]ExInterface.java 第 28 頁
  • 31. 「物件導向程式設計」課程講義 九十八學年度二版 事件處理的多種寫法 每種 EventListener 都是一種 Interface ,裡面只有定義這個 EventListener 所 提供的方法,所以當要處理事件(Event)時,必須實作出 Interface 所定義的方法, 寫法有三種:。 1. 利用 implements 關鍵字將所有抽象方法實作出來。 2. 利用 Adapter 類別。 3. 利用 Inner Class 的匿名類別方法(可以解決多重繼承的問題)。 [Swing Application]ExEvent1.java 第 29 頁
  • 32. 「物件導向程式設計」課程講義 九十八學年度二版 第 30 頁
  • 33. 「物件導向程式設計」課程講義 九十八學年度二版 [Swing Application]ExEvent2.java [Swing Application]ExEvent3.java 第 31 頁
  • 34. 「物件導向程式設計」課程講義 九十八學年度二版 第 32 頁
  • 35. 「物件導向程式設計」課程講義 九十八學年度二版 集中事件處理 另外,當有許多不同事件要處理時,可以考慮集中事件處理。 [Swing Application]ExEvent4.java 第 33 頁
  • 36. 「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下 JLabel 元件介紹 JLabel 用來顯示一段文字或圖形或文字加上圖形。以下舉例說明不同形式的 JLabel 。 [Swing Application]JLabelExample.java 第 34 頁
  • 37. 「物件導向程式設計」課程講義 九十八學年度二版 第 35 頁
  • 38. 「物件導向程式設計」課程講義 九十八學年度二版 利用 JLabel 顯示文字作為提示文字 [Swing Application]ExJLabel.java 第 36 頁
  • 39. 「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下 JTextField 和 JPasswordField 元件的介紹 JTextField 輸入單行文字, JPasswordField 輸入具有遮罩的單行文字。 [Swing Application]FormExample.java 第 37 頁
  • 40. 「物件導向程式設計」課程講義 九十八學年度二版 第 38 頁
  • 41. 「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下的 JCheckBox 和 JRadioButton 元件的介紹 JCheckBox 建立核取方塊, JRadioButton 建立收音機按鈕,若要滿足單選 則必須配合 ButtonGroup 使用。 [Swing Application]ExJRadioButton.java 第 39 頁
  • 42. 「物件導向程式設計」課程講義 九十八學年度二版 [Swing Application]ExJCheckBox.java 第 40 頁
  • 43. 「物件導向程式設計」課程講義 九十八學年度二版 第 41 頁
  • 44. 「物件導向程式設計」課程講義 九十八學年度二版 檔案處理 Java 檔案的處理架構如下,針對文字檔的處理有兩種方式: 1. 利用 FileReader 與 FileWriter 讀取與寫入文字檔 2. 利用 BufferedReader 與 BufferedWriter 讀取與寫入文字檔 [Swing Application]SourceReader.java 第 42 頁
  • 45. 「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下 JTextArea 和 JFileChooser 元件的介紹 配 合 Java 檔 案 處 理 , 利用 FileChooser 開 啟檔 案 並 將讀 取 的 內容 放 到 JTextArea 元件中,可供修改後再儲存。 ※作業:完成儲存的功能。 [Swing Application]FileRW.java 第 43 頁
  • 46. 「物件導向程式設計」課程講義 九十八學年度二版 第 44 頁
  • 47. 「物件導向程式設計」課程講義 九十八學年度二版 第 45 頁
  • 48. 「物件導向程式設計」課程講義 九十八學年度二版 整合範例-猜數字遊戲 利用猜數字遊戲將前面介紹的內容整合,觀察下列原始碼的 MVC 架構。 作業:加入詢問是否再玩一次的功能。 [Swing Application]GuessAB.java 第 46 頁
  • 49. 「物件導向程式設計」課程講義 九十八學年度二版 第 47 頁
  • 50. 「物件導向程式設計」課程講義 九十八學年度二版 第 48 頁
  • 51. 「物件導向程式設計」課程講義 九十八學年度二版 Java 與 MySQL 的連結 Java 與 MySQL 連結的步驟如下: 1. 下載 mysql-java-connector-5.1.12.zip ,解壓縮將 mysql-java- connector-5.1.12.jar 放至 JRE 下的 libext 目錄下。 http://dev.mysql.com/downloads/connector/j/ 2. 安裝 AppServ 包括 MySQL 與 phpMyAdmin 。 http://www.appservnetwork.com 3. 修改 C:AppServwwwphpMyAdminconfig.inc.php 第 31 行為 $cfg['PmaAbsoluteUri'] = 'http://127.0.0.1/phpMyAdmin/'; 4. 資料庫(Database)、資料表(Table)、欄位(Field)、記錄(Record)之間的關係。 第 49 頁
  • 52. 「物件導向程式設計」課程講義 九十八學年度二版 MySQL 資料庫的建立 使用 phpMyAdmin 建立 math 資料庫,並建立 student 資料表,其中包括 id, name, score 三個欄位。 資料庫 math 第 50 頁
  • 53. 「物件導向程式設計」課程講義 九十八學年度二版 使用 phpMyAdmin 設定資料庫的權限的問題 建立一個帳號 www ,密碼為 123 的使用者帳戶,對 math 資料庫擁有 SELECT 權限。 第 51 頁
  • 54. 「物件導向程式設計」課程講義 九十八學年度二版 SQL(Structured Query Language)介紹 SQL 命令分為 DDL 與 DML 兩類: 1. DDL(Data Definition Language) 包 括 CREATE TABLE, CREATE VIEW, DROP TABLE, DROP VIEW, GRANT, REVOKE 。 2. DML DML(Data Manipulation Language) 包 括 SELECT, INSERT, UPDATE, DELETE 。 3. SQL Quick Reference From W3Schools http://www.w3schools.com/sql/sql_quickref.asp?output=print 第 52 頁
  • 55. 「物件導向程式設計」課程講義 九十八學年度二版 JDBC 範例 建立一個基本的 JDBC 範例,目的只是確定之前的安裝連結成功。 [Application]JDBCEx1.java 第 53 頁
  • 56. 「物件導向程式設計」課程講義 九十八學年度二版 Package 與 Jar Package 是指將 class 封裝,則其它程式可使用 import 引入。 Jar 則是將 class 檔壓縮。 Package 時要注意路徑的設定。 Jar 的命令操作可參考下列文件: 1. Java Archive (JAR) Files http://java.sun.com/javase/6/docs/technotes/guides/jar/index.html 2. Lesson: Packaging Programs in JAR Files http://java.sun.com/docs/books/tutorial/deployment/jar/ 第 54 頁
  • 57. 「物件導向程式設計」課程講義 九十八學年度二版 第 55 頁
  • 58. 「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式中的 Model Swing 元件中的 Model 可分為三類 1. 儲存元件內將被用來操作的資料,常用來顯示不同的資料顯示方式。例如: ListModel, ComboBoxModel, TableModel, Document 。 2. 儲存元件操作模式的資料。例如: ListSelectionModel, TableColumnModel 。 3. 儲存元件本身性質的資料。例如: BoundedRangeModel 。 第 56 頁
  • 59. 「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式中的 JList 元件介紹 JList 元件常用建立選取清單。注意 JList 與 JComboBox 不同 JList 是清單, JComboBox 是下拉式選單。 AbstractListModel 要實作 getElementAt(), getSize() , DefaultListModel 則是所有方法都有預設值。ListCellRenderer 主要用於建立有 Icon 的 JList ,通常是建立某類別繼承 JLabel 並實作 ListCellRenderer 介面。 [Swing Application]JListEx1.java 第 57 頁
  • 60. 「物件導向程式設計」課程講義 九十八學年度二版 第 58 頁
  • 61. 「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下的 JComboBox 元件 JComboBox 用來建立下拉式選單。 DefaultComboBoxModel 所有方法都有 預 設 值 。 由 於 ComBoxModel 是 繼 承 自 ListModel , 所 以 若 要 實 作 ComboBoxModel ,除了要實作 ComboBoxModel 的兩個方法 getSelectedItem(), setSelectedItem() 外,還要實做 ListModel 所定義的四個方 法 getElementAt(), getSize(), addListDataListener(), removeListDataListener() ,共六個方法。所以如果 繼承 AbstractListModel 再實作 ComboBoxModel 則只要實作四個方法。 [Swing Application]JComboEx1.java 第 59 頁
  • 62. 「物件導向程式設計」課程講義 九十八學年度二版 第 60 頁
  • 63. 「物件導向程式設計」課程講義 九十八學年度二版 Google Chart Tools Google Chart 是一組 Google 提供的 API ,我們可以很容易的利用它產生一 般的統計圖表。 參考文件: 1. Google Chart Tools http://code.google.com/apis/charttools/ 第 61 頁
  • 64. 「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下的 JTabbedPane 元件 TabbedPane 類似放置文件的檔案夾,每一份文件都有標籤不同的標籤可顯 示不同的頁面。 [Swing Application]JTabbedPaneEx1.java 第 62 頁
  • 65. 「物件導向程式設計」課程講義 九十八學年度二版 第 63 頁
  • 66. 「物件導向程式設計」課程講義 九十八學年度二版 Swing 模式下 JTable 元件的介紹 JTable 用來建立表格文字,建立方式可以使用 Array 或是 Vector ,使用 Vector 比較有彈性。區別 AbstractTableModel 與 DefaultTableModel 的不同。 [Swing Application]JTableEx1.java 第 64 頁
  • 67. 「物件導向程式設計」課程講義 九十八學年度二版 第 65 頁
  • 68. 「物件導向程式設計」課程講義 九十八學年度二版 [Swing Application]JTableEx2.java 第 66 頁
  • 69. 「物件導向程式設計」課程講義 九十八學年度二版 第 67 頁
  • 70. 「物件導向程式設計」課程講義 九十八學年度二版 [Swing Application]JTableEx3.java 第 68 頁
  • 71. 「物件導向程式設計」課程講義 九十八學年度二版 JTable 範例 以下是有關 JTable 的精彩範例: 1. JTable Example 1 http://www.crionics.com/products/opensource/faq/swing_ex/JTableExamples1.html 2. JTable Example 2 http://www.crionics.com/products/opensource/faq/swing_ex/JTableExamples2.html 第 69 頁
  • 72. 「物件導向程式設計」課程講義 九十八學年度二版 第 70 頁
  • 73. 「物件導向程式設計」課程講義 九十八學年度二版 第 71 頁
  • 74. 「物件導向程式設計」課程講義 九十八學年度二版 Java Web Start 的使用 執行以下九個步驟: 1. 設定 Web Server ,開啟 C:AppServApache2.2confmime.types,加入: # MIME type Extensions application/x-java-jnlp-file jnlp Apach Restart 。 2. 編譯 Test1.java 檔,產生 Test.class 檔。 Test1.java→(Compile)→Test1.class(or Test1$.class) [Swing Application] Test1.java 3. 建立 manifest.txt (第一行的 Test1 前面空一格,第二行空行一定要有) manifest.txt 第 72 頁
  • 75. 「物件導向程式設計」課程講義 九十八學年度二版 Main-Class: Test1 4. 建立 Test.jar (開啟 cmd 視窗,建立 jar 檔) jar cvfm Test1.jar manifest.txt *.class 5. 建立簽証檔 myKeystore keytool -genkey -keystore myKeystore -alias myself 6. 對 Test.jar 檔加上簽証 jarsigner -keystore myKeystore Test1.jar myself 7. 建立 Test1.jnlp Test1.jnlp 8. 建立 Test1.htm 連結 Test1.jnlp Test1.htm 第 73 頁
  • 76. 「物件導向程式設計」課程講義 九十八學年度二版 9. 利用瀏覽器開啟 URL , http://127.0.0.1/jws/Test1.htm 。 第 74 頁
  • 77. 「物件導向程式設計」課程講義 九十八學年度二版 JDBC 範例 JDBC 範例包括建立資料庫與 JWSTest.java 兩部份。請先將 mysql-connector- java-5.1.12-bin.jar 複製至 C:AppServwwwjws 目錄下。 1. 建立 ncue 資料庫,內含 math 資料表,內含 id, name, score 三欄位,並建立 有 select 上述資料庫權限的帳號與密碼 www, 123 。 2. 確定 JWSTest.java 程式編譯無誤。 第 75 頁
  • 78. 「物件導向程式設計」課程講義 九十八學年度二版 [Swing Application]JWSTest.java 第 76 頁
  • 79. 「物件導向程式設計」課程講義 九十八學年度二版 3. 建立 JWSTest.jar jar cvfm JWSTest.jar manifest.txt JWSTest*.class 4. 對 JWSTest.jar 檔加上簽証(如果已有簽証,這裡就不必再建立簽証了!) jarsigner -keystore myKeystore JWSTest.jar myself 5. 對 mysql-connector-java-5.1.6-bin.jar 作 jarsinger 簽証。 jarsigner -keystore myKeystore mysql-connector-java-5.1.6-bin.jar myself 6. 建立 JWSTest.jnlp 第 77 頁
  • 80. 「物件導向程式設計」課程講義 九十八學年度二版 第 78 頁
  • 81. 「物件導向程式設計」課程講義 九十八學年度二版 JWSTest.jnlp 7. 建立 JWSTest.htm JWSTest.htm 8. 利用瀏覽器開啟 URL , http://127.0.0.1/jws/JWTest.htm 。 注意!雖然 jar 檔在檔案總管中直接按兩下即可開啟,但是這只代表在本地 端的執行,與 Java Web Start 遠端佈署的意義是不同的!所以一定要以 URL 的 方式開啟才算成功! ~基礎課程結束~ 第 79 頁
  • 82. 「物件導向程式設計」課程講義 九十八學年度二版 自我評量測驗 針對以下問題,請每位同學自行查詢筆記作答: 1. Abstract Class 與一般的 Class 有什麼不同? 2. 說明 Interface 的作用? 3. Java 程式的基本架構包括那些? 4. 環境變數要設定那些? 5. JCreator 開啟 Java File 與 Java Project 有何不同, Workspace 又是什麼? 6. Java Swing 程式的基本架構包括那些? 7. Java 如何與 MySQL 資料庫連結? 8. Java 程式中執行 SQL 指令的函數有什麼要注意的? 9. 各舉一例說明 SQL 語法的 SELECT 、 INSERT 、 DELETE 、 UPDATE 。 10. 如何在 Java 中取亂數? 11. try…catch 是用在什麼場合? 12. throw 與 try…catch 有什麼不同? 13. 如何實作一個 Interface? 14. 為什麼要利用類別去繼承介面?有什麼作用? 15. String, StringBuffer 與 StringBuilder 這三個類別有什麼不同? 16. Vector 與 Array 有什麼不同? 17. 與例說明 Java 的 MVC 架構(UI-Delegate)。 第 80 頁
  • 83. 「物件導向程式設計」課程講義 九十八學年度二版 18. 如果同時有兩個物件會觸發同一種事件,要如何分辨是那一個物件觸發的? 19. 管理 MySQL 資料庫時,會對不同的資料庫設定不同的帳號與管理權限, 為什麼? 20. FlowLayout, GridLayout, BorderLayout 有什麼不同? 21. Java Web Start 的步驟有那些? 第 81 頁
  • 84. 「物件導向程式設計」課程講義 九十八學年度二版 CGI 原理 第 82 頁
  • 85. 「物件導向程式設計」課程講義 九十八學年度二版 CGI 中的 GET 與 POST 第 83 頁
  • 86. 「物件導向程式設計」課程講義 九十八學年度二版 URL 編碼與解碼 (RFC2396) CGI 在傳送資料時是以 URL 格式編碼,會將空白轉換為“ +”, Unsafe 字元 則轉換為“%”後面接著以十六進位 ASCII 來表示。Safe 字元指的七位元的 ASCII 文數字與九個特號符號 (-_.!~*'()) , Unsafe 字元指由其它七位元 ASCII 。 圖片來源:http://www.albionresearch.com/misc/urlencode.php 第 84 頁
  • 87. 「物件導向程式設計」課程講義 九十八學年度二版 觀察 CGI 過程 利用 Http Analyzer 或 HTTPDebuggerPro 觀察 CGI 的 GET 與 POST 。 [Application]FindBook1.java(GET) 第 85 頁
  • 88. 「物件導向程式設計」課程講義 九十八學年度二版 此程式的結果以 XML 格式回傳。那麼我們要如何存取 XML 格式的資料? 1. 利用 javax.xml Package。 2. 利用 org.w3c.dom Package。 3. 利用 org.xml.sax Package。 參考網址 Processing XML with Java , http://www.cafeconleche.org/books/xmljava/chapters/ [Swing Application]FindBook2.java(POST ) 第 86 頁
  • 89. 「物件導向程式設計」課程講義 九十八學年度二版 此程式的結果是 HTML 格式,如何去 Parse 內容? 1. 利用 java.lang.String 類別。 2. 利用 java.util.regex Package。 3. 利用 javax.swing.text.html Package。 第 87 頁
  • 90. 「物件導向程式設計」課程講義 九十八學年度二版 NanoXML 函數庫介紹 NanoXML 是一個免費的小型 Java XML Parser ,針對 XML 的處理提供了 簡單、快速的存取方法。將下列檔案放在 C:Program FilesJavajre1.6.0_18libext 目錄下,如果使用 JCreator ,必須將 nanoxml-2.3.3.jar 加入 JDK Profile 。 下載網址: http://devkix.com/nanoxml-2.2.3.jar, http://devkix.com/nanoxml-javadoc.tar.gz [Swing Application]NewFindBook1.java 第 88 頁
  • 91. 「物件導向程式設計」課程講義 九十八學年度二版 Regular Expression (Package java.util.regex) 介紹 在 java.util.regex 這 個 Package 中 主 要 有 兩 個 Class , 包 括 Matcher 與 Pattern ,其中 Pattern 使用的就是 Regular Expresion , Regualr Expression 是字 串的一種特殊處理,是由 Perl 語言最先發明的。 參考文件: 1. http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Matcher.html 2. http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html 參考範例: 1. http://www.java2s.com/Code/Java/Regular-Expressions/Matcher.htm 2. http://www.java2s.com/Code/Java/Regular-Expressions/Pattern.htm 第 89 頁
  • 92. 「物件導向程式設計」課程講義 九十八學年度二版 以學校圖書館館藏查詢為例 1. 檢視原始碼,找出關鍵字串 2. 找出 Regular Expression 的規則 [Application]RegEx1.java 第 90 頁
  • 93. 「物件導向程式設計」課程講義 九十八學年度二版 即可分解出 第 91 頁
  • 94. 「物件導向程式設計」課程講義 九十八學年度二版 以 ISBN 全國新書資訊網為例 資料來源:http://lib.ncl.edu.tw/isbn/4page-3.htm 1. 檢視原始碼,找出關鍵字串 第 92 頁
  • 95. 「物件導向程式設計」課程講義 九十八學年度二版 2. 利用 HTML Parser 擷取所需的部份,這裡我們使用 Jericho HTML Parser 幫 助我們處理 HTML 文件 。下載 jericho-html-2.6.zip 並解壓縮至 D: ,將 au 次目錄複製至 D: 。 下載網址: http://jericho.htmlparser.net/docs/index.html D:NewFindBook2.java 第 93 頁
  • 96. 「物件導向程式設計」課程講義 九十八學年度二版 執行結果: ~進階課程結束~ 第 94 頁