20120703 J2EE 程式設計三

1.ArrayList & LinkedList
1.ArrayList:適合固定大小,例如戲院的座位數量。
2.LinkedList:可以用在不固定大小,例如會員的數量。
3.Generic:泛型(型別限定)。

List 的特性是有次序性,有先後順序的。

2.物件導向 Object-Oriented
特點:
1.繼承 (Inheritance):
私有          private          自己可存取
   ^            default           同套件可存取
   |              protected      只要繼承即可存取
公開         public             都可以存取

2.封裝 (Encapsulation):
就是要將變數改為 private,然後 public 2個方法 setName & getName 來讓其他類別來存取變數。因此程式會變得比較大,但比較安全、完整。
例如:程式碼

Hospital.java
public class Hospital {
  public static void main ( String[] args ){
    Human p01 = new Human();
//    p01.name ="甲";
    p01.setName("甲");
    p01.setLegs(1);
    Human p02 = new Human();
//    p02.name ="乙";
    p02.setName("乙");
//    p02.legs =-1;     //避免用到不該有的資料,腿數不可為 -1
    p02.setLegs(-1);   //所以改用setLegs
    p01.showDetail();
    p02.showDetail();
  }
}

Human.java

public class Human {
  private String name;     // 變數改成 private
  private int legs =2;      // 變數改成 private
  public void setName( String name ){      // public setName 方法
    if ( name !=null ){                    //加上 if 判斷式,確保資料是正確的
      this.name = name;
    } else {                                   //否則就丟出錯誤訊息
      throw new IllegalArgumentException();
    }
  }
  public String getName(){
    return name;
  }
  public void setLegs( int legs ){           // public setLegs 方法
    if ( legs >=0 ){
      this.legs = legs;
    } else {
      throw new IllegalArgumentException("有問題, 腿數: " +legs);
    }
  }
  public int getLegs(){
    return legs;
  }
  public void showDetail(){
    System.out.println(
      "傷患: " +name +"\n"
      +"腿數: " +legs
    );
  }
}



3.介面 (Interface):
介面要用 implement 而不是像繼承要用 extend,介面有類似繼承的功能。但是子類別只能繼承一個父類別;而類別可以實作多個父類別。

4.多型 (Polymorphism):
一個類別時做多個介面時,就稱為多型。不可以直接 show,必須轉型為單一腳色後才可以。例如:
Teacher.java

public interface Teacher {
  public String title="講師";
}


Father.java

public interface Father {
  public String title="父親";
}


Me.java

public class Me implements Father, Teacher {
}


Test.java

public class Test {
  public static void main ( String[] args ){
    Me m = new Me();
//  System.out.println(m.title); 不可以直接 show,因為目前身上有二個腳色,不知要用何者
    System.out.println("苦命的人, 同時扮演: ");
    System.out.println( ((Teacher)m).title );     //必須轉型為單一腳色才可以show
    System.out.println( ((Father)m).title );       //必須轉型為單一腳色才可以show
  }
}

3.網站爬文程式
範例:
URLExample.java

import java.net.*;
import java.io.*;
public class URLExample {
  public static void main( String[] args ) throws Exception {
    String oneLine;
    URL url_address = new URL("http://www.XXX.com");
    BufferedReader br = new BufferedReader(              // 讀到 BufferReader 裡面
      new InputStreamReader( url_address.openStream() ) );
    while( ( oneLine = br.readLine() ) != null ){             // 一次讀一行,讀到沒資料為止
      System.out.println( oneLine );
    }
    br.close();
  } // main
} // class


run.bat     // 利用批次檔將上面取得的資料,放到XXX.htm 檔案裡

del *.class
javac URLExample.java
java -cp . URLExample > XXX.htm


4.UML工具
Umbrello:該工具可以直接畫UML圖形,然後產生大約 70%的程式碼。

No comments: