Microsoft Word - GoF-ch06-8-AbsFactory-ok.doc

Size: px
Start display at page:

Download "Microsoft Word - GoF-ch06-8-AbsFactory-ok.doc"

Transcription

1 第 6 章 Abstract Factory 樣式 137

2 138 Google Android 設計招式之美 Android 設計招式之美教材下載

3 第 6 章 Abstract Factory 樣式 139 第 6 章 Abstarct Factory 模式 6.1 Abstract Factory 模式美何在? 大格局的分合自如 不知而亦能用 之实践 6.2 介绍 Abstract Factory 模式 6.3 Android 框架与 Abstract Factory 模式 Abstract Factory 模式范例 Abstract Factory 与 Observer 模式之组合

4 140 Google Android 設計招式之美 6.1 Abstract Factory 模式美何在? 大格局的分合自如在上一章 ( 第 5 章 ) 的 Observer 模式创造了垂直面的抽换性 ( 或互换性 ), 也就是框架与应用类别的分合自如 ( 或称为 PnP), 其中依赖于 Observer 模式里的抽象类别 ( 即接口 ), 而达到 不知而亦能用 之效果 如下图 : 图 6-1 美好的接口让. 抽象与应用类别分合自如 那么, 如何创造水平方向的抽换性呢? 水平方向的抽换性, 就是 Client 类别与 Server 类别之间的独立性 例如下图 6-2 里, 如果我们抽换掉 Server 应用类别时,Client 类别并不受影响, 因为 Client 类别呼叫 Factory 抽象类别的函数去诞生 Server 之对象 诞生完毕后,Client 类别呼叫 Server 抽象类别的函数去反向呼叫到 Server 应用类别之函数, 就完成了 Client 与 Server 两个类别间之沟通了 由于我们抽换掉 Server 应用类别时, 不会影响到 Client 类别, 所以 Server 应用类别具有高度的抽换性 从下图 6-2 可以看出来, 这种美好效果是来自于 Factory Method

5 第 6 章 Abstract Factory 樣式 141 模式的贡献 让 Server 应用类别像汽车的轮胎一样, 随时可以汰旧换新 图 6-2 美好的接口让 Client 与 Server 类别分合自如 此图已经展现出 Factory Method 的效益了 然而, 我们还可以继续发挥其魅力, 缔造更大格局的分合自如 此时,Abstract Factory 模式就派上用场了 Abstract Factory 之美将带来大格局的 不知而亦能用 效果, 创造更高的抽换性, 让系统能顺畅新陈代谢 且无限繁荣

6 142 Google Android 設計招式之美 不知而亦能用不知而亦能用 之实践在前面第 2 3 章里介绍过 Template Method 与 Factory Metrhod 模式的组合, 它们的组合成为当今许多框架设计之基础, 如下图 : 图 6-3 Template Method 与 Factory Metrhod 模式的组合 这是 变与不变分离 原则的重要表现, 基于此结构的反向控制 ( 即卡榫 ) 机制, 让不变部份与会变部份能够随时组合起来 变与不变的 分 离是手段, 随

7 第 6 章 Abstract Factory 樣式 143 时能结 合 则是目的 所谓 分得妙, 合得快 就是框架设计的精神所在 例如, 在日常生活中, 可以见到汽车的车体与轮胎是分离的, 因为轮胎是年年都得换新 ( 会变 ), 而车体十年不变, 两者分离而得出轮盘 ( 即卡榫 ) 车体与轮胎的分离是手段, 随时能将轮胎换新 ( 重新结合 ) 才是目的 降低 Cleint 与 Server 之相依性 在上图里,ConcreteClient 类别的 FactoryMethod() 函数内有个指令 : obj = new ConcreteProduct(); 它使用了 "ConcreteProduct" 字眼, 这造成 ConcreteClient 与 ConcreteProduct 两个类别之间的高度相依性 (Dependency) 此时, 可以增添一个 ConcreteFactory 类别, 将 ConcreteClient 与 ConcreteProduct 两类别分隔开来 如下图 :

8 144 Google Android 設計招式之美 图 6-4 创造 不知而亦能用 效果 兹比较图 6-3 与图 6-4 图 6-3 的不完美之处为 : 必须先撰写 ConcreteProduct 类别 ( 并决定此类别之名称 ), 之后, 才能完成 ConcreteClient 类别之撰写 当 ConcreteProduct 类别名称有所更改时, 也必须更改 ConcreteClient 类别之内容 图 6-4 的设计就精致多了 ( 表面上看来是复杂多了 ) 于图 6-4 里, 无论是 Client 或 ConcreteClient 类别里都已经没有 "ConcreteProduct" 字眼了 在未来的时日里,

9 第 6 章 Abstract Factory 樣式 145 当 ConcreteProduct 类别名称需要变更, 并不必更改 ConcreteClient 类别之内容 当人们在撰写 Client 或 ConcreteClient 类别的程序码时, 只需要知道 ConcreteFactory 类别 ( 含名称 ), 并不须要知道 ConcreteProduct 类别 ( 含名称 ), 这就称为 不知而亦能用 之效果 所谓 不知而亦能用, 就是对象 A 的设计者, 脑筋只思考到对象 B 的接口 (What) 就行了, 不需要知道对象 B 的实作 (How-to) 内涵, 达到不知 ( 实作 ) 而亦能用的佳境 就像您不知道 Intel CPU 的内部设计, 只知道其接口就能使用之 请记得,Intel CPU 内有 Intel's Design Inside! 其内部实作细节价值连城, 可以让别人拥有 CPU( 也知道 CPU 接口用法 ), 但不能让别人拥有 CPU 内部的设计 (Design) 思维! 不知而亦能用, 就意味着很容易抽换 美好的接口能降低实作面的相依性, 促进系统的新陈代谢 所以 GoF 的 <<Design Patterns> 一书里说到 : This so greatly reduces implementation dependencies between subsystems that it leads to the following principles of reusable object-oriented design: Program to an interface, not an implementation. ( 这能大幅降低子系统之间的实作相依性, 因而导出一项屡试不爽的 OOD 设计原则 : 针对接口而写程序, 不要针对实作内涵 ) 当您在设计应用框架时, 别忘了, 拿这句话当做为您的座右铭, 再适当不过了 维持变与不变之分离 所谓 设计 (Design), 就是解开 (De) 既有的结构 (Sign) 的意思 刚才已经将 ConcreteClient 与 ConcreteProduct 两者之相依性化解了, 此时产生了一点点小的副作用, 就是变与不变分离的美好状态被破坏了 其原因是, 在属于框架的 Client( 不变 ) 抽象类别里,fa 数据的型态是 ConcreteFactory, 而 ConcreteFactory 类别又属于应用程序 ( 会变 ) 部分, 其 "ConcreteFactory" 字眼是会变的 因而, 框架里含有会变部份, 有违变与不变分离原则 这是框架设计与开发过程中经常会出现的情形, 只要加以调整, 让它恢复变与不变分离的美好状态就行了 于是, 针对 ConcreteFactory 类别进行变与不变分离, 抽象出父类别并摆入框架里, 就恢复变与不变分离的美好状态了 如下图 :

10 146 Google Android 設計招式之美 图 6-5 更精致的框架设计 看到上图, 许多人常被其外表所迷惑了, 认为从图 6-3 到图 6-5 是变复杂了, 怎么会是变精致了呢? 这就更凸显设计模式之美的重要性了 当我们心中怀有 Factory Method 模式时, 就会觉得上图 6-5 是精致而不是复杂了 现在, 兹以 Java 程序码来实现上述的图 6-5 << 撰写程序 >>

11 第 6 章 Abstract Factory 樣式 147 Step-1. 建立一个 Java 应用程序项目 :Ex06-01 Step-2. 撰写 AF 的各类别 // Product.java public abstract class Product { public void template_method() { hook_method(); } protected abstract void hook_method(); } // Factory.java public abstract class Factory { public abstract Product createproduct(); } // Client.java public abstract class Client{ protected Factory fa; private Product obj; public void AnOperation(){ FactoryMethod(); obj = fa.createproduct(); obj.template_method(); } public abstract void FactoryMethod(); } Step-3. 撰写 AP 的各类别 // ConcreteProduct.java public class ConcreteProduct extends Product { protected void hook_method() { System.out.println("ConcreteProduct..."); }}

12 148 Google Android 設計招式之美 // ConcreteFactory.java public class ConcreteFactory extends Factory{ public ConcreteProduct createproduct() { return new ConcreteProduct(); }} // ConcreteClient.java public class ConcreteClient extends Client { public void FactoryMethod() { fa = new ConcreteFactory(); }} Step-4. 撰写 JMain 类别 // JMain.java public class JMain { public static void main(string[] args) { Client c = new ConcreteClient(); c.anoperation(); }} 此应用程序实现了上图 6-5 的结构 它含有两项特色 : 因为框架里的类别都没有用到应用类别及其数据或函数之名称, 所以可以开发在先, 而后才开发应用类别 这也是 变与不变分离 之美妙效果 因为 ConcreteClient 类别没有用到 ConcreteProduct 类别之名称 ( 即不知而亦能用 ), 所以负责撰写 ConcreteProduct 类别的开发者能随时更改此类别的名称, 而不会牵动 ConcreteClient 类别 如此创造了 ConcreteProduct 类别名称变动的自由度, 也就是高度的互换性

13 第 6 章 Abstract Factory 樣式 介绍 Abstract Factory 模式 由于一个父类别能够衍生出多个子类别, 所以上图 6-5 的美好结构可以加以扩充, 如下图 : 图 6-6 美好结构的扩充 这将美好结构加以扩充到整个 Product 类别继承体系 在 GoF 的 <<Design Patterns>> 一书里, 称之为 Abstract Factory 模式, 如下图所示 :

14 150 Google Android 設計招式之美 图 6-7 GoF 的 Abstract Factory 模式图 上图的 Client 只用到父类别 AbstractProductA 和 AbstractProductB, 而不会用到其子类别 ( 如 ProductA1 ProductA2 等 ) 的类别名称 数据名称或函数名称 因此,Client 与 Product 类别体系的子类别之间是低度相依 (Loosely-coupled) 的, 这是使用 Abstract Factory 模式时所获得的美好效果

15 第 6 章 Abstract Factory 樣式 Android 框架与 Abstract Factory 模式 Abstract Factory 模式范例在 Android 里,Activity 的子类别通常扮演 Client 的角色 而 Service 的子类别常常扮演着启动后端服务模块 ( 例如 MediaPlayer 模块 ) 的任务, 其角色与 Abstract Factory 模式的 Factory 类别是一致的, 如下图所示 :

16 152 Google Android 設計招式之美 图 6-8 Android 的 Abstract Factory 模式之例 兹撰写一个 Android 应用程序来实现上图 6-8 << 操作情境 >> 此程序执行时, 呈现如下画面 : << 撰写程序 >> Step-1. 建立一个 Android 应用程序项目 :Ex06-02 Step-2. 撰写 mp3player 类别 // mp3player.java package com.misoo.pkzz; import android.content.context; import android.media.mediaplayer; import android.os.binder; import android.os.parcel; import android.util.log;

17 第 6 章 Abstract Factory 樣式 153 public class mp3player extends Binder{ private MediaPlayer mplayer = null; private Context ctx; public mp3player(context cx){ ctx= cx; public boolean ontransact(int code, Parcel data, Parcel reply, int flags) throws android.os.remoteexception { if(code == 1) this.play(); else if(code == 2) this.stop(); return true; } public void play() { if(mplayer!= null) return; mplayer = MediaPlayer.create(ctx, R.raw.test_cbr); try { mplayer.start(); } catch (Exception e) { Log.e("StartPlay", "error: " + e.getmessage(), e); } } public void stop(){ if (mplayer!= null) { mplayer.stop(); mplayer.release(); mplayer = null; } }} Step-3. 撰写 mp3service_factory 类别 // mp3service_factory.java package com.misoo.pkzz; import android.app.service; import android.content.intent; import android.os.ibinder; public class mp3service_factory extends Service { private IBinder mbinder = public void oncreate() { mbinder = new mp3player(getapplicationcontext()); public IBinder onbind(intent intent) { return mbinder; }} Step-4. 撰写 Client 类别 // Client.java package com.misoo.pkzz; import android.app.activity; import android.content.componentname; import android.content.context; import android.content.intent;

18 154 Google Android 設計招式之美 import android.content.serviceconnection; import android.graphics.color; import android.os.bundle; import android.os.ibinder; import android.os.remoteexception; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.linearlayout; import android.widget.textview; public class Client extends Activity implements OnClickListener { private final int WC = LinearLayout.LayoutParams.WRAP_CONTENT; private final int FP = LinearLayout.LayoutParams.FILL_PARENT; private static Client appref = null; private Button btn, btn2, btn3; public TextView tv; private IBinder ib; public static Client getapp() { return appref; } public void btevent(string data) { settitle(data); } public void oncreate(bundle icicle) { super.oncreate(icicle); appref = this; LinearLayout layout = new LinearLayout(this); layout.setorientation(linearlayout.vertical); btn = new Button(this); btn.setid(101); btn.settext("play"); btn.setbackgroundresource(r.drawable.heart); btn.setonclicklistener(this); LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(90, 45); param.topmargin = 10; layout.addview(btn, param); btn2 = new Button(this); btn2.setid(102); btn2.settext("stop"); btn2.setbackgroundresource(r.drawable.heart); btn2.setonclicklistener(this); layout.addview(btn2, param); btn3 = new Button(this); btn3.setid(103); btn3.settext("exit"); btn3.setbackgroundresource(r.drawable.exit_blue); btn3.setonclicklistener(this); layout.addview(btn3, param); tv = new TextView(this); tv.settextcolor(color.white); tv.settext("ready"); LinearLayout.LayoutParams param2

19 第 6 章 Abstract Factory 樣式 155 = new LinearLayout.LayoutParams(FP, WC); param2.topmargin = 10; layout.addview(tv, param2); setcontentview(layout); // startservice(new Intent(this, mp3service_factory.class)); bindservice(new Intent(Client.this, mp3service_factory.class), mconnection, Context.BIND_AUTO_CREATE); } private ServiceConnection mconnection = new ServiceConnection() { public void onserviceconnected(componentname classname, IBinder ibinder) { ib = ibinder; } public void onservicedisconnected(componentname classname) {} }; public void onclick(view v) { switch (v.getid()) { case 101: tv.settext("playing audio..."); settitle("mp3 Music"); try { ib.transact(1, null, null, 0); } catch (RemoteException e) { e.printstacktrace(); } break; case 102: tv.settext("stop"); try { ib.transact(2, null, null, 0); } catch (RemoteException e) { e.printstacktrace(); } break; case 103: finish(); break; } }} << 说明 >> 说明此程序的 Activity 抽象类别反向呼叫到其 Client 子类别的 oncreate() 函数 此函数里的指令 : startservice(new Intent(this, mp3service_factory.class)); 就启动了 Service 抽象类别, 反向呼叫了 mp3service_factory 子类别的 oncreate() 函数, 诞生了 mp3player 类别之对象 再来执行到指令 : bindservice(new Intent(Client.this, mp3service_factory.class), mconnection, Context.BIND_AUTO_CREATE);

20 156 Google Android 設計招式之美 在透过 Service 抽象类别, 反向呼叫了 mp3service_factory 子类别的 onbind() 函数, 取得了 mp3player 对象的接口参考 (Reference) 值 此时会反向呼叫 Client 类别里的 onserviceconnected() 函数 : private ServiceConnection mconnection = new ServiceConnection() { public void onserviceconnected(componentname classname, IBinder ibinder) { ib = ibinder; } public void onservicedisconnected(componentname classname) {} }; 就将 mp3player 对象的接口参考值回传给 ib 变量 于是,ib 就参考到 mp3player 对象的接口 ( 即 IBinder) 了 此时,Service( 以及 mp3service_factory 类别 ) 父 子类别就功成身退了 他们就展现了 Abstract Factory 模式的结构及功能, 替 Client 诞生了 mp3player 对象, 并且传回其参考值 现在,Client 已经取得 mp3player 对象之接口参考值了 接下来, 使用者按下 <play> 按钮时, 就反向呼叫到 onclick() 函数, 其内之指令 : ib.transact(1, null, null, 0); 就呼叫到 IBinder 接口里的 transact() 函数, 进而反向呼叫到 mp3player 的 ontransact() 函数 请留意,Client 类别只使用到 IBinder 接口而已, 并未使用到 Binder mp3player 等的类别名称 变量名称或函数名称, 维持了 Binder mp3player 等类别的高度的变动自由度, 也实现了 不知而亦能用 之效果 Abstract Factory 与 Observer 模式之组合虽然上述的 Android 范例程序, 主要是介绍如何心中怀着 Abstract Factory 模式而去欣赏 Android 的 Service 父子类别与 Binder 父子类别之复杂关系 ( 表面看来 ) 然而, 你还可以看到 Abstract Factory 模式与 Observer 模式的联合运用 例如下述之指令 :

21 第 6 章 Abstract Factory 樣式 157 bindservice(new Intent(Client.this, mp3service_factory.class), mconnection, Context.BIND_AUTO_CREATE); private ServiceConnection mconnection = new ServiceConnection() { public void onserviceconnected(componentname classname, IBinder ibinder) { ib = ibinder; } public void onservicedisconnected(componentname classname) {} }; 这就是 Observer 模式的运用, 让 Service 类别能反向呼叫回来, 才能顺利把 mp3player 对象的接口参考值回传给 Client 类别 此外, 从指令 : btn2.setonclicklistener(this); 也可以看出来它也是 Observer 模式之运用 Android 架构之美就是来自于多种设计模式的美妙组合 無論在邊疆 城市 海島 山區 鄉下, 都能學到最好的 Android 架構體系知識 請聽聽高煥堂老師的在線 (online) 課程,100 小時課程僅收 RMB 2250 元, 高老師 37 年來軟件編程功力和精華盡在其中 高老師還錄製了 18 小時, 非常珍貴的 " 架構師的策略思考 " 視頻, 放入上述 100 小時的 on-line 課程裡, 歡迎試聽 :

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

Android Service

Android Service Android Service- 播放音樂 建國科技大學資管系 饒瑞佶 2013/7 V1 Android Service Service 是跟 Activity 並行 一個音樂播放程式若沒使用 Service, 即使按 home 鍵畫面離開之後, 音樂還是照播 如果再執行一次程式, 新撥放的音樂會跟先前撥放的一起撥, 最後程式就會出錯 執行中的程式完全看不到! 但是, 寫成 Service 就不同了

More information

Microsoft Word - G3_BK_Ch06-8.doc

Microsoft Word - G3_BK_Ch06-8.doc 第 6 章抽象類別 125 第二篇 抽象与接口之应用 围棋国宝吴清源说 : 整体 和谐与创新 是棋艺的真谛 接口 就像红绿灯及斑马线, 创造了交通的和谐与秩序 126 Android 的對象技術 (OOP) 第 6 章抽象類別 127 Android 的對象技術教材下載 128 Android 的對象技術 (OOP) 第 6 章 抽象类别 (Abstract Class) 6.1 抽象类别与继承体系

More information

Microsoft Word - G3_BK_Ch13-8.doc

Microsoft Word - G3_BK_Ch13-8.doc 第 13 章对象的多重接口 273 274 Android 的对象技术 (OOP) Android 的對象技術教材下載 第 13 章对象的多重接口 275 13 第章 对象的多重接口 13.1 复习接口之观念 13.2 复习 Java 的接口观念 13.3 Android 的多重接口之例 13.4 多重接口与转换 13.5 Android 的多重接口转换之例 13.6 应用于 C/C++ 276 Android

More information

教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 學校系所 : 樹德科技大學資訊工程學系

教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 學校系所 : 樹德科技大學資訊工程學系 教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 (s11639104@stu.edu.tw) 學校系所 : 樹德科技大學資訊工程學系 實驗目的 本實驗的目的在於讓同學們可以了解 Android 系統核心內部的行程通訊的原理, 透過呼叫系統提供的其中一樣服務

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

Microsoft Word - 004_Android線程模式介紹.doc

Microsoft Word - 004_Android線程模式介紹.doc Android 線程模式简介 基礎概念進程與線程在 Android 框架裡, 一個應用套件 (Application Package) 通常含有多個 Java 類 (Class), 這些類可以在同一個進程 (Process) 裡執行 ; 也可以在不同的進程裡執行 基於 Linux 的安全限制, 以及進程的基本特性 ( 例如, 不同進程的位址空間是獨立的 ), 如果兩個類 ( 或其對象 ) 在同一個進程裏執行時,

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

建模与图形思考

建模与图形思考 F06_c 观摩 :ContentProvider 基於軟硬整合觀點 架构與 DB 引擎移植方法 ( c) By 高煥堂 4 通用性基类 ContentProvider 基於軟硬整合觀點 的使用范例 刚才的范例里, 我们直接使用 DataPersist 类的接口来与 SQLite 沟通 本节将替 DataPersist 配上 ContentProvider 基类, 让 Client 能透过 ContentProvider

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

(Microsoft Word - G3_BK_Ch04_\303\376\247O\304~\251\323\273P\253\312\270\313\251\312.doc)

(Microsoft Word - G3_BK_Ch04_\303\376\247O\304~\251\323\273P\253\312\270\313\251\312.doc) 第 4 章類別繼承與封裝性 107 108 Android 的對象技術 (OOP) Android 的對象技術教材下載 第 4 章類別繼承與封裝性 109 第 4 章 类别继承与封装性 4.1 公用与私有数据 4.2 公用与私有函数 4.3 Android 的类别封装性之例 4.4 应用于 C/C++ 110 Android 的對象技術 (OOP) 4.1 公用与私有数据 基于对象的 封装性 (Encapsulation)

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

建模与图形思考

建模与图形思考 C03_c 基 於 軟 硬 整 合 觀 點 JNI: 从 C 调 用 Java 函 数 ( c) By 高 煥 堂 3 How-to: 基 於 軟 硬 整 合 觀 點 从 C 调 用 Java 函 数 如 果 控 制 点 摆 在 本 地 C 层, 就 会 常 常 1. 从 本 地 C 函 数 去 调 用 Java 函 数 ; 2. 从 本 地 C 函 数 去 存 取 Java 层 对 象 的 属 性

More information

Microsoft Word - GoF-ch02-8-hook-ok.doc

Microsoft Word - GoF-ch02-8-hook-ok.doc 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 39 40 Google Android 設計招式之美 認識高煥堂老師 請看 4 分鐘演講視頻 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 41 第 2 章 Android 框架与应用 类别的接合 : 卡榫 (Hook) 函数 2.1 前言 2.2 何谓卡榫 (Hook) 函数 2.3

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);

More information

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

JavaIO.PDF

JavaIO.PDF O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6: Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

JBuilder Weblogic

JBuilder Weblogic JUnit ( bliu76@yeah.net) < >6 JUnit Java Erich Gamma Kent Beck JUnit JUnit 1 JUnit 1.1 JUnit JUnit java XUnit JUnit 1.2 JUnit JUnit Erich Gamma Kent Beck Erich Gamma Kent Beck XP Extreme Programming CRC

More information

手说TTS开发指南

手说TTS开发指南 手说 TTS 开发指南 v1.3 2011 年 6 月 版权所有 : 手说工作室 shoushuo.com 版本时间作者说明 1.0 2010-11-15 张波 1.1 2010-12-27 在 ondestroy 方法 unbindservice 1.2 2010-12-30 1.3 2011-6-12 去掉 TTS 初始化 ; ttsservice.initialize() 方法调用添加接口方法

More information

Microsoft Word - G3_BK_Ch08-8.doc

Microsoft Word - G3_BK_Ch08-8.doc 第 8 章纯粹抽象类别与接口 173 174 Android 的对象技术 (OOP) Android 的對象技術教材下載 第 8 章纯粹抽象类别与接口 175 第 8 章 纯粹抽象类别 与接口 (Interface) 8.1 认识 纯粹抽象类别 8.2 从 纯粹抽象类别 到 接口 8.3 Android 的接口之例 8.4 应用于 C/C++ 176 Android 的对象技术 (OOP) 8.1

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,

More information

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj Message Transition 5-1 5-2 DataInputStream Class 5-3 DataOutputStream Class 5-4 PrintStream Class 5-5 (Message Transition) (Exercises) Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream

More information

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 JAVA 程 序 设 计 ( 肆 ) 徐 东 / 数 学 系 使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 使 用 Java class 代 表 保 险 箱 public class SaveBox 类 名 类 类 体 实 现 封 装 性 使 用 class SaveBox 代 表 保

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

Database_001

Database_001 作者 : 林致宇日期 :2011/10/26 主要參考來源 : http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applicat ions/ 問題 : 如在存取一個已經建立好的資料庫? 解答 : 有一些應用程式會需要讀取已經建立好的資料庫, 例如一個試題測驗應用程式, 裡面的試題可能已經於電腦上, 使用任何的

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

Dynamic Layout in Android

Dynamic Layout in Android Dynamic Layout in Android 建國科技大學資管系 饒瑞佶 2013/5 V1 Layout 多半都透過 res/layout/xml 格式設定來達成 Android 是 OOP, 所以可以動態產生 Layout 重點是 Layout 的階層關係 (Hierarchy) 需要處理對應事件 最後一樣用 setcontentview 加入 Layout 一 加入現有 Layout 中

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)

More information

Microsoft Word - G3_BK_Ch12-8.doc

Microsoft Word - G3_BK_Ch12-8.doc 第 12 章线程 (Thread) 对象 251 第三篇 进阶技术应用 Android 应用架构含有各式各样的接口, 例如 IBinder ContentProvider 等等 只要将我们的组件配上这些接口, 就能与其它组件融为一体了 252 Android 的对象技术 (OOP) 第 12 章线程 (Thread) 对象 253 E-mail: misoo.tw@gmail.com 254 Android

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

使用MapReduce读取XML文件

使用MapReduce读取XML文件 使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

IoC容器和Dependency Injection模式.doc

IoC容器和Dependency Injection模式.doc IoC Dependency Injection /Martin Fowler / Java Inversion of Control IoC Dependency Injection Service Locator Java J2EE open source J2EE J2EE web PicoContainer Spring Java Java OO.NET service component

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

建立Android新專案

建立Android新專案 Android 智 慧 型 手 機 程 式 設 計 Android WebService 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 2013/5 V3 2014/10 v4 提 醒 這 節 的 內 容 針 對 的 是 MS 的 Web Service 或 是 使 用 SOAP(Simple Object Access Protocol) 標 準 建 立

More information

untitled

untitled JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE

More information

javaexample-02.pdf

javaexample-02.pdf n e w. s t a t i c s t a t i c 3 1 3 2 p u b l i c p r i v a t e p r o t e c t e d j a v a. l a n g. O b j e c t O b j e c t Rect R e c t x 1 y 1 x 2 y 2 R e c t t o S t r i n g ( ) j a v a. l a n g. O

More information

(Microsoft Word - G02_\261\265\244f??\244\247\254\374_7??\245\316\255S\250\322_ok.doc)

(Microsoft Word - G02_\261\265\244f??\244\247\254\374_7??\245\316\255S\250\322_ok.doc) G02_ 接口设计之美 _7 个应用范例 內容 : 1. 范例 ( 一 ):Use Case 分析 2. 范例 ( 二 ):iphone 手机访问 Android 智能电视 3. 范例 ( 三 ): 封装通信协议 4. 范例 ( 四 ): 维护底层或后台模块的变动自由度 5. 范例 ( 五 ): 软硬整合开发 6. 范例 ( 六 ): 微信 (We Chat) 平台整合家庭物联网 7. 范例 ( 七

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 :

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 : EditText 实现城市搜索 1801210778 邹宇航 摘要 : 使用 EditText 实现搜索城市的功能, 以此为依据更新 ListView 1. 效果图 : 2. 主要步骤 (1) 在 select-city.xml 布局文件中中添加 EditText 控件用作搜索框, 然后添加 ListView 控件用来显示城市名字内容 代码如下 : 预览图 : (2) 在 SelectCity.java

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

Microsoft Word - Broker.doc

Microsoft Word - Broker.doc Broker 模式 采用 broker 模式对分布式计算进行简单模拟 系统在一个进程内模拟分布式环境, 因此不涉及网络编程和进程间通信,Broker 通过本地函数调用的方式实现 request 和 response 的转发 采用 broker 模式对分布式计算进行简单的模拟, 要求如下 : 设计四个 server, 一个 server 接收两个整数, 求和并返回结果, 一个 server 接收两个整数,

More information

(Microsoft Word - G01_\261\265\244f??\244\247\254\374_\245N?\263y\247\316\252\272\250\244\246\342_ok.doc)

(Microsoft Word - G01_\261\265\244f??\244\247\254\374_\245N?\263y\247\316\252\272\250\244\246\342_ok.doc) G01_ 接口设计之美 _ 代码造形的角色 1. 代码造形的历史 : 从函数 类到 EIT 2. 什么是代码造形? 3. 代码造形的用处 4. 大家熟悉的 2 种代码造形 : 函数和类 5. 介绍新的 EIT 代码造形 5.1 接口是主角 :EIT 呈现接口之美 5.2 EIT 造形的重复组合 5.3 为什么需要要有两个配角呢? 1 1. 代码造形的历史 : 从函数 类到 EIT 1970 年代的代表性语言就是

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 1Z0-854 Title : Java Standard Edition 5 Programmer Certified Professional Upgrade Exam Version : Demo 1 / 12 1.Given: 20. public class CreditCard

More information

(procedure-oriented)?? 2

(procedure-oriented)?? 2 1 (procedure-oriented)?? 2 (Objected-Oriented) (class)? (method)? 3 : ( 4 ???? 5 OO 1966 Kisten Nygaard Ole-Johan Dahl Simula Simula 爲 6 Smalltalk Alan Kay 1972 PARC Smalltalk Smalltalk 爲 Smalltalk 爲 Smalltalk

More information

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之 臺 北 市 大 安 高 級 工 業 職 業 學 校 資 訊 科 一 百 零 一 學 年 度 專 題 製 作 報 告 ------ 以 Android 製 作 ------ ----- 連 線 塔 防 遊 戲 ------ Tower defense game using Internet technology 班 級 : 資 訊 三 甲 組 別 : A9 組 組 員 : 葉 冠 麟 (9906129)

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

三种方法实现Hadoop(MapReduce)全局排序(1)

三种方法实现Hadoop(MapReduce)全局排序(1) 三种方法实现 Hadoop(MapReduce) 全局排序 () 三种方法实现 Hadoop(MapReduce) 全局排序 () 我们可能会有些需求要求 MapReduce 的输出全局有序, 这里说的有序是指 Key 全局有序 但是我们知道,MapReduce 默认只是保证同一个分区内的 Key 是有序的, 但是不保证全局有序 基于此, 本文提供三种方法来对 MapReduce 的输出进行全局排序

More information

Microsoft Word - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B 25 9 2008 9 M ICROEL ECTRON ICS & COMPU TER Vol. 25 No. 9 September 2008 J ava 1,2, 1,2, 1,2 (1, 330022 ; 2, 330022) :,. Apla - Java,,.. : PAR ;Apla - Java ; ;CMP ; : TP311 : A : 1000-7180 (2008) 09-0018

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

Microsoft Word - 物件導向編程精要.doc

Microsoft Word - 物件導向編程精要.doc Essential Object-Oriented Programming Josh Ko 2007.03.11 object-oriented programming C++ Java OO class object OOP Ruby duck typing complexity abstraction paradigm objects objects model object-oriented

More information

Learning Java

Learning Java Java Introduction to Java Programming (Third Edition) Prentice-Hall,Inc. Y.Daniel Liang 2001 Java 2002.2 Java2 2001.10 Java2 Philip Heller & Simon Roberts 1999.4 Java2 2001.3 Java2 21 2002.4 Java UML 2002.10

More information

基于CDIO一体化理念的课程教学大纲设计

基于CDIO一体化理念的课程教学大纲设计 Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF> 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 考 试 2009 年 上 半 年 软 件 设 计 师 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答

More information

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题 2009 年 3 月 全 国 计 算 机 等 级 考 试 笔 试 试 卷 二 级 Java 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟, 满 分 100 分 ) 一 选 择 题 ( 每 题 2 分, 共 70 分 ) 下 列 各 题 A) B) C) D) 四 个 选 项 中, 只 有 一 个 选 项 是 正 确 的 请 将 正 确 选 项 填 涂 在 答 题 卡 相 应 位 置 上,

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

untitled

untitled Inside ASP.NET 2.0- ASP.NET 1.1 2. 理念 讀 了 了 度 讀 了 理 類 來 來說 流 了 來 來 來 來 理 來 不 讀 不 不 力 來參 流 讀 了 異 行 來了 錄 行 不 了 來 了 來 行 論說 了 更 不 例 來了 力 行 樂 不 說 兩 例 利 來 了 來 樂 了 了 令 讀 來 不 不 來 了 不 旅行 令 錄 錄 來 了 例 來 利 來 ManagerProvide

More information

Microsoft Word - A201103-528_1299547322.doc

Microsoft Word - A201103-528_1299547322.doc 5 10 15 20 25 30 基 于 Android 平 台 的 人 机 交 互 的 研 究 与 实 现 郁 亚 男 ( 北 京 邮 电 大 学 软 件 学 院, 北 京 100876) 摘 要 : 随 着 计 算 的 发 展, 计 算 变 得 越 来 越 自 由, 在 资 源 使 用 方 面 也 越 来 越 灵 活 移 动 终 端 由 于 无 线 通 信 网 络 传 输 速 率 的 提 高,

More information

Swing-02.pdf

Swing-02.pdf 2 J B u t t o n J T e x t F i e l d J L i s t B u t t o n T e x t F i e l d L i s t J F r a m e 21 2 2 Swing C a n v a s C o m p o n e n t J B u t t o n AWT // ToolbarFrame1.java // java.awt.button //

More information

目 录 高 考 改 革 1. 上 海 浙 江 高 考 方 案 公 布, 对 比 研 判 高 考 改 革 趋 势 (1) 2. 尹 后 庆 : 努 力 释 放 高 考 改 革 对 高 中 教 育 带 来 的 红 利 (7) 3. 解 读 高 考 改 革 方 案 中 的 综 合 素 质 评 价, 技 术 难 点 如 何 破 题 (9) 4. 刘 坚 : 充 分 发 挥 成 长 记 录 的 教 育 功 能

More information

Microsoft Word - ASM SDK 說明文件

Microsoft Word - ASM SDK 說明文件 System Monitor SDK (for Android) 開發者指南說明書 1. 技術項目簡介 經由簡化的應用程式介面 (Application Programming Interface), 可 提供給 Android 應用程式開發者開發基於 System monitor 的應用程式 2. 應用範圍說明 本技術可應用於具備 Android 系統 2.3.3 以上版本的 Android 嵌入式裝

More information

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2 PowerBuilder 9 PowerBuilder Native Interface(PBNI) PowerBuilder 9 PowerBuilder C++ Java PowerBuilder 9 PBNI PowerBuilder Java C++ PowerBuilder NVO / PowerBuilder C/C++ PowerBuilder 9.0 PowerBuilder Native

More information

Android Android Android SDK iv

Android Android Android SDK iv Android Market Google Android SDK Apple Google Microsoft b2c b 2010 Internet Android how why iii Android 240... Android Android SDK iv Android Market Google Android SDK Visual C++ Java N-tier J2EE Unix/Linux

More information

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public

More information

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

题目

题目 开发 Android 应用 目的 : 帮助大家了解 Android 平台开发 作者 : 王威威 技术爱好 : linux,qt, 嵌入式开发 MSN : wangweiweicdma@hotmail.com Email : wang.weiwei1@ztenc.com.cn wangjiecdma@126.com 下载开发资源 1 下载最新的 Android SDK http://code.google.com/android/download.html

More information

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 语 言 程 序 设 计 郑 莉 胡 家 威 编 著 清 华 大 学 逸 夫 图 书 馆 北 京 内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 握 语

More information

java2d-4.PDF

java2d-4.PDF 75 7 6 G r a d i e n t P a i n t B a s i c S t r o k e s e t P a i n t ( ) s e t S t o r k e ( ) import java.awt.*; import java.awt.geom.*; public class PaintingAndStroking extends ApplicationFrame { public

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

Microsoft PowerPoint - 協商談判(成大1040507) [相容模式]

Microsoft PowerPoint - 協商談判(成大1040507) [相容模式] 協 商 談 判 技 巧 國 立 台 南 大 學 行 政 管 理 系 余 明 助 教 授 兼 系 主 任 現 任 國 立 台 南 大 學 行 政 管 理 系 ( 所 ) 教 授 兼 系 主 任 經 歷 國 立 高 雄 應 用 科 技 大 學 人 力 資 源 發 展 研 究 所 副 教 授 長 榮 大 學 國 際 企 業 系 助 理 教 授 慈 愛 國 際 科 技 股 份 有 限 公 司 總 經 理 金

More information

38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

38 47995529 威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 1059003070 號 39 47995534 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民 1 08414159 惠 鴻 眼 鏡 行 桃 園 市 中 壢 區 福 德 里 中 華 路 一 段 186 號 1 樓 30,000 獨 資 宋 耀 鴻 105/04/27 府 經 登 字 第 1059003866 號 2 17891110 承 元 冷 氣 空 調 工 程 行 桃 園 市 桃 園 區 中 德 里 國 際 路 1 段 98 巷 50 號 2 樓 之 4 200,000 獨 資 詹 安 平

More information

目次 

目次  軟 體 工 程 期 末 報 告 網 路 麻 將 91703014 資 科 三 黃 偉 嘉 91703024 資 科 三 丘 祐 瑋 91703030 資 科 三 江 致 廣 1 目 次 壹 前 言 (Preface) P.4 貳 計 畫 簡 述 及 預 期 效 益 (Project Description and Expected Results) P.4 參 系 統 開 發 需 求 (System

More information

基于ECO的UML模型驱动的数据库应用开发1.doc

基于ECO的UML模型驱动的数据库应用开发1.doc ECO UML () Object RDBMS Mapping.Net Framework Java C# RAD DataSetOleDbConnection DataGrod RAD Client/Server RAD RAD DataReader["Spell"].ToString() AObj.XXX bug sql UML OR Mapping RAD Lazy load round trip

More information

BPS6.0 Web服务集成和短流程功能使用手册

BPS6.0 Web服务集成和短流程功能使用手册 PRIMETON TECHNOLOGIES, LTD. 上 海 普 元 信 息 技 术 有 限 责 任 公 司 BPS6.0 Web 服 务 集 成 和 短 流 程 使 用 手 册 2009-9-1 第 1 页 共 16 页 目 录 1 Web 服 务 集 成... 3 1.1 Web 服 务 简 述... 3 1.2 在 BPS 中 使 用 Web 服 务 功 能... 3 1.2.1 使 用 Web

More information

untitled

untitled 1 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object 參 類 都 object 參 object Boxing 參 boxing

More information

Chapter12 Derived Classes

Chapter12   Derived Classes 继 承 -- 派 生 类 复 习 1. 有 下 面 类 的 说 明, 有 错 误 的 语 句 是 : class X { A) const int a; B) X(); C) X(int val) {a=2 D) ~X(); 答 案 :C 不 正 确, 应 改 成 X(int val) : a(2) { 2. 下 列 静 态 数 据 成 员 的 特 性 中, 错 误 的 是 A) 说 明 静 态 数

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

Microsoft Word - 970617cppFinalSolution.doc

Microsoft Word - 970617cppFinalSolution.doc 國 立 台 灣 海 洋 大 學 資 訊 工 程 系 C++ 程 式 設 計 期 末 考 參 考 答 案 姓 名 : 系 級 : 學 號 : 97/06/17 考 試 時 間 :10:00 12:10 試 題 敘 述 蠻 多 的, 看 清 楚 題 目 問 什 麼, 針 對 重 點 回 答 是 很 重 要 的 ; 不 確 定 的 請 一 定 要 當 場 提 出 來, 不 要 白 花 力 氣 在 誤 會

More information

附录J:Eclipse教程

附录J:Eclipse教程 附 录 J:Eclipse 教 程 By Y.Daniel Liang 该 帮 助 文 档 包 括 以 下 内 容 : Eclipse 入 门 选 择 透 视 图 创 建 项 目 创 建 Java 程 序 编 译 和 运 行 Java 程 序 从 命 令 行 运 行 Java Application 在 Eclipse 中 调 试 提 示 : 在 学 习 完 第 一 章 后 使 用 本 教 程 第

More information

2007

2007 2007 年 上 半 年 软 件 评 测 师 考 试 浅 析 作 者 : 陈 嘉 祥 方 耀 公 司 : 广 东 亿 迅 科 技 有 限 公 司 ( 质 量 管 理 部 ) 1 简 介 1.1 目 的 本 文 章 主 要 介 绍 软 件 评 测 师 考 试 的 范 围 内 容 以 及 其 重 要 性, 还 有 相 关 的 试 题 分 析 1.2 适 用 范 围 有 意 参 与 或 将 来 有 意 参

More information

Adobe® Flash® 的 Adobe® ActionScript® 3.0 程式設計

Adobe® Flash® 的 Adobe® ActionScript® 3.0 程式設計 337 18 Adobe Flash CS4 Professional MovieClip ActionScript Flash ActionScript Flash Flash Flash MovieClip MovieClip ActionScript ( ) MovieClip Flash Sprite ActionScript MovieClip ActionScript 3.0 Shape

More information

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class 踩地雷遊戲 高慧君南港高中 開啟專案 MineSweep 任務一 : 產生 30X20 個磚塊編輯 Table 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.arraylist; Write a description of class MyWorld

More information