2/23, 26

Introduction to Java Programming :

  • 時間、地點 : 1:30 ~ 3:20, 星期ㄧ,Computer Lab 1609
                         3:30 ~ 4:20, 星期三,Computer lab 1609
  • 授課老師 : 葉建寧 義守大學應用數學系
  • E-Mail : yeh@isu.edu.tw
  • Office : 1616C & 1610
  • Office Hours : Any time you find me
  • 成績計算 : 35% 作業; 20% Midterm; 30% Final; 15% 出席率
    (你必須做自己的作業,複製、抄襲的作業會得到負的分數)
  • 我們會先簡單的介紹一下 Java 這個程式語言, 包括什麼是 J2SE, JRE, java compiler, java bytecodes, 還有 java interpreter...等等. 在開始寫程式前, 電腦上要先安裝 J2SE Development kit (JDK), 你可以在 Sun(昇陽) 的網站下載 : http://java.sun.com/javase/downloads/index.jsp, 選 JDK 6 Update 12 按 Download, 在下一頁選擇 Platform : Windows, I agree to ..., 然後按 Continue, 就可以下載(73.08 MB), 按儲存把檔案存在電腦中, 然後再安裝 (或直接按執行)

    Lecture & programs :

    3/2, 4

    Everything you need to know before coding your first java program :

    我們再詳細的說明一次如何安裝 JDK (你可以用相同的方法在你自己的電腦上安裝) :

  • 你可以在 Sun(昇陽) 的網站下載 JDK : http://java.sun.com/javase/downloads/index.jsp, 選 JDK 6 Update 12 按 Download, 在下一頁選擇 Platform : Windows, I agree to ..., 然後按 Continue, 就可以下載(73.08 MB), 按儲存把檔案存在電腦中, 然後再安裝 (或直接按執行)
  • 安裝時,大概只要按 Accept,Next ... 就行 (你也可以改變安裝路徑,預設是 c:\program files\java\jdk6)
  • 設定環境變數 : (按滑鼠右鍵) 我的電腦 --> 內容 --> 進階 --> 環境變數 --> 新增 (如果已經看見有一個叫做 path 的變數就按編輯)
    在變數名稱的欄位中, 填入 : path
    在變數值的欄位中, 填入 xxxx\bin ( xxxx 是你安裝 JDK 的路徑,所以如果安裝時你沒有更改安裝路徑,你應該填入
    c:\program files\java\jdk6\bin. 注意: 如果已經有一個叫做 path 的變數,按編輯, 在最後加上 ; (分號) 然後再填入 xxxx\bin)
    接著 (這一步暫時不做也行不會影響目前我們所寫的程式),在系統變數中新增變數 CLASSPATH, 變數值填入 .; (句點 分號, 跟上面一樣, 如果原來就有CLASSPATH, 按編輯, 在變數值最後加上 ; 然後再填入 .;)
  • ㄧ開始我們會利用 Notepad (記事本) 跟 MS-DOS 來寫 Java 程式。所以你要練習一下 MS-DOS 的使用,利用 C:、D:、cd、cd..、來設定路徑(或用複製、貼上路徑的方式)

    確定你知道而且會做這整個過程 : "installing, coding, compiling, and running" (安裝、設定JDK,寫程式,編譯,執行)

    Variables, Data Types, Casting and Arithmetic Operators

    程式主要的目的是處理資料,資料可能由程式的使用者輸入、可能由程式設計者提供、也可能從檔案或資料庫中讀取。無論何者,在我們的程式裡,需要記憶體的空間來放資料,所以我們宣告變數來取得適當的記憶體,指定資料給這些變數,透過變數我們讀取、修改、顯示這些資料。資料基本上是數字形式的或是文字形式的,如果是數字,不管多複雜的計算也是由 +、-、*、/、% ... 這些基本的算數組成。

    Input, Output (IO)

    另外,資料的取得也許要透過輸入的裝置(鍵盤 ... ),資料的顯示或儲存要有輸出設備(螢幕 ...),在輸出、輸入(IO)之間就是處理資料的部分,接下來我們會很快的說明、練習輸出、輸入的方法,這些都是已經幫我們寫好的方法,請同學花點時間熟悉這些方法的寫法。之後我們就會進入寫程式的重點 : 處理資料。

    Lectures :

  • power point class lecture (按滑鼠右鍵下載) Lecture 2 (變數)   Lecture 3 (算術運算)
  • power point class lecture (按滑鼠右鍵下載) Lecture 4 (JOptionPane)   Lecture 5 (String 跟 Math Classes)
  • Programs :

    Lab : Lab1

    3/9, 11

    Java IO -- JOptionPane, Scanner and BufferedReader classes :

    除了 JOptionPane 外,另外有兩個類別 Scanner,BufferedReader 可以提供輸入的工作

    Lecture :

    • power point class lecture (按滑鼠右鍵下載) Lecture 6 (Scanner & BufferedReader)

    programs :

    Lab : Lab2 Lab3

    3/16, 18

    Program Control -- if...else, switch, while, do...while, and for loops:

    Java 的程式控制跟其他程式語言一樣,請同學多寫幾個程式練習練習。前面這幾次上課我們很快的講過 Java 的安裝、變數、資料型態、算術運算、邏輯判斷、程式流程控制的條件判斷與迴圈,請找一本 Java 書籍,看看這幾個部份。

    Lecture :

    • power point class lecture (按滑鼠右鍵下載) Lecture 7 (if...else, switch)
    • power point class lecture (按滑鼠右鍵下載) Lecture 8 (Loops) Lecture 9 (Loops II)

    Lab : Lab4 Lab5

    programs :

    Exercises : 請完成我們沒寫的 Lab 題目 : Question 9, Question10, Question11

    3/23, 25

    Java Array -- Array Class & Multidimensional Array :

    當你的程式需要用到多個相同資料型態的變數時,很可能你所需要的就是 Array。

    Lecture :

    • power point class lecture (按滑鼠右鍵下載) Lecture 10 (Array)
    • power point class lecture (按滑鼠右鍵下載) Lecture 11 (Multidimensional Array)

    Lab : Lab6

    programs :

    • Direction.java 讓使用者選擇一個方向,利用 switch 判斷
    • Direction2.java 讓使用者選擇一個方向,利用 switch 判斷,並加入迴圈
    • Direction3.java 讓使用者選擇一個方向,利用 switch 判斷,以座標顯示
    • Road.java 利用 Nested for loops 製作一個棋盤式道路
    • Road2.java 利用 棋盤式道路 模擬象棋 車的走法

     

    3/30, 4/1

    Java Method

    當你的程式越寫越長時,或某些工作常常需要再做一次時,我們會用 Method 來寫某部份的程式,而且程式的功能在處理資料,把處理某些特定資料或利用特定方式處理資料的程式碼集合起來放在 Method 中,也是很合理的事。

    Lecture :

    • power point class lecture (按滑鼠右鍵下載) Lecture 12 (Method)

    Lab : Lab6

    programs :

    • Road3.java 利用 棋盤式道路 模擬象棋 車的走法
    • Road4.java 利用 棋盤式道路 模擬象棋 車的走法 -- 利用 method 來完成某些工作
    • Road5.java 利用 棋盤式道路 模擬象棋 馬的走法 -- 建立測試馬的走法的 method

    Assignment 1 : 這是作業ㄧ,4月10日交

    Exercise : 請想想 Lab 6 的 Question 17

    4/6, 8

    Java Method

    我們會利用幾個程式來練習使用 Method 。從上次開始我們介紹了JCreator 來寫Java 程式,你可以下載免費的 JCreator LE 版本來使用。

    Lab : Lab7

    programs :

    Exercise : MineSweep5.class 試看看加個迴圈,玩到碰到地雷為止!!
    4/13, 15

    Intro to Java OO Programming

    Lecture :

    • power point class lecture (按滑鼠右鍵下載) Lecture 13 (Java Classes)

    programs :

    • CarTest.java 建立一個車子類別 + 測試的主程式 (放在同一個檔案中)
    • CarTest.java2  Car.java 建立一個車子類別 + 測試的主程式 (分別放在不同的檔案中)
    • PieceTest3.java  Piece.java 改寫上個程式,建立一個棋盤的棋子類別 + 測試的主程式 (分別放在不同的檔案中)
    4/20

    MidTerm

    範圍 : 考到 4/6, 8 的上課內容 (Lecture 13 不考)。你可以參考這一份之前的考題!

    4/27, 29

    More on Java OO Programming

    Lecture :

    programs :

    • PieceTest4.java  Piece2.java 改寫之前的程式,建立一個棋盤的棋子類別,建立子類別,介紹類別的繼承 (Inheritance) 跟 Method 成員的Overridden (覆寫)。

    Assignment 2 : 這是作業二,5月14日交

    5/4, 6

    Java GUI Programming -- Java Swing

    programs :

    Exercise : 試看看修改上面的 JFrame4.java 不是質數時可以顯示其中一個因數!!

    5/11, 13

    Java GUI Programming -- Java Swing

    Lecture :

    • power point class lecture (按滑鼠右鍵下載) Lecture 17 (Java Classes & Interfaces)  Lecture 18  (Java GUI)

    programs :

    • MatchingGame1.java  Flip1.java 這個程式用到這些圖片 (自我解壓縮檔), 這是翻牌遊戲的 GUI 部分, 現在有翻牌的功能, 但是圖片是有規則的排上去的。
    • MatchingGame2.java  Flip2.java 這個程式用到這些圖片 (自我解壓縮檔), 這是翻牌遊戲的 GUI 部分, 現在有翻牌的功能跟隨機的圖片。
    • MatchingGame3.java  Flip3.java 這個程式用到這些圖片 (自我解壓縮檔), 現在有翻牌、隨機圖片且可以辨識兩張是否有配對的功能。

    Assignment 3 : 這是作業三,5月26日交

    5/18, 20

    The Java Archive File (JAR)

    有時候(其實是很多時候),一個完整的程式需要用到很多檔案,像我們上面寫的 Matching Game, 用到了兩個 .class 檔再加上一些圖檔,這樣要散佈 (distribute) 這個程式就有點麻煩 (比方說要寄給我看),像這樣的情形,我們可以利用 Java 的 Archive file 來把所有的檔案放在一個副檔名是 .jar 的檔案中,要注意的一點是,在建立 .jar 檔案之前,要把原來 .java 中使用的圖檔路徑改成 :
    getClass( ).getResource("images\smily0.gif") 。

    如何建立一個程式跟圖檔的 JAR 檔案 :

    1. 製作一個 MANIFEST.MF 檔, example (按滑鼠右鍵下載). 需要一個 MANIFEST.MF 通常是因為我們希望這個 jar 檔案也是一個 Window 的可執行檔 (executable file),這個 MANIFEST.MF 中可以寫上主程式的 class 路徑、名稱,之後按兩下 .jar 檔就可以直接執行程式 (當然,電腦中還是要安裝 JRE 才行)
    2. 在 MS-DOS 視窗,cd 到你存放檔案的資料夾,鍵入指令 :
      jar cvfm MatchingGame.jar MANIFEST.MF MatchingGame3.class Flip3.class images\smily0.gif images\smily1.gif images\smily2.gif ...

      jar cvfm MatchingGame.jar MANIFEST.MF *.class images\*.gif
      (利用 *.class 跟 *.gif 會包含進來這個資料夾中所有的 .class 跟 .gif 檔,所以你應該先確認這個資料夾只有那些該有的檔案)

    如果你的電腦有安裝JRE, 你可以按兩下 .jar 檔案來測試. (測試 .jar 檔時,請先把它存在另外的資料夾,跟圖檔分開!然後看看能否看到圖片。記住,.java 中的圖檔路徑要改成 getClass( ).getResource("路徑").)

    另外,你也可以使用

    jar xf MatchingGame.jar   來解開所有的檔案
    jar tf MatchingGame.jar   來列出所有檔案的名稱

    The Java JApplet

    Applet 是放在網頁上的Java 程式, 我們只寫了一個簡單的測試程式, 在網頁上放 Applet 需要寫一個 <applet> 標籤,我們也簡單的使用了一個網頁來測試。

    programs :

    • JAppletTest.html   JAppletTest.java (這個 java 程式沒主程式 main, 因為主程式是瀏覽器 (IE, FireFox ...), 再由瀏覽器把 .class 檔叫起來, 第一個執行的事 init() 這個 method ...

    Assignment 4 : 這是作業四,6月4日交

    5/25, 27

    MineSweeping , again.

    利用 JFrame 來寫踩地雷

    programs :

    • MineSweeping.java  Flip.java 這個程式用到這些圖片 (自我解壓縮檔), 這是踩地雷遊戲的 GUI 部分, 這個檔案只有從正面翻到背面的功能。
    • MineSweeping2.java  Flip2.java 這個程式用到這些圖片 (自我解壓縮檔), 這是踩地雷遊戲的 GUI 部分 + 翻面的功能, 翻面後可以看到周圍的地雷數或 ... 本身是地雷。

    5/27 改在中午上課。

    6/1, 3

    MineSweeping , continued.

    利用 JFrame 來寫踩地雷,加上 recursive function 來設定當按到 "0" 時,會繼續顯示周圍的數字 ...

    programs :

    • MineSweeping3.java  Flip3.java 這個程式用到這些圖片 (自我解壓縮檔, 多加了兩個也許用得上的圖), 這是踩地雷遊戲的 GUI 部分 + 翻面的功能, 翻面後可以看到周圍的地雷數或 ... 本身是地雷 ... 翻到 "0" 會繼續翻開周圍的數字。
    • MineSweeping4.java  Flip4.java 這個程式用到這些圖片 (自我解壓縮檔, 多加了兩個也許用得上的圖), 這個例子我們使用了 MouseListener, 然後利用滑鼠右鍵來翻開"旗子" (是使用者認為是地雷的位置) 。
    6/10

    Java Packages

    Lecture :

    • power point class lecture (按滑鼠右鍵下載) Lecture 19 (Java Packages)

    programs :

    • JFrameTest5.java   JFrame5.java 這是 5/4 所寫的程式, 程式中一開始的地方多加了這行 package pa; 把檔案放到名稱為 pa 的 package 中, 這兩個檔案必須放在名稱是 pa 的資料夾中, Compile 時要在上一層資料夾執行 javac pa\JFrameTest5.java, execute 時要在上一層資料夾執行 java pa.JFrameTest5。
    • JFrameTest6.java   JFrame5.java  這兩個程式只有 JFrame5.java 放在 package pa 中, 主程式 JFrameTest6.java 放在上一層, 程式中加了 import pa.JFrame5; (這跟我們在其他程式的 import 意思一樣!)
    6/15, 17

    Java Exception Handling & Multi-Thread

    Lecture :

    • power point class lecture (按滑鼠右鍵下載) Lecture 20  (Java Exception Handling) Lecture 21  (Java MultiThread)
    Assignment 5 : 這是作業五,6月27日交
    6/22

    Final Exam

    Java OO Programming, Java Swing, JAR, JApplet, Java Exception Handling, MultiThread, Packages

    這是一份舊的參考題目,內容有 OO Programming, Swing, JAR, JApplet