跳到主要內容

臺灣博碩士論文加值系統

(44.212.96.86) 您好!臺灣時間:2023/12/07 02:03
字體大小: 字級放大   字級縮小   預設字形  
回查詢結果 :::

詳目顯示

我願授權國圖
: 
twitterline
研究生:謝明龍
研究生(外文):Ming-Lung Hsieh
論文名稱:在Java上實作ExtensionMethod之機制
論文名稱(外文):A Mechanism of Extension Methods for the Java Programming Language
指導教授:陳俊良陳俊良引用關係
學位類別:碩士
校院名稱:國立臺灣大學
系所名稱:資訊工程學研究所
學門:工程學門
學類:電資工程學類
論文種類:學術論文
論文出版年:2007
畢業學年度:95
語文別:中文
論文頁數:54
中文關鍵詞:延伸方法擴充方法語言集成查詢方法物件導向
外文關鍵詞:extension methodLINQLanguage Integrated Query.NET Frameworkmethodobject-oriented
相關次數:
  • 被引用被引用:0
  • 點閱點閱:196
  • 評分評分:
  • 下載下載:0
  • 收藏至我的研究室書目清單書目收藏:0
對全世界所有程式設計人員來說,微軟的.NET平台與昇陽的Java平台,無疑是兩大最具有代表性的架構。

Java平台挾帶著開放、歷史悠久的優勢,聚集了不少支持者,包括個人及企業。Java語言已是許多重量級企業開發產品的平台,如昇陽、IBM、Oracle等等。理論上開放平台的Java,在眾多支持者的推動下,理應發展迅速,但實際上卻不然;在Java語言規範,作大規模的發展,需考慮其背負的相容性包袱,又有各大廠商彼此的利益衝突,發展稍嫌緩慢。

作為.NET平台的代表性語言,C#吸收了許多其它程式語言的優點(特別是Java),在語法亦與Java相近,也因此受到許多程式開發者的青睞。因.NET是微軟的專屬平台,在其全力推動下,發展相當迅速,這也使得物件導向語言越來越簡練而直觀。

在最新的.NET框架(.NET Framework)上,微軟提出一個LINQ專案,目的是統一各種不同資料查詢上的語法,將資料庫、XML、或是物件集合的屬性存取,用同一種共通的方式來操作,如比對、排序、彙總等等。延伸方法(Extension Methods)是LINQ的特色之一,允許使用者在各種型別(types)、類別(classes)、界面(interfaces)等等資料結構下,新增自行定義的方法(methods),而不受任何限制。

從程式開發者的角度來看,延伸方法能從使用者的角度,替任何型別或類別加入方法,十分具有吸引力。因此我們也希望能夠在維持相容性的前提下,在Java平台上使用延伸方法。本論文從C#實作延伸方法的方式著手,將其精神導入Java平台,並提供一個在Java平台上使用延伸方法的機制,而不需要修改Java編譯器(Java compiler)及Java虛擬機器(Java VM),以確保此機制的相容性。
致謝 i
摘要 ii
Abstract iii
目錄 iv
圖目錄 vi
表目錄 vii
第 1 章 簡介 - 1 -
1.1 研究背景 - 1 -
1.2 研究動機 - 2 -
1.3 論文架構 - 3 -
第 2 章 延伸方法 - 4 -
2.1 程序與方法 - 4 -
2.2 方法修飾子 - 6 -
2.3 靜態方法與實體方法 - 7 -
2.4 延伸方法 - 9 -
2.5 靜態類別 - 12 -
2.6 引入延伸方法 - 13 -
2.7 延伸方法呼叫 - 14 -
2.8 延伸方法之優先權順序 - 15 -
2.9 延伸方法的限制 - 17 -
第 3 章 設計與策略 - 18 -
3.1 在Java平台實作延伸方法的策略 - 18 -
3.2 DecTool的設計 - 23 -
3.3 InvTool的設計 - 25 -
第 4 章 實作 - 27 -
4.1 Java的延伸方法宣告 - 27 -
4.2 Java的延伸方法呼叫 - 31 -
4.3 工具程式的實作 - 32 -
4.4 Java的延伸方法設計流程 - 37 -
第 5 章 結論 - 38 -
5.1 討論 - 38 -
5.2 未來工作 - 38 -
References - 40 -
附錄A C#的延伸方法實作 - 43 -
A.1 C#實作延伸方法宣告的方式 - 43 -
A.2 C#實作延伸方法呼叫的方式 - 44 -
附錄B Java類別檔案的格式 - 46 -
附錄C Annotation - 50 -
附錄D ASM Bytecode操作框架 - 51 -
[1]E. Bruneton, R. Lenglet and T. Coupaye, “ASM: a code manipulation tool to implement adaptable systems”, Adaptable and extensible component systems, November 2002, Grenoble, France.
[2]E. Kuleshov, “Using ASM framework to implement common bytecode transformation patterns”, AOSD.07, March 2007, Vancouver, Canada.
[3]ObjectWeb Consortium, “ASM - Home Page”, http://asm.objectweb.org/
[4]ObjectWeb Consortium, “Overview (ASM 3.0 Documentation)”, http://asm.objectweb.org/asm30/javadoc/user/index.html
[5]com_a, “代碼動態生成利器ASM”, http://www.matrix.org.cn/resource/article/1178.html
[6]Jeffrey Richter, “.NET: Type Fundamentals”, the December 2000 issue of MSDN Magazine.
[7]Arun Ganesh, “Boxing and unboxing in C#”, http://www.codeproject.com/csharp/boxing.asp
[8]Anson Horton, “The Evolution Of LINQ And Its Impact On The Design Of C#”, the June 2007 issue of MSDN Magazine.
[9]The Visual Basic Team, “Articles about Extension Methods”, http://blogs.msdn.com/vbteam/pages/articles-about-extension-methods.aspx
[10]Ian Griffiths, “C# 3.0 - Extension Methods”, http://www.interact-sw.co.uk/iangblog/2005/09/26/extensionmethods
[11]Microsoft Public Sector Developer Evangelism Team, “Query over objects using LINQ just like you do tables with SQL”, http://blogs.msdn.com/publicsector/archive/2006/05/17/600202.aspx
[12]Troy Magennis, “Random Sample Extension Method for .NET 3.0 LINQ queries”, http://www.codeproject.com/useritems/linqrandomsample.asp
[13]Microsoft Corporation, “C# Version 3.0 Specification”
[14]Paolo Pialorsi, Marco Russo, “Introducing Microsoft LINQ”, Microsoft Press, 2007
[15]Microsoft Developer Network, “Static Classes and Static Class Members (C# Programming Guide)”, http://msdn2.microsoft.com/en-us/library/79b3xss3(VS.80).aspx
[16]Microsoft Developer Network, “資料型別 (C# 與 Java 的比較)”, http://msdn2.microsoft.com/zh-tw/library/ms228360(VS.80).aspx
[17]Microsoft Developer Network, “類別基礎 (C# 與 Java 的比較)”, http://msdn2.microsoft.com/zh-tw/library/ms228632(VS.80).aspx
[18]David Flanagan, Brett McLaughlin, “Java 5.0 Tiger: A Developer''s Notebook”, O''Reilly, 2004
[19]Tim Lindholm, Frank Yellin, “The Java Virtual Machine Specification, Second Edition”, Prentice Hall, 1999
[20]蔡學鏞, “Metadata 的格式和意義(下)”, http://www.microsoft.com/taiwan/msdn/columns/DoNet/metadata_2.htm
[21]Sun Microsystems, “Java Platform, Standard Edition 6 API Specification”, http://java.sun.com/javase/6/docs/api/
[22]蔡學鏞, “JVM 內的資料處理”, http://www.oreilly.com.tw/column_sleepless.php?id=j023
[23]Microsoft Developer Network, “MSIL Disassembler”, http://msdn2.microsoft.com/en-us/library/f7dy01k1(VS.80).aspx
[24]David Flanagan, “Java in a Nutshell, Fifth Edition”, O''Reilly, 2005
QRCODE
 
 
 
 
 
                                                                                                                                                                                                                                                                                                                                                                                                               
第一頁 上一頁 下一頁 最後一頁 top