Sunday, November 15, 2015

JavaSE8與Lambda共舞 -- 價值5萬NTD的課程....認真準備Java8 OCPJP考試自學吧!

Java是物件導向的程式語言,而物件導向的實踐,成功地拉近人類大腦的思維邏輯與程式開發的邏輯,使得程式開發專案從需求、分析、架構、設計到製作,各階段的鴻溝得以縮到最小,進而降低專案失敗的可能性。
物件導向模擬真實世界的情境,藉由不同功能物件的協同作業,來達成系統特定的功能。然而在某些情況下,物件的思維反而會使得程式開發變得有點煩瑣和累贅,例如提供給視窗程式用的事件處理器(Event Handler)、提供給排序邏輯用的比較子(Comparator)、建構執行緒用的Runnable物件等,如果都按照正統的作法來開發,最精簡的方式大概就只有透過巢狀類別(Nested Class)的寫法了。
舉例來,假設有一個Product類別,其成員包括id(int)name(String)stock(int)unitPrice(double)Product本身並沒有實作Comparable,現在有一群存放在ArrayList裡的Product物件,我們想利用Productname欄位來排序,但又不想額外撰寫比較子(Compatator)類別,其做法可能如下:
ArrayList <Product> products = new ArrayList< >();
products.add (
new Product(5, "Tiger", 500, 380000.6));
products.add (
new Product(1, "Elephant", 200, 290000.5));
products.add (
new Product(6, "Cat", 700, 80000.2));
products.add (
new Product(4, "Impala", 600, 120000.3));
products.add (
new Product(2, "Lion", 100, 450000.9));
products.add (
new Product(3, "Dog", 300, 90000.7));

Collections.sort (products, 
new Comparator <Product> () { 
@Override 
public int compare(Product o1, Product o2) { 
return o1.getName().compareTo(o2.getName()); 
} 
}
); 

for (Product p:products){ 
System.
out.println(p);
}
巢狀類別的寫法,的確讓程式碼變得稍微複雜,可讀性也降低了不少。Java SE 8引進了Lambda Expression的語法,可讓程式碼進一步簡化如下:
ArrayList <Product> products = new ArrayList< > ( );
products.add (
new Product( 5, "Tiger", 500, 380000.6));
products.add (
new Product( 1, "Elephant", 200, 290000.5));
products.add (
new Product( 6, "Cat", 700, 80000.2));
products.add (
new Product( 4, "Impala", 600, 120000.3));
products.add (
new Product( 2, "Lion", 100, 450000.9));
products.add (
new Product( 3, "Dog", 300, 90000.7));

Collections.sort(products, (Product o1, 
Product o2) - > o1.getName( ).compareTo(o2.getName( ))); 
products.stream( ).forEach(
(p) - > {System.out.println(p);});
是不是優雅多了呢?不只比較子,連for-each迴圈都變得更精簡、更直覺了!透過Lambda Expression的寫法,Java程式的語法得以更精簡、更容易上手,可讀性跟維護性當然也跟著大幅提升。

初階
---------
課程目標
本課程將協助您了解Java技術的重要特性,並引導您進入Java技術的殿堂。課程內容以循序漸進的方式,著重於基本的Java語法介紹及物件導向基礎概念,像是封裝、繼承與多型等概念,讓初學者以輕鬆無負擔的方式來學習Java程式語言。課程中以Netbeans來開發Java應用程式,讓您能更熟悉Java程式語言的語法與物件導向概念。
適合對象
  1. 程式設計師、網頁設計人員、欲熟悉Java語言程式開發技術者
  2. 欲開發Android App
  3. 特別為沒有程式開發經驗者所量身訂製,以深入淺出的方式介紹Java語言強大的開發能力
預備知識
  1. 會操作Windows作業系統
  2. 基本邏輯概念
課程內容
  1. Java平台與開發環境介紹
  2. 建立Java主程式類別(Main Class)
  3. 介紹變數
  4. 處理字串資料
  5. .處理數值資料
  6. 處理多重項目資料
  7. 描述物件(Object)與類別(Class)
  8. 資料操作及格式化
  9. 方法建立與使用
  10. 封裝
  11. 決策語法
  12. 使用NetBeans Debugger
  13. 陣列與迴圈
  14. 繼承
  15. 多型
  16. 介紹Lambda Expression
  17. 例外處理
       
進階
---------
課程目標
本課程教您使用最新的Java SE 8來撰寫Java程式,課程內容涵蓋物件導向的概念以及Java進階語法,像是Lambda Expression、Design Pattern、JDBC連結資料庫、多執行序以及Fork-Join框架等與設計觀念,並為已熟悉電腦語言、程式設計的開發人員介紹如何利用Java語言及環境來開發Application。
適合對象
  1. 專門為已熟悉電腦語言程式設計的開發人員介紹如何開發Java Application
  2. 欲開發Android App
  3. 適合想要了解Java程式語言的開發人員
預備知識
  1. 已熟悉電腦語言程式設計
  2. 會操作Windows作業系統
  3. Java程式語言基礎語法
  4. 資料庫基礎概念
  5. 基礎SQL語法
課程內容
  1. Java平台與開發環境介紹
  2. 回顧Java語法及類別
  3. 封裝與繼承 (ok, 2015/Aug)
  4. Overriding Method  (ok, 2015/Aug)
  5. 多型 (ok, 2015/Aug)
  6. static (ok, 2015/Aug)
  7. Singleton Design Pattern  (NEED TO STUDY MORE)
  8. 抽象類別、介面、巢狀類別  (ok, 2015/Oct)
  9. Lambda Expressions  (ok, 2015/Oct)
  10. 集合(Collections)與泛型(Generics) (NEED TO STUDY MORE)
  11. Builder Design Pattern (NEED TO STUDY MORE)
  12. 使用Lambda Expression走訪集合物件  (ok, 2015/Nov)
  13. 使用Lambda Expression過濾集合物件  (ok, 2015/Nov)
  14. Lambda內建的Funtional Interface  (ok, 2015/Nov)
  15. 使用Lambda操作資料 (ok, 2015/Nov)
  16. Exceptions 及 Assertions (ok, 2015/Oct)
  17. Java Date/Time API (NEED TO STUDY MORE)
  18. I/O基礎及NIO.2 (Ok for file reader/buffered reader ... etc, need to browse detailed exam subjects)
  19. 並行(Concurrency)及Fork-Join框架 (NEED TO STUDY MORE ABOUT CONCEPT)
  20. Parallel Streams (NEED TO STUDY MORE ABOUT CONCEPT BEFORE PROGRAMMING)
  21. JDBC (NEED TO STUDY MORE , Especially for stored procedure)
  22. Localization (NEED TO STUDY MORE ABOUT CONCEPT)

No comments:

Post a Comment