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

Size: px
Start display at page:

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

Transcription

1 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 39

2 40 Google Android 設計招式之美 認識高煥堂老師 請看 4 分鐘演講視頻

3 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 41 第 2 章 Android 框架与应用 类别的接合 : 卡榫 (Hook) 函数 2.1 前言 2.2 何谓卡榫 (Hook) 函数 2.3 Android 的卡榫函数范例 ( 一 ) 2.4 Android 的卡榫函数范例 ( 二 ) 2.5 Android 的卡榫函数范例 ( 三 ) 2.6 卡榫函数与模式之关系 ---- 以 Factory Method 和 Template Method 模式为例

4 42 Google Android 設計招式之美 2.1 前言 近十年来, 应用框架抢走了操作系统 (OS, Operating System) 的的丰采, 成为软件的主板 (Software Motherboard) 角色, 与硬件主板互相辉映, 形成现代计算机系统 ( 包括手机 ) 的主要软硬件整合架构 君不见 : 做软件的 Microsoft 公司花了巨额经费提供 Windows-based 的.NET 应用框架 做硬件的新国众公司也花了巨大心力研发 OpenMOKO 应用框架 做网络服务的 Google 公司也大力推广 Android 应用框架 当各种不同型态的公司不约而同地聚焦于应用框架之时, 到底大家对应用框架的观点和看法为何呢? 观点与看法会影响你的做法和行为 ( 包括你对它的用法 ), 而行为会影响到最终的结果 为了让大家能厘清对 Android 应用框架的观点, 在我写的第 1 本 Android 书 ( 即 <<Google Android 应用框架原理与程序设计 36 技 >>) 里, 我就以应用框架概念和机制为出发点, 用心阐述应用框架的角色和用法, 以及其应用程序的写法 此外我也写了一篇名为 :<< 基类与愚公移山 >> 的文章 ( 请看附录 #5), 提醒大家调整一下观点, 反思一下自己除了扮演愚公之外, 或许还有更高尚角色也说不定 在该文章里, 也引用 << 礼记. 学记篇 >> 的智慧之言 : 良弓之子, 必学为箕 以中华文化来间接说明为何上述各种不同型态的公司会不约而同地聚焦于应用框架 言归正传, 到底基于何种期待 目的或需求而对应用框架特别青睐呢? 其中的关键在于 : 1. 框住应用程序的 形 (Form) 或架构 (Architecture) 2. 以及抓住应用程序的 控制点 (Control) 其实, 这两点是一体的两面 唯有抓住控制点才能有效框住应用程序的型 谈到这里, 跑出了两个问题 : Why: 为何需要去框住应用程序的型呢? 到底会有多少效益呢? 关于这一点, 我在另一篇文章 :<< 迎接 IT 第三波 : 移动时代 >> 文章 ( 请

5 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 43 看附录 #3) 里, 就以 Oracle 数据库 微软的 Windows 以及长荣航运公司的货柜为例, 仔细阐述其中的道理, 请你阅读之 How-to: 采用什么技术或机制去发挥 框住 的力量呢? 答案是 :IoC (Inversion of Control) 机制 这又称为 反向調用 机制, 它让框架里的抽象 (Abstract) 类别能与应用程序里的具体 (Concrete) 类别结合起来 由于许多嵌入式软件开发者以 C 语言为主, 而传统的 C 语言又没有提供面向对象 (OO, Object-Oriented) 机制, 因此面对 Android 这种以 OO 技术为基础的应用框架时, 无法体会 Android 应用框架的特性和角色, 而单纯地将它视为比较进步的 OS 其实在一般商业业务沟通上, 持着这个观点是合宜的 但是对于软硬件开发者来说, 就必须对应用框架有更具建设性的观点, 才能获得最佳的利益 也是基于这个理由, 笔者努力撰写了两本书, 分别从程序之撰写 ( 即 <<Android 与面向对象技术 >> 一书 ) 和框架设计模式 ( 即本书 ) 两个层面, 而说明 Android 应用框架成为万众瞩目的焦点的背后意义, 期盼你能深刻体会 Android 应用框架的特性和有建设性的用法 因此本书是从设计层面来解释 Android 框架之内涵 ; 在本章里, 将针对上述的第二项 ( 即 How-to) 来介绍 Android 框架是如何发挥其 框住 或 卡住 应用类别的 ; 以及其背后的 OO 技术和设计手艺 首先, 在本章里, 将从最基础的技术谈起, 这项基本技术就是用来实现上述的 框住 机制问题 在建筑界里, 自从商朝时期, 就有了类似的问题, 其解决之道就是 : 卡榫 在软件业里, 其解决之道就是 : 挂钩 (Hook) 函数 在本书里, 将采取 卡榫函数 做为 Hook 函数的同义辞或译词 卡榫函数是 Android 框架与应用类别的接合处 Android 依赖类别继承的可覆写 (Overridable) 函数来做为主要的卡榫函数 在框架里, 如何让抽象类与应用类别能分合自如, 是 Android 框架的核心目标 ; 所以, 卡榫函数是认识 Android 应用框架的起点

6 44 Google Android 設計招式之美 何谓卡榫 (Hook) 函数 所谓 卡榫, 就是用来接合两个东西的接口 如果两个东西于不同时间出现, 则一方会预留虚空, 给予另一边于未来时刻能以实体来填补该空间, 两者虚实相依, 就密合起来了 设计优良的卡榫, 可以让实体易于新陈代谢 抽换自如 (Plug and Play, 俗称 PnP) 卡榫函数对于 Android 是非常重要的, 因为 Android 是应用框架 (Application Framework, 简称 AF), 它与应用程序 (Application, 简称 AP) 是虚与实的两方, 而且两者是不同时间出现, 通常是前者先出现, 才能 框住 后者 因此,Android 必须藉由卡榫函数去预留虚空, 让后来的应用程序 (AP)

7 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 45 来填补该空间, 两者虚实相依, 就密合起来了 由于 Android 是面向对象 (Object-Oriented) 的应用框架 (AF), 其卡榫函数主要是落实为 C++ 或 Java 语言的可覆写函数 (Overridable Function) 例如 C++ 程序 : <<C++ 范例程序 >> //Ex02-01.cpp #include <iostream> using namespace std; class SalesPerson{ protected: double total_amt; public: SalesPerson( double a ) : total_amt(a) { virtual double bonus() const =0; ; class SalesEngineer : public SalesPerson { public: SalesEngineer(double a):salesperson(a) { virtual double bonus() const { return( total_amt * ); ; class SalesManager : public SalesPerson { public: SalesManager(double a):salesperson(a) { virtual double bonus() const { return( total_amt * ); ; void compute_bonus( const SalesPerson *ps ) { cout << "bonus:" << ps->bonus() << endl; int main() { SalesManager peter( ); SalesEngineer alvin( ), lily( ); compute_bonus( &peter ); compute_bonus( &alvin ); compute_bonus( &lily ); system("pause"); return EXIT_SUCCESS; 其中,SalesPerson 类别的 bonus() 虚拟函数就扮演了卡榫的角色, 做为父

8 46 Google Android 設計招式之美 子类别之间的接口 由于面向对象的 Android 应用框架非常依赖类别继承 (Class Inheritance) 机制, 所以像 bonus() 这种衔接父 子类别之卡榫函数, 在 Android 里处处可见 再来看看 Java 的范例程序 : <<Java 范例程序 >> Step-1. 建立一个 Java 应用程序项目 :Ex02-02 Step-2. 撰写各类别的程序代码 // SalesPerson.java public abstract class SalesPerson { protected double total_amt; public SalesPerson(double a) { total_amt = a; public abstract double bonus(); // SalesEngineer.java public class SalesEngineer extends SalesPerson { public SalesEngineer(double a) { super(a); public double bonus() { return total_amt * ; // SalesManager.java public class SalesManager extends SalesPerson { public SalesManager(double a) { super(a); public double bonus() { return total_amt * ;

9 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 47 // JMain.java public class JMain { static void compute_bonus( SalesPerson ps ) { System.out.println("bonus:" + ps.bonus()); public static void main(string[] args) { SalesManager peter = new SalesManager(20000); SalesEngineer alvin = new SalesEngineer(80000); SalesEngineer lily = new SalesEngineer(50000); compute_bonus( peter ); compute_bonus( alvin ); compute_bonus( lily ); 这 SalesPerson 类别的 bonus() 就是卡榫函数 当 SalesPerson 父类别被写入 AF 里时, 这个虚空的卡榫接口就成为 AF 与 AP 的衔接机制了

10 48 Google Android 設計招式之美 2.3 Android 的 Hook 函数范例 ( 一 ) 以上说明了 C++ 和 Java 如何实现卡榫函数, 接下来, 看看 Android 里的卡榫函数之例, 在 Android 的屏幕画面上想呈现出 ListView 窗口时, 通常会用到 Android 框架里的 3 个类别 : 图 2-1 Android 框架里的一些抽象类 这些抽象类皆含有许多个卡榫函数, 做为与其子类别的衔接口 例如, 在 Activity 类别里, 大家最熟悉它的 oncreate() 卡榫函数, 此外,Activity 还含有其它的卡榫函数 同样地,BaseAdapter 类别里也含有许多个卡榫函数, 而 getview() 就是其中之一 前面说过, 框架的抽象类设计在先, 之后才配上应用类别, 所以在撰写 Activity ListView 和 BaseAdapter 等类别时, 其开发者并不知道应用程序里的 ListView 窗口的内容, 所以预留了虚空给应用类别开发者去填补, 如下图 :

11 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 49 图 2-2 Android 框架与应用程序的接合 当应用程序执行时, 框架掌握整个控制权, 調用 myactivity 子类别的 oncreate() 函数, 询问应用类别开发者的见解 : 图 2-3 卡榫函数实现了 IoC( 一 )

12 50 Google Android 設計招式之美 框架设计者与应用类别开发者, 两者在不同的时间及空间 ( 即地点 ) 合作 框架设计者在设计应用框架时并不知道应用程序的 ListView 窗口里各个选项的长相 ( 文字或是图像等 ), 因为这长相的决定是来自于应用程序的用户 所以只有等到应用类别开发者动工之刻才会知道, 而框架设计者并不知道 于是, 框架设计师负责撰写抽象类 ( 如 BaseAdapter), 而应用类别开发者负责撰写子类别 ( 如 mystringadapter) 两者跨时间和空间的智能会合而成为一支完整好用的手机应用软件 例如, 当 AP 开发者知道他的 UI 将显示出单纯的文字型 ListView 窗口时, 就可以开始撰写 mystringadapter 子类别了 这就是所谓的 反向調用 或称为 控制反转 (IoC:Inversion of Control) 由于在设计 Activity 类别时, 有些关于最终客户的特殊需求尚无法得知, 只能留着虚空的卡榫函数 ( 即 Activity 的 oncreate() 函数 ); 等到其后的某一天, 最终客户的需求出现了, 应用程序开发者将之写入 myactivity 子类别的 oncreate() 函数里 于是, 当 Activity 类别进行反向調用到 myactivity 的 oncreate() 函数时,myActivity 的 实 恰好填补了 Activity 所预留的 虚 空 框架设计者与应用类别开发者双方的智能也融合为一了 如下图 : 图 2-4 Hook 函数实现了 IoC( 二 ) 当 Activity 要求显示 ListView 的内容时,ListView 就从 BaseAdapter 而反向

13 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 51 調用到 mystringadapter 的 getview() 等函数, 而取得显示的内容和长相了 Hook 函数实现了反向調用, 促进了虚实相依 因此, 它在框架里占有极为核心的地位 于此, 请看一个 Android 的范例 AP, 它将实现上述的图 2-4 之情境 : << 操作情境 >> 此 AP 执行时, 画面上显示出一个单纯的文字 ListView 窗口, 如下图 : << 撰写程序 >> Step-1. 建立一个 Android 程序项目 :Ex02-03 Step-2. 撰写 BaseAdapter 的子类别 :mystringadapter // mystringadapter.java package com.misoo.pkzz; import java.util.arraylist; import android.content.context; import android.graphics.color; import android.view.view; import android.view.viewgroup; import android.widget.baseadapter; import android.widget.textview; public class mystringadapter extends BaseAdapter { private Context ctx;

14 52 Google Android 設計招式之美 private ArrayList<String> coll; public mystringadapter(context context) { ctx = context; coll = new ArrayList<String>(); coll.add("hello!!"); public int getcount() { return public Object getitem(int position) { return public long getitemid(int position) { return public View getview(int position, View convertview, ViewGroup parent) { TextView tv; if (convertview == null) tv = new TextView(ctx); else tv = (TextView)convertView; tv.settextcolor(color.cyan); tv.setheight(45); tv.settextsize(26); tv.settext(coll.get(position)); return tv; Step-3. 撰写 Activity 的子类别 :myactivity // myactivity.java package com.misoo.pkzz; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.adapterview; import android.widget.listview; import android.widget.textview; import android.widget.adapterview.onitemclicklistener; public class myactivity extends Activity implements OnItemClickListener public void oncreate(bundle icicle) { super.oncreate(icicle); setcontentview(r.layout.main); ListView lv = new ListView(this); lv.setadapter(new mystringadapter(this)); lv.setonitemclicklistener(this); setcontentview(lv); public void onitemclick(adapterview<?> arg0, View arg1, int arg2, long arg3) { if(arg2 == 0) settitle(((textview)arg1).gettext()); else if(arg2 == 1) finish();

15 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 53 << 说明 >> 说明当此程序执行时, 框架先藉由 Activity 的卡榫函数 :oncreate() 反向調用了 myactivity 类别的 oncreate() 函数 其内之指令 : ListView lv = new ListView(this); lv.setadapter(new mystringadapter(this));.. setcontentview(lv); 这诞生了 ListView 和 mystringadapter 对象, 并建立如下关系 : Activity contentview ListView adapter BaseAdapter framework 图 2-5 框架定义了抽象类间之关系 此外, 执行 setcontentview(lv) 指令时, 还有一项动作是 : 藉由 BaseAdapter 的 4 个 Hook 函数 : getcount() getitemid() getitem() getview() 而反向調用了 mystringadapter 类别的 : getcount() 函数而得知此 ListView 含有 N 个细项 調用 N 次 getitem() 函数, 每次取得 Coll 里的一个对象内容 調用 N 次 getitemid() 函数, 询问该对象将出现在画面上 ListView 里的第几个细项 調用 N 次 getview() 函数, 每次取得一个 View 对象, 将其内容显示于画面上的 ListView 里

16 54 Google Android 設計招式之美 2.4 Android 的卡榫函数范例 ( 二 ) 上述画面上 ListView 里的长相是简单文字而已 你也能依样画葫芦, 撰写一个长相较美观的 ListView, 其范例程序如下 : << 操作情境 >> 此 AP 执行时, 画面上显示出一个较美观的 ListView 窗口, 如下图 : << 撰写程序 >> Step-1. 建立一个 Android 程序项目 :Ex02-04 Step-2. 撰写 Row 类别 // Row.java public class Row { private String text; private int resid; Row(String tx, int id){ text = tx; resid = id; public int getdwid() { return resid;

17 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 55 public String gettext() { return text; public boolean isselectable() { return true; Step-3. 撰写 BaseAdapter 的子类别 :myadapter // myadapter.java package com.misoo.ex02; import java.util.arraylist; import android.content.context; import android.graphics.color; import android.view.view; import android.view.viewgroup; import android.widget.baseadapter; import android.widget.imageview; import android.widget.linearlayout; import android.widget.textview; public class myadapter extends BaseAdapter { private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT; private Context ctx; private ArrayList<Row> coll; public myadapter(context context, ArrayList<Row> list) { ctx = context; coll = list; public int getcount() { return coll.size(); public Object getitem(int position) { return coll.get(position); public long getitemid(int position) { return position; public View getview(int position, View convertview, ViewGroup parent) { LinearLayout layout = new LinearLayout(ctx); layout.setorientation(linearlayout.horizontal); Row rw = (Row)coll.get(position); ImageView iv = new ImageView(ctx); iv.setimageresource(rw.getdwid()); iv.setpadding(0, 2, 5, 0); LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(WC, WC); layout.addview(iv, param); TextView txv = new TextView(ctx); txv.settext(rw.gettext()); txv.settextcolor(color.white); txv.settextsize(26); LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(WC, WC); param2.leftmargin = 5; param2.topmargin = 13; layout.addview(txv, param2);

18 56 Google Android 設計招式之美 return layout; Step-4. 撰写 Activity 的子类别 :myactivity // myactivity.java package com.misoo.ex02; import java.util.arraylist; import android.app.activity; import android.os.bundle; import android.view.view; import android.widget.adapterview; import android.widget.listview; import android.widget.adapterview.onitemclicklistener; public class myactivity extends Activity implements OnItemClickListener { private ArrayList<Row> public void oncreate(bundle icicle) { super.oncreate(icicle); setcontentview(r.layout.main); coll = new ArrayList<Row>(); coll.add(new Row("Play",R.drawable.icon) ); coll.add(new Row("Exit", R.drawable.icon2)); ListView lv = new ListView(this); lv.setadapter(new myadapter(this, coll)); lv.setonitemclicklistener(this); setcontentview(lv); public void onitemclick(adapterview<?> arg0, View arg1, int arg2, long arg3) { if(arg2 == 0) { Row rw = (Row)coll.get(arg2); settitle(rw.gettext()); else if(arg2 == 1) finish(); << 说明 >> 说明 Android 框架提供了 BaseAdapter 抽象类, 并设计了 getview() 等卡榫函数 于是, 框架就基于 BaseAdapter 类别的卡榫函数来与应用类别 myadapter 搭配起来了 此范例里的 myadapter 类别与上一个范例的 mystringadapter 类别属于不同的应用程序, 皆能与框架里的 BaseAdapter 抽象类相结合, 就发挥了卡榫函数

19 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 57 的功能了 2.5 Android 的卡榫函数范例 ( 三 ) 在上一节里, 已经从 Android 的 BaseAdapter 抽象类看到 getview() 等卡榫函数了 由于 Hook 函数是框架的基本机制, 所以在 Android 框架里, 处处可以见到它的身影 例如, 下述之范例程序 : << 操作情境 >> 此 AP 执行时, 画面上显示出一个 2D 图形, 如下 : 如果按下 <Exit> 按钮, 就结束了 << 撰写程序 >> Step-1. 建立一个 Android 程序项目 :Ex02-05

20 58 Google Android 設計招式之美 Step-2. 撰写 View 的子类别 :DrawView 类别 // DrawView.java package com.misoo.ppxx; import android.content.context; import android.graphics.canvas; import android.graphics.color; import android.graphics.paint; import android.view.view; public class DrawView extends View{ private Paint paint= new Paint(); DrawView(Context ctx) { protected void ondraw(canvas canvas) { super.ondraw(canvas); int line_x = 10; int line_y = 50; canvas.drawcolor(color.white); paint.setcolor(color.gray); paint.setstrokewidth(3); canvas.drawline(line_x, line_y, line_x+120, line_y, paint); paint.setcolor(color.black); paint.setstrokewidth(2); canvas.drawtext("drawview", line_x, line_y + 50, paint); int pos = 70; paint.setcolor(color.red); canvas.drawrect(pos-5, line_y - 5, pos+5, line_y + 5, paint); paint.setcolor(color.yellow); canvas.drawrect(pos-3, line_y - 3, pos+3, line_y + 3, paint); Step-3. 撰写 Button 的子类别 :exitbutton // exitbutton.java

21 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 59 package com.misoo.ppxx; import android.content.context; import android.graphics.canvas; import android.graphics.color; import android.graphics.paint; import android.widget.button; public class exitbutton extends Button{ public exitbutton(context ctx){ super(ctx); super.settext("exit"); super.settextcolor(color.red); protected void ondraw(canvas canvas) { Paint paint= new Paint(); paint.setstrokewidth(2); paint.setcolor(color.green); canvas.drawline(0, 5, 55, 5, paint); paint.setcolor(color.blue); canvas.drawline(25, 27, 75, 27, paint); super.ondraw(canvas); Step-4. 撰写 Activity 的子类别 :myactivity // myactivity.java package com.misoo.ppxx; import android.app.activity; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.linearlayout; import android.widget.radiogroup; public class myactivity extends Activity implements OnClickListener { private final int WC = protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); goto_state_1(); private void goto_state_1() { settitle("sate 1"); show_layout_01();

22 60 Google Android 設計招式之美 private void goto_state_2() { settitle("sate 2"); finish(); private void show_layout_01(){ LinearLayout layout_01 = new LinearLayout(this); layout_01.setorientation(linearlayout.vertical); LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(150, 200); param.leftmargin = 1; param.topmargin = 3; DrawView gv = new DrawView(this); layout_01.addview(gv,param); Button btn = new exitbutton(this); btn.setonclicklistener(this); LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(WC, WC); param2.leftmargin = 10; param2.topmargin = 5; layout_01.addview(btn,param2); setcontentview(layout_01); public void onclick(view v) { goto_state_2(); << 说明 >> 说明在 Android 的抽象类 View 里, 提供了 ondraw() 卡榫函数, 用来结合 DrawView 应用类别, 如下图 :

23 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 61 卡榫函數 图 2-6 View 抽象类的 ondraw() 卡榫函数 2.6 卡榫函数与模式模式之关系 ---- 以 Factory Method 和 Template Method 模式为例 卡榫 (Hook) 函数是父 子类别之间的卡榫接口处 在应用框架 (AF) 里有许多抽象 ( 不变 ) 的父 子类别, 需要卡榫函数来衔接 ; 此外, 在应用程序 (AP) 里也有各式各样的父 子类别, 它们也藉由卡榫函数来接合 所以处处可见到卡榫函数的身影 当然也常见父类别 ( 如上节范例里的 Button 及 View 父类别 ) 是位于 AF 里, 而其子类别是位于 ( 如上节范例里的 exitbutton 及 DrawView 子类别 ) 是位于 AP 里, 则卡榫函数就扮演框架与应用类别之间的卡榫功能了 Android 常用到的设计模式通常都涉及多个类别之间的合作模式, 也涵盖父 子类别之间的合作及沟通情形, 所以卡榫函数是框架设计模式里的重要机制, 因

24 62 Google Android 設計招式之美 此在本章里就得先介绍卡榫函数, 充分理解其特性和涵意, 才能领悟各种设计模式, 并进而活用 Android 框架 例如, 最简单的 Factory Method 模式 : 图 2-7 GoF 的 Factory Method 模式图 [ 附注 ] GoF 模式是指 Design Patterns: Elements of Reusable Object-Oriented Software 一书里所列举的 23 个模式 ( 请参阅第 1 章 ) 其中的 FactoryMethod() 就是一种卡榫函数 即使是最简单的 Android 程序, 都运用了上图的 Factory Method 模式, 而其幕后的台柱就是卡榫函数 例如下述 之范例程序 Ex02-06: << 操作情境 >> 此程序执行时, 画面上显示出 2D 图形, 如下 :

25 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 63 << 撰写程序 >> Step-1. 建立一个 Android 程序项目 :Ex02-06 Step-2. 撰写 View 的子类别 :GraphicView 类别 // GraphicView.java package com.misoo.pkcc; import android.content.context; import android.graphics.canvas; import android.graphics.color; import android.graphics.paint; import android.view.view; public class GraphicView extends View{ private Paint paint= new Paint(); GraphicView(Context ctx) { protected void ondraw(canvas canvas) { int line_x = 10; int line_y = 50; canvas.drawcolor(color.white); paint.setcolor(color.gray); paint.setstrokewidth(3); canvas.drawline(line_x, line_y, line_x+120, line_y, paint); paint.setcolor(color.black);

26 64 Google Android 設計招式之美 paint.setstrokewidth(2); canvas.drawtext(" 这是 GraphicView 绘图区 ", line_x, line_y + 50, paint); int pos = 70; paint.setcolor(color.red); canvas.drawrect(pos-5, line_y - 5, pos+5, line_y + 5, paint); paint.setcolor(color.yellow); canvas.drawrect(pos-3, line_y - 3, pos+3, line_y + 3, paint); Step-3. 撰写 Activity 的子类别 :GraphicActivity // GraphicActivity.java package com.misoo.pkcc; import android.app.activity; import android.os.bundle; public class GraphicActivity extends Activity { private GraphicView gv = public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); gv = new GraphicView(this); setcontentview(gv); << 说明 >> 说明此 GraphicActivity 类别里的 oncreate() 函数就是定义于 Activity 父类别里的卡榫函数 如下图所示 :

27 第 2 章 Android 框架與應用類別的接合 : 卡榫 (Hook) 函數 65 图 2-8 Factory Method 模式依赖于卡榫函数 当你仔细观察这 oncreate() 函数里的指令 : void oncreate(bundle savedinstancestate) { gv = new GraphicView(this); 你会发现了 Factory Method 模式的身影了 原来, 在 Activity 与 GraphicActivity 的父 子类别继承机制幕后, 运用了 Factory Method 模式 而这个 oncreate() 就是卡榫函数的角色, 它负责诞生 GraphicView 对象之任务 由于 oncreate() 也负有诞生应用类别对象之责任, 所以称为 Factory Method 除了上述的 Factory Method 模式之外, 其它模式也大多使用到卡榫函数, 例如 GoF 的 Template Method 模式 :

28 66 Google Android 設計招式之美 图 2-9 Template Method 模式 [GoF] 其中的 PrimitiveOperation() 就是一种卡榫函数 总而言之, 模式是框架设计专家惯用的手艺, 蕴含了深入的设计理念, 如此透过模式来解说 Android 框架的设计理念是精通 Android 平台架构的不二法门 有了 Android 这个顶级的实际框架作为模式应用情境, 让人们更易于领悟设计模式之真谛 于是我们对设计模式与应用框架两者之认识将同步成长, 且相得益彰 而在这些设计模式及框架的幕后, 常需要依赖卡榫函数来实现父 子类别之间的衔接, 让模式的优良设计技艺得以实现, 因而能设计出优越的应用框架

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

主程式 : 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

(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

(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

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

Microsoft Word - GoF-ch06-8-AbsFactory-ok.doc 第 6 章 Abstract Factory 樣式 137 138 Google Android 設計招式之美 Android 設計招式之美教材下載 第 6 章 Abstract Factory 樣式 139 第 6 章 Abstarct Factory 模式 6.1 Abstract Factory 模式美何在? 6.1.1 大格局的分合自如 6.1.2 不知而亦能用 之实践 6.2 介绍 Abstract

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

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

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

More information

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

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

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

建模与图形思考

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

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

预览图 : (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

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

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

Microsoft Word - 01.DOC

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

More information

Microsoft Word - 第4章 3D相册.doc

Microsoft Word - 第4章 3D相册.doc 第 4 章 3D 相册 学习目标 u 掌握相册界面的开发, 实现相册的立体与倒影效果 在现实生活中, 我们浏览照片时, 不同的相册软件有不同的浏览效果 本章主要实现了一个 3D 效果的相册, 该相册中的图片可以循环滑动展示 4.1 3D 相册 任务综述 相册界面主要是展示一组图片的立体效果, 并显示每个图片的倒影, 左右滑动可以切换不同的图片到 界面的中间位置, 同时在图片下方显示当前图片的标题,

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

Database_001

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

More information

Microsoft Word - G3_BK_Ch11-8.doc

Microsoft Word - G3_BK_Ch11-8.doc 第 11 章集合类别 225 226 Android 的对象技术 (OOP) Android 的对象技术教材下载 第 11 章集合类别 227 11 章 集合类别 11.1 集合对象 11.2 迭代器 (Iterator) 11.3 多态性集合对象 11.4 Android 的集合对象之例 (1) 11.5 Android 的集合对象之例 (2) 11.6 应用于 C/C++ 228 Android

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

建模与图形思考

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

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

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf (%d, & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9 201 201 21 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 1 B 1 C 5 D RPG 10 E 10 F 1 G II 1 1 201 201 C 1 # include 2 int main ( void

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

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

FY.DOC

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

More information

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

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

More information

Android Service

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

More information

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检 2016 年 上 半 年 软 件 设 计 师 考 试 真 题 ( 下 午 题 ) 下 午 试 题 试 题 一 ( 共 15 分 ) 阅 读 下 列 说 明 和 图, 回 答 问 题 1 至 问 题 4, 将 解 答 填 入 答 题 纸 的 对 应 栏 内 说 明 某 会 议 中 心 提 供 举 办 会 议 的 场 地 设 施 和 各 种 设 备, 供 公 司 与 各 类 组 织 机 构 租 用 场

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

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

(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

《大话设计模式》第一章

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

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

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

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

建立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

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

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

第3章.doc

第3章.doc 3 3 3 3.1 3 IT Trend C++ Java SAP Advantech ERPCRM C++ C++ Synopsys C++ NEC C C++PHP C++Java C++Java VIA C++ 3COM C++ SPSS C++ Sybase C++LinuxUNIX Motorola C++ IBM C++Java Oracle Java HP C++ C++ Yahoo

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

软件工程文档编制

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

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

图 6-1 主界面 MainActivity 界面对应的布局文件 (activity_main.xml) 如下所示 : <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="

图 6-1 主界面 MainActivity 界面对应的布局文件 (activity_main.xml) 如下所示 : <?xml version=1.0 encoding=utf-8?> <RelativeLayout xmlns:android= 第 6 章广播接收者 应用案例 案例 6-1 CallRecord( 通话记录 ) 一 案例描述 1 考核知识点 030006001: 广播接收者简介 030006002: 广播接收者的创建 2 练习目标 广播的静态注册和使用 使用广播处理处理事件 3 需求分析手机最重要的功能就是通话功能, 同样储存通话记录也是必不可少的 该案例使用广 播接收者自己实现通话记录的功能 包括呼出电话 已接来电 未接来电以及通话产生的

More information

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F 1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o

More information

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

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

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

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

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

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

_banneradview.setuserkeywords("swimming"); _banneradview.setusercategories("1,3,4"); _banneradview.setusergender(jdbanneradview.gender_male); _bannera

_banneradview.setuserkeywords(swimming); _banneradview.setusercategories(1,3,4); _banneradview.setusergender(jdbanneradview.gender_male); _bannera 京东与 AdView APP 联盟 SDK Android 版接口说明文档 1.5 1. 嵌入 SDK 1.1 添加 SDK Android Studio 环境 : 菜单 New->New Module->Import.jar or.aar package, 然后选中 App 联盟 SDK 所带的 jar 文件 Eclipse+ADT 环境 : 将 App 联盟 SDK 所带的 jar 文件拷贝到

More information

Android Fragment

Android Fragment Android Fragment 建國科技大學資管系饒瑞佶 2017/10 V1 Android 3.0 後才支援 Fragment 解決部分 App 適應螢幕大小的問題 它類似於 Activity, 可以像 Activity 可以擁有自己的版面設計, 也和 Activity 一樣有自己的生命週期 ( 具備 oncreate() oncreateview() 與 onpause() 方法 ) LifeCycle

More information

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

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

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

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

Strings

Strings Inheritance Cheng-Chin Chiang Relationships among Classes A 類 別 使 用 B 類 別 學 生 使 用 手 機 傳 遞 訊 息 公 司 使 用 金 庫 儲 存 重 要 文 件 人 類 使 用 交 通 工 具 旅 行 A 類 別 中 有 B 類 別 汽 車 有 輪 子 三 角 形 有 三 個 頂 點 電 腦 內 有 中 央 處 理 單 元 A

More information

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

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

More information

Microsoft Word - A201103-528_1299547322.doc

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

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

untitled

untitled (encapsulation) 例 類 說 類 料 來 料 information hiding 念 (inheritance) 來說 類 類 類 類 類 類 行 利 來 (polymorphism) 不 類 數 不 1 2 3 4 類 類 不 類 不 類 5 6 7 // virtual 不見了 #include #include using namespace

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

无类继承.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

RecyclerView and CardVew

RecyclerView and CardVew RecyclerView and CardView 建國科技大學資管系饒瑞佶 2017/10 V1 CardView CardView A CardView is a ViewGroup. Like any other ViewGroup, it can be added to youractivity or Fragment using a layout XML file. To create an

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

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

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

untitled

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

More information

Microsoft Word - G3_BK_Ch02-8.DOC

Microsoft Word - G3_BK_Ch02-8.DOC 第 2 章認識對象 47 48 Android 的對象技術 (OOP) Android 的對象技術教材下載 第 2 章認識對象 49 第 2 章 认识对象 2.1 自然界之对象 2.2 软件之对象 2.3 如何描述对象 : 善用类别 2.4 如何创建软件对象 : 使用类别 2.5 对象参考 (Object Reference) 2.6 Android 的对象自变量之例 2.7 构造式 (Constructor)

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

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

提问袁小兵:

提问袁小兵: C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.

More information

Microsoft Word zw

Microsoft Word zw 第 1 章 Android 概述 学习目标 : Android Android Android Studio Android Android APK 1.1 1. 智能手机的定义 Smartphone 2. 智能手机的发展 1973 4 3 PC IBM 1994 IBM Simon PDA PDA Zaurus OS 1996 Nokia 9000 Communicator Nokia 9000

More information

實作SQLiteOpenHelper類別

實作SQLiteOpenHelper類別 SQLiteOpenHelper 類別存取 SQLite 建國科技大學資管系 饒瑞佶 2013/5 V1 Android 連結資料庫 MySQL SQL Server Web Service 遠端資料庫 Internet Intranet Android SQLite 單機資料庫 Android vs. SQLite 透過 SQLiteOpenHelper 類別來操作 建立資料庫 ( 建構子 ) 建立資料表

More information

D C 93 2

D C 93 2 D9223468 3C 93 2 Java Java -- Java UML Java API UML MVC Eclipse API JavadocUML Omendo PSPPersonal Software Programming [6] 56 8 2587 56% Java 1 epaper(2005 ) Java C C (function) C (reusability) eat(chess1,

More information

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf (%d, & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf (%d %d 2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,

More information

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

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

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

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

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

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

Strings

Strings Polymorphism and Virtual Functions Cheng-Chin Chiang Virtual Function Basics 多 型 (Polymorphism) 賦 予 一 個 函 數 多 種 意 涵, 存 在 於 同 一 類 別 之 內 祖 先 類 別 與 後 代 類 別 間 物 件 導 向 程 式 設 計 基 本 原 理 虛 擬 函 數 (Virtual Function)

More information

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466>

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466> packages 3-31 PART 3-31 03-03 ASP.NET ASP.N MVC ASP.NET ASP.N MVC 4 ASP.NET ASP.NE MVC Entity Entity Framework Code First 2 TIPS Visual Studio 20NuGetEntity NuGetEntity Framework5.0 CHAPTER 03 59 3-3-1

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

Microsoft Word - AEL CH05.doc

Microsoft Word - AEL CH05.doc 5-2 AutoCompleteTextView AutoCompleteTextView 非常類似 EditText, 屬於文字輸入方塊 ; 不過 AutoCompleteTextView 會在使用者輸入幾個字時就會顯示提示文字, 方便使用者選取而無需輸入所有文字, 是一種體貼使用者輸入的設計 AutoCompleteTextView 的提示列表與 Spinner 的選項列表建立方式相同, 需要建立字串陣列來儲存欲提示的文字

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

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

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 点 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class - Table.class

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

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型 文 章 编 号 :1007-757X(2012)1-0036-04 领 域 驱 动 模 型 的 WEB 软 件 系 统 设 计 研 究 摘 要 : J2EE 3 JDK1.7 Tomcat WEB 关 键 词 : 中 图 分 类 号 :TP311 文 献 标 志 码 :A 0 引 言 Web 软 件 系 统 的 分 层 结 构 典 型 的 J2EE 软 件 系 统 开 发 方 法 分 为 三 层 结

More information

版权声明

版权声明 大 话 企 业 级 Android 开 发 第 九 部 分 本 教 程 说 明 及 版 权 声 明 大 话 企 业 级 Android 开 发 是 国 士 工 作 室 为 了 方 便 中 国 Android 开 发 者, 推 动 Android 企 业 级 应 用 开 发, 特 投 入 大 量 心 血 撰 写 的 书 籍, 并 在 网 络 上 免 费 发 布, 希 望 为 移 动 互 联 网 和 智

More information

Microsoft PowerPoint - L17_Inheritance_v4.pptx

Microsoft PowerPoint - L17_Inheritance_v4.pptx C++ Programming Lecture 17 Wei Liu ( 刘 威 ) Dept. of Electronics and Information Eng. Huazhong University of Science and Technology May. 2015 Lecture 17 Chapter 20. Object-Oriented Programming: Inheritance

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

untitled

untitled 1 7 7.1 7.2 7.3 7.4 7.5 2 7.1 VFT virtual 7.1 3 1 1. 2. public protected public 3. VFT 4. this const volatile 4 2 5. ( ) ( ) 7.1 6. no-static virtual 7.2 7. inline 7.3 5 3 8. this this 9. ( ) ( ) delete

More information

Microsoft Word - 970617cppFinalSolution.doc

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

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

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

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

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

任務二 : 產生 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