Microsoft Word - G3_BK_Ch08-8.doc

Size: px
Start display at page:

Download "Microsoft Word - G3_BK_Ch08-8.doc"

Transcription

1 第 8 章纯粹抽象类别与接口 173

2 174 Android 的对象技术 (OOP) Android 的對象技術教材下載

3 第 8 章纯粹抽象类别与接口 175 第 8 章 纯粹抽象类别 与接口 (Interface) 8.1 认识 纯粹抽象类别 8.2 从 纯粹抽象类别 到 接口 8.3 Android 的接口之例 8.4 应用于 C/C++

4 176 Android 的对象技术 (OOP) 8.1 认识 纯粹抽象类别 在前面各章里, 介绍过抽象类别 (Abstract Class) 当我们从具体类别抽掉某些函数的实作 (Body) 部分, 这些函数就称为抽象函数 (Abstract Function), 而含有抽象函数的类别就称为抽象类别 (Abstract Class) 了 一个抽象类别, 常同时含有抽象函数和具象函数 如果抽象类别里的 所有 (All) 函数的实作部份都欠缺, 就称为纯粹抽象类别 (Pure Abstract Class) 换句话说, 所谓纯粹抽象类别, 就是该类别里的每一个函数都是抽象函数 这种函数就是空的函数, 只有定义而无实作指令 由于纯粹抽象函数扮演着对象接口 (Interface) 的角色, 在现代软件语言上, 具有特殊的意义 在 Java 里, 有两个机制可用来表示接口 : 1. 以纯粹抽象类别 (Pure Abstract Class) 表达之 2. 以 Interface 机制表达之 在 1996 年之前, 主流语言 ( 如 C++ 等 ) 都只提供继承 (Inheritance) 机制, 而无 Interface 机制, 所以当时只能用 纯粹抽象类别 (C++ 称之为纯粹虚拟类别 ) 来表达接口 自从 1996 年 Java 问世之后, 主要语言如 Java C# VB.NET 等都提供了 Interface 机制来表达接口 请看看 Coin 多态性对象的范例程序 : 其完整程序码如下 :

5 第 8 章纯粹抽象类别与接口 177 /* AbstractCoin.java */ package Coin; public abstract class AbstractCoin { public abstract double value(); /* Coin.java */ package Coin; public abstract class Coin extends AbstractCoin public double value(){ return onvalue(); protected abstract double onvalue(); /* one_dollar.java */ package Coin; public class one_dollar extends Coin protected double onvalue(){ return 1.0; /* five_dollar.java */ package Coin; public class five_dollar extends Coin protected double onvalue(){ return 5.0; /* ten_dollar.java */ package Coin; public class ten_dollar extends Coin protected double onvalue(){ return 10.0;

6 178 Android 的对象技术 (OOP) /* VendingMachine.java */ package Machine; import java.util.arraylist; import java.util.iterator; import Coin.AbstractCoin; public class VendingMachine { private ArrayList<AbstractCoin> coll = null; public VendingMachine() { coll = new ArrayList<AbstractCoin>(); public void feedcoin(abstractcoin c){ coll.add(c); public void showamount(){ Iterator<AbstractCoin> it; double sum = 0; for(it = coll.iterator(); it.hasnext();) { sum += ((AbstractCoin)it.next()).value(); System.out.println("amt: " + sum); /* JMain.java */ import Coin.*; import Machine.VendingMachine; public class JMain { public static void main(string[] args) { VendingMachine vm = new VendingMachine(); vm.feedcoin(new five_dollar()); vm.feedcoin(new one_dollar()); vm.feedcoin(new ten_dollar()); vm.showamount(); 在这个 Coin 抽样类别里, 含有一个 value() 具体函数和一个 onvalue() 抽象函

7 第 8 章纯粹抽象类别与接口 179 数 这个 Coin 类别只是一般抽象类别, 而不是一个纯粹抽象类别 当我们也将这个 value() 具象函数里的实作指令部分抽掉, 而独立出上述的 AbstractCoin 抽象类别 这个 AbstractCoin 抽象类别所拥有的函数皆是 ( 虽然只有一个函数 ) 抽象函数, 所以称它为纯粹抽象类别 (Pure Abstract Class) 8.2 从 纯粹抽象类别 到 接口 许多人谈到接口时, 会觉得它是蛮抽象 不易捉摸的 当我们理解到 : 纯粹抽象类别是从抽象类别 (Abstraction) 抽象共同之行为 这有助于解答了 : 接口从哪里来 的问题 就如上一节里的例子, 只要对 Coin 抽象类别进行 行为抽象 ( 即抽出函数定义 ), 就能得出一个 AbstractCoin 纯粹抽象类别, 也就得到接口了 兹看一个稍为复杂一点的范例, 其中含有一个 Graph 纯粹抽象类别, 如下图 : Graph abstract void draw(...); abstract void paint(...); Bird ( 繼承 ) 图 8-1 void draw(...) { // 畫圖指令 void paint(...) { draw(); 纯粹抽象类别及其子类 这个 Graph 就是纯粹抽象类别 在抽象类别里, 如果所有函数皆未含有实作

8 180 Android 的对象技术 (OOP) 而只有函数原型 (Prototype) 宣告的话, 就称为纯粹抽象类别 现在就来看看 Java 如何表示 Graph 纯粹抽象类别, 如下范例程序 : 其完整程序码如下 : /* Graph.java */ public abstract class Graph { public abstract void draw(); public abstract void paint(); /* Bird.java */ import java.awt.*; public class Bird extends Graph { Graphics m_gr; public Bird(Graphics gr) { super(); m_gr = public void draw(){ // 画图 ( 海鸥 ) 指令 m_gr.setcolor(color.blue); m_gr.drawarc(30,80,90,110,40,100); m_gr.drawarc(88,93,90,100,40,80); m_gr.drawarc(30,55,90,150,35,75); public void paint(){ this.draw(); /* JMain.java */ import java.awt.*;

9 第 8 章纯粹抽象类别与接口 181 import javax.swing.*; class JP extends JPanel { public void paintcomponent(graphics gr) { super.paintcomponents(gr); Graph cc = new Bird(gr); cc.paint(); public class JMain extends JFrame { public JMain() { settitle(""); setsize(350, 250); public static void main(string[] args) { JMain frm = new JMain(); JP panel = new JP(); frm.add(panel); frm.setdefaultcloseoperation(jframe.exit_on_close); frm.setvisible(true); 此程序画出两只海鸥 : 上述的 Graph 是纯粹抽象类别, 只有函数的原型 (Prototype) 定义而已, 并没有函数的实作内容 (Implementation), 其就扮演接口的角色了 所以上图 8-1 的意义与下图 8-2 是相同的

10 182 Android 的对象技术 (OOP) <<Interface>> IGraph void draw(...); void paint(...); Bird ( 實作 ) void draw(...) { // 畫圖指令 void paint(...) { draw(); 图 8-2 接口及其实作类别 这已经不是继承关系了, 而是接口与类别之间的 实作关系 了 那么, 在 Java 程序里, 应该如何表达上图的实作关系呢? 可以使用 Java 的接口 (Interface) 机制来表达之, 而且是很直截了当的 如下述的范例程序 : 其程序码如下 : /* IGraph.java */ interface IGraph { void draw();

11 第 8 章纯粹抽象类别与接口 183 void paint(); /* Bird.java */ import java.awt.*; public class Bird implements IGraph { Graphics m_gr; public Bird(Graphics gr) { super(); m_gr = gr; public void draw(){ // 画图 ( 海鸥 ) 指令 m_gr.setcolor(color.blue); m_gr.drawarc(30,80,90,110,40,100); m_gr.setcolor(color.black); m_gr.drawarc(30,55,90,150,35,75); public void paint(){ this.draw(); m_gr.drawarc(88,93,90,100,40,80); m_gr.drawarc(90,80,90,90,40,80); /* JMain.java */ import java.awt.*; import javax.swing.*; class JP extends JPanel { public void paintcomponent(graphics gr) { super.paintcomponents(gr); IGraph bird = new Bird(gr); bird.paint(); public class JMain extends JFrame { public JMain(){ settitle(""); setsize(350, 250); public static void main(string[] args) { JMain frm = new JMain(); JP panel = new JP(); frm.add(panel); frm.setdefaultcloseoperation(jframe.exit_on_close); frm.setvisible(true); 此程序画出一样的海鸥

12 184 Android 的对象技术 (OOP) 此时我们说 :Bird 类别支持 IGraph 接口, 或称 Bird 类别实作 IGraph 接口 兹将上图 8-2 改为更亲切的接口图示, 如下图所示 : IGraph void draw(...) void paint(...) Bird void draw(...) { // 畫圖指令 void paint(...) { this.draw(); 图 8-3 以接口图示表达之 从上图 8-1 到图 8-3, 形成一个联想步骤, 如下图所示 : 純粹抽象類別 function1() function2() Interface function1() function2() function1() function2() 介面 具體類別 function1() { function2() { 實作類別 function1() { function2() { 實作類別 function1() { function2() { 图 8-4 从纯粹抽象类别到接口之步骤

13 第 8 章纯粹抽象类别与接口 185 例如, 刚才 jx08-01 程序范例里的 AbstractCoin 纯粹抽象类别 : AbstractCoin abstract value() ICoin value() value() ICoin onvalue(){ Coin value(){ onvalue(){ Coin value(){ onvalue(){ 图 8-5 从纯粹抽象类别到接口之例为什么要特别提出这样的思维步骤呢? 因为这样可以将类别继承体系与接口两种概念紧密连结起来, 我们就不会对接口感到神秘难以捉摸了 由于接口代表一个空间 例如刚才 jx08-01 程序范例里的 VendingMachine 贩卖机和 Coin 硬币各代表一个空间或族群 ( 即一个类别继承体系 ) 贩卖机与硬币两个族群能各自发展, 只要接口一致, 就能一拍即合 例如贩卖机业者可以推出更多种的贩卖机, 如售票机 可乐贩卖机等, 则贩卖机体系就会无限成长了 这两族群在独立成长的过程中, 其接口维持不变, 保持其替换性和整合性 ( 即兼容性 ) 所以新型贩卖机也可接受所有的硬币, 而且新型的硬币也能适用于所有的贩卖机 刚才是从消费者的立场与好处着想 其实对生产者也有好处 生产贩卖机者不必考虑到硬币的新旧, 只要接口一致就行了 另一方面, 政府发展新硬币时, 也不必担心不能适用于各贩卖机, 只要提供一致接口, 就行了 因此, 消费者 电器制造者及插座制造者三方皆获得益处

14 186 Android 的对象技术 (OOP) 8.3 Android 的接口之例 在 Android 应用程序里, 最常见的画面控制组件就是 按钮 (Button) 了 当我们在画面上按了按钮时,Android 侦测到这项事件, 就会透过 OnClickListener 接口而调用到 Activity 子类的 onclick() 函数 操作情境 : 1. 此程序一开始出现选单如下 : 2. 按下 <OK> 按钮,Android 就会透过 OnClickListener 接口而调用到 Activity 子类的 onclick() 函数, 而结束此程序 撰写步骤 : Step-1: 建立 Android 项目 :Hx01 Step-2: 撰写 Activity 的子类 :ac01, 其程序码如下 : /* ac01.java */ package com.misoo.pkaz; import android.app.activity; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.linearlayout; public class ac01 extends Activity implements OnClickListener {

15 第 8 章纯粹抽象类别与接口 public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); LinearLayout layout = new LinearLayout(this); layout.setorientation(linearlayout.vertical); okbutton ok_btn = new okbutton(this); ok_btn.setonclicklistener(this); LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(ok_btn.get_width(),ok_btn.get_height()); layout.addview(ok_btn, param); setcontentview(layout); public void onclick(view v) { finish(); Step-3: 撰写 Button 的子类 :okbutton, 其程序码如下 : /* okbutton.java */ package com.misoo.pkaz; import android.content.context; import android.widget.button; public class okbutton extends Button{ public okbutton(context ctx){ super(ctx); super.settext("ok"); super.setbackgroundresource(r.drawable.ok); public int get_width(){ return 90; public int get_height(){ return 50; Step-4: 执行之 说明 : 1. 此程序执行时, 先诞生 ac01 类别之对象 由于 ac01 类别实作 (Implement) 了 OnClickListener 接口, 所以这个 ac01 类别之对象就具有了 OnClickListener 接口, 可让外界来调用 如下图 :

16 188 Android 的对象技术 (OOP) OnClickListener onclick() :ac01 onclick() { 2. 执行到 oncreate() 函数时, 就诞生了 okbutton 之对象, 并且执行到指令 : ok_btn.setonclicklistener(this); 让 okbutton 之对象能参考到 ac01 之对象的 OnClickListener 接口了 如下图 : super:button onclick() OnClickListener listener OnClickListener :ac01 onclick() { ok_btn:okbutton OnClickListener listener 3. 接着, 当我们按下画面上的 <OK> 按钮时,Android 从 okbutton 之对象得知这个按键事件的处理函数 (Event Handler) 写在 ac01 类别里 于是 Android 就透过 OnClickListener 接口而执行了 ac01 类别里的 onclick() 函数了

17 第 8 章纯粹抽象类别与接口 应用于 C/C++: 接口 关于 C++ C++ 的父类兼具有接口之角色, 它并没有特别提供 Interface 机制 关于面向对象 C LW_OOPC 提供了接口机制, 一个类别可以支持多个接口 ; 此外, 多个类别也可以支持同一个接口 基于这两项特性, 可以展现出对象的多态性 LW_OOPC 的接口机制 对象接口之用途是 : 让别的对象知道它们能调用此对象的那些函数 例如, INTERFACE( ICircle ) { void (*draw)(); void (*move)(); 这说明了, 别的对象只能调用 Circle 对象的 draw() 及 move() 函数 换句话说, 接口叙述了对象内的函数中, 有那些是允许别对象经由此接口而调用之 让别的对象知道如何与此对象沟通 例如, 想叙述 长方形 对象时, 可定义如下 : INTERFACE(IA) { double (*cal_area)(void*); double (*cal_side)(void*); ; CLASS(Rectangle) { IMPLEMENTS(IA); void (*init)(void*, double, double); double length; double width; ;

18 190 Android 的对象技术 (OOP) 类别之定义说明了 长方形 对象内部含有两个数据成员, 以及三个成员函数 接口之定义说明了其它对象能透过 IA 接口而调用 长方形 对象的 cal_area() 及 cal_perimeter() 函数, 但不能调用 paint(), 也不能直接存取 length 及 width 数据值 此时也称 Rectangle 类别实现 (Implement) 了 IA 接口, 其表示于类别定义里 : CLASS(Rectangle) { IMPLEMENTS(IA); /* Rectangle 类别实现 (Implement) 了 IA 接口 */ 多个类别实现同一接口 两个以上的类别可以实现同一个接口, 例如 : INTERFACE(IA){ double (*cal_area)(void*); double (*cal_side)(void*); ; CLASS(Circle){ IMPLEMENTS(IA); void (*init)(void*, double); double radius; ; CLASS(Square){ IMPLEMENTS(IA); void (*init)(void*, double); double side; ; 由于 Circle 与 Square 类别皆提供一样的接口 --- IA, 所以能抽换对象 也就是说, 凡是支持同一接口的对象皆可以互换, 例如有两个类别 : 圆形 (Circle) 和正方形 (Square), 而且他们都支持 IA 接口的话, 那么两着的对象就可以互换了 请看其 C 程序码 : 撰写 IA 接口程序码 : /* oopc08-ia.h */

19 第 8 章纯粹抽象类别与接口 191 #ifndef IA_H #define IA_H INTERFACE(IA){ void (*init)(void*, double); double (*cal_area)(void*); double (*cal_perimeter)(void*); ; #endif 这个接口含有 3 个函数 撰写 Cicle 类别 : /* oopc08-cir.c */ #include "lw_oopc.h" #include "oopc08-ia.h" CLASS(Circle){ IMPLEMENTS(IA); double radius; ; static void init(circle* t, double r) { t->radius = r; static double cal_area(circle* t) { return ( * t->radius * t->radius); static double cal_perimeter(circle* t) { return (2 * * t->radius); CTOR(Circle) FUNCTION_SETTING(IA.init, init) FUNCTION_SETTING(IA.cal_area, cal_area) FUNCTION_SETTING(IA.cal_perimeter, cal_perimeter) END_CTOR 撰写 Square 类别 : /* oopc08-sq.c */ #include "lw_oopc.h" #include "oopc08-ia.h" CLASS(Square){ IMPLEMENTS(IA); double side; ; static void init(square* t, double s) { t->side = s; static double cal_area(square* t) { return (t->side * t->side); static double cal_perimeter(square* t) { return (4 * t->side); CTOR(Square) FUNCTION_SETTING(IA.init, init)

20 192 Android 的对象技术 (OOP) FUNCTION_SETTING(IA.cal_area, cal_area) FUNCTION_SETTING(IA.cal_perimeter, cal_perimeter); END_CTOR 以上两个类别都支持 IA 接口 撰写主程序 : /* oopc08-ap1.c */ #include "stdio.h" #include "lw_oopgc.h" #include "oopc08-ia.h" void print_area(ia* pi) { printf("area=%6.2f\n", pi->cal_area(pi)); int main() { IA *pc, *ps; pc = (IA*)CircleNew(); pc->init(pc, 10.0); print_area(pc); ps = (IA*)SquareNew(); ps->init(ps, 10.0); print_area(ps); getchar(); return 0; 这程序重用 (Reuse) 了 print_area() 函数, 也就是说,print_area() 可以跟任何支 持 IA 接口的对象沟通 目前这个例子的 main() 内容较多, 而 print_area() 内容较 少, 可能你看不出 print_area() 的重用价值 一旦 print_area() 内容较复杂或较专业 时, 其重用价值就迅速提高了 下一节的贩卖机例子, 将展现出这种价值 以接口实现多态性 (Polymorphism) 具有相同接口的一群对象, 称之为多态对象, 它们是可以互换的 例如 :

21 第 8 章纯粹抽象类别与接口 193 售票機 <<use>> ICoin 介面 value() 一元硬幣 五元硬幣 十元硬幣 这两个类别实现 ICoin 接口, 都有 value() 函数, 而且各类别实现的方式 ( 即程序码内容 ) 都不相同, 因而产生不同的行为 像 value() 这种函数, 称为 多态函数 (Polymorphic Function) 多态函数通常为多态对象皆能接受之讯息 设 *d1 *d5 *d10 分别为这三类别之对象指针, 则 *d1 *d5 *d10 皆能接受此 value() 讯息, 例如指令 : d1->value(); d5->value(); d10->bonus(); 但各调用不同之 value() 实现程序码 接着, 可设计个函数, 让售票机能接受及分辨硬币体系之对象 例如 : 售票机.feedCoin( 一元硬币指标 ) 售票机.feedCoin( 五元硬币指标 ) 售票机.feedCoin( 十元硬币指标 ) feedcoin() 为 售票机 类别之函数, 能接受硬币对象之指针, 然后根据对 象之类别而自动寻找适当之函数 这不但给予软件设计者方便;更重要的是它亦带给使用者莫大的方便 无论使用者拥有一元 五元或十元之硬币, 皆可投入售票机 请看其 C 程序码 : Step-1: 撰写 ICoin 接口程序码 /*oopc08-con.h */

22 194 Android 的对象技术 (OOP) #ifndef COIN_H #define COIN_H #include "lw_oopc.h" INTERFACE(ICoin){ void (*init)(); double (*value)(); ; #endif Step-2: 撰写一元 五元或十元之硬币类别之程序码 one_dollar 类别 : /* oopc08-one.c */ #include <stdio.h> #include "oopc08-con.h" CLASS(one_dollar){ IMPLEMENTS(ICoin); int k; ; static void init() { static double value() { return 1.0; CTOR(one_dollar) FUNCTION_SETTING(ICoin.init, init) FUNCTION_SETTING(ICoin.value, value) END_CTOR five_dollar 类别 : /* oopc08-fiv.c */ #include <stdio.h> #include "oopc08-con.h" CLASS(five_dollar){ IMPLEMENTS(ICoin); ; static void init(){ static double value() { return 5.0; CTOR(five_dollar) FUNCTION_SETTING(ICoin.init, init) FUNCTION_SETTING(ICoin.value, value)

23 第 8 章纯粹抽象类别与接口 195 END_CTOR ten_dollar 类别 : /* oopc08-ten.c */ #include <stdio.h> #include "oopc08-con.h" CLASS(ten_dollar){ IMPLEMENTS(ICoin); ; static void init(){ static double value() { return 10.0; CTOR(ten_dollar) FUNCTION_SETTING(ICoin.init, init) FUNCTION_SETTING(ICoin.value, value) END_CTOR 以上 3 个类别都支持 ICoin 接口 现在准备将这 3 种不同的硬币对象喂入贩卖机里, 此时一般程序员会想到 : 贩卖机类别里应该会用一些 if 指令来判断对象的类别, 才能正确计算出所投入的总金额 其实不然, 这是多态性带来的好处 : 让贩卖机类别非常简洁又清晰 Step-3: 定义贩卖机类别 /* oopc08-vm.h */ #include <stdio.h> #include "oopc08-con.h" CLASS(VendingMachine) { void (*init)(void*); void (*feedcoin)(void*, ICoin*); double (*gettotal)(void*); int index; ICoin* array[10]; ; Step-4: 撰写贩卖机类别 /* oopc08-vm.c */ #include <stdio.h> #include "oopc08-con.h" #include "oopc08-vm.h"

24 196 Android 的对象技术 (OOP) static void init(void*t){ VendingMachine* cthis = (VendingMachine*)t; cthis->index = 0; static void feedcoin(void*t, ICoin* c){ double v; VendingMachine* cthis = (VendingMachine*)t; cthis->array[cthis->index] = c; cthis->index++; static double gettotal(void*t) { int i, sum; ICoin *pc; VendingMachine* cthis = (VendingMachine*)t; sum = 0; for(i=0; i<cthis->index; i++) { pc = cthis->array[i]; sum += pc->value(pc); return sum; CTOR(VendingMachine) FUNCTION_SETTING(init, init) FUNCTION_SETTING(feedCoin, feedcoin) FUNCTION_SETTING(getTotal, gettotal) END_CTOR Step-5: 撰写主程序 /* oopc08-ap2.c */ #include "lw_oopc.h" #include "oopc08-con.h" #include "oopc08-vm.h" int main(){ ICoin *c1, *c5, *c10; double v; VendingMachine* vm = (VendingMachine*)VendingMachineNew(); vm->init(vm); c1 = (ICoin*)one_dollarNew(); c1->init(); vm->feedcoin(vm, c1); c5 = (ICoin*)five_dollarNew(); c5->init(); vm->feedcoin(vm, c5); c10 = (ICoin*)ten_dollarNew(); c10->init(); vm->feedcoin(vm, c10); c5 = (ICoin*)five_dollarNew(); c5->init(); vm->feedcoin(vm, c5); vm->feedcoin(vm, c1); v = vm->gettotal(vm);

25 第 8 章纯粹抽象类别与接口 197 printf("total=%6.2f\n", v); getchar(); return 0; 除了上面所提到, 一个类别也可以实现两个以上的接口, 也就说一个对象可以同时具有多个接口 关于这部份, 请继续阅读本书第 13 章的第 13.6 节

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

建模与图形思考

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

詞 彙 表 編 號 詞 彙 描 述 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

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

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

软件工程文档编制

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

More information

Microsoft Word - 01.DOC

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

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

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

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

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

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

PowerPoint 簡報

PowerPoint 簡報 Paint 繪圖板 JAVA 程式設計 指導老師 : 鄞宗賢 組員 : 4A3G0901 劉彥佐 4A3G0907 韓偉志 畫面預覽 匯入參數 package paint; import java.awt.*; import java.awt.event.*; import javax.swing.*; 主程式 public class paint{ public static void main(string[]

More information

Strings

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

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo [email protected] 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

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

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

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

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

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

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

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

More information

Android Service

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

More information

chp6.ppt

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

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

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

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

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

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

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

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

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

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

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

運算子多載 Operator Overloading

運算子多載 Operator Overloading 多型 Polymorphism 講師 : 洪安 1 多型 編譯時期多型 ( 靜態多型 ) function overloading 如何正確呼叫同名的函數? 利用參數個數與型態 operator overloading 其實同 function overloading 執行時期多型 ( 或動態多型 ) 如何正確呼叫不同物件的相同名稱的成員函數 利用繼承與多型 2 子類別與父類別物件間的指定 (assignment)

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

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

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

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

第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

(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

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

Guava学习之Resources

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

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 - 把时间当作朋友(2011第3版)3.0.b.07.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc 2 5 8 11 0 1. 13 2. 15 3. 18 1 1. 22 2. 25 3. 27 2 1. 35 2. 38 3. 41 4. 43 5. 48 6. 50 3 1. 56 2. 59 3. 63 4. 65 5. 69 13 22 35 56 6. 74 7. 82 8. 84 9. 87 10. 97 11. 102 12. 107 13. 111 4 114 1. 114 2.

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

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

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

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

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

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

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

chp11.ppt

chp11.ppt Java 软 件 设 计 基 础 Applet 程 序 1.Applet 概 念 Applet 与 Application Application 是 能 独 立 运 行 的 程 序 单 位 ; Applet 程 序 不 能 独 立 运 行, 必 须 依 附 在 网 页 上, 借 助 于 浏 览 器 才 能 运 行 通 常 置 于 服 务 器 端, 当 用 户 连 接 到 该 网 页,Applet

More information

附录J:Eclipse教程

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

More information

mvc

mvc Build an application Tutor : Michael Pan Application Source codes - - Frameworks Xib files - - Resources - ( ) info.plist - UIKit Framework UIApplication Event status bar, icon... delegation [UIApplication

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

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

Microsoft Word - Broker.doc

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

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

新版 明解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

ShareText

ShareText 作者 : 林致宇 日期 :2012/1/23 問題 : 如何分享分享文字資訊給其它的應用程式? 解答 : 有時候我們可能會希望 我們的應用程式的資訊 能夠讓使用者分享出去, 讓使用者能夠將此資訊傳送簡訊給其好友或寄電子郵件的方式寄給其好友, 這份文件將示範如何寫出這樣的應用程式 本文件將產出兩個 App, 第一個 App 是 分享資料的來源, 名為 CopyPaste_Source, 功能非常簡單,

More information

<4D6963726F736F667420576F7264202D20312D3520D6F7B0ECC8AFC9CCCDC6BCF6B1A8B8E62DB6A8>

<4D6963726F736F667420576F7264202D20312D3520D6F7B0ECC8AFC9CCCDC6BCF6B1A8B8E62DB6A8> 平 安 证 券 有 限 责 任 公 司 关 于 推 荐 深 圳 市 前 海 圆 舟 网 络 科 技 股 份 有 限 公 司 进 入 全 国 中 小 企 业 股 份 转 让 系 统 挂 牌 并 公 开 转 让 的 推 荐 报 告 根 据 中 国 证 券 监 督 管 理 委 员 会 ( 以 下 简 称 证 监 会 ) 发 布 的 非 上 市 公 众 公 司 监 督 管 理 办 法, 以 及 全 国 中

More information

<4D F736F F D20312D3520D6F7B0ECC8AFC9CCCDC6BCF6B1A8B8E6A3A8B7E2C3E6B2CAD3A12BD5FDCEC4BADAB0D7B4F2D3A1A3A92E646F63>

<4D F736F F D20312D3520D6F7B0ECC8AFC9CCCDC6BCF6B1A8B8E6A3A8B7E2C3E6B2CAD3A12BD5FDCEC4BADAB0D7B4F2D3A1A3A92E646F63> 兴 业 证 券 股 份 有 限 公 司 关 于 推 荐 上 海 新 联 纬 讯 科 技 发 展 股 份 有 限 公 司 进 入 全 国 中 小 企 业 股 份 转 让 系 统 挂 牌 公 开 转 让 的 推 荐 报 告 二 零 一 六 年 六 月 兴 业 证 券 股 份 有 限 公 司 关 于 推 荐 上 海 新 联 纬 讯 科 技 发 展 股 份 有 限 公 司 进 入 全 国 中 小 企 业 股

More information

Microsoft Word - JAVA3.rtf

Microsoft Word - JAVA3.rtf Java2 lesson The aim of this lesson is concept and method. ( 赵 卓 宁 ) 教 学 计 划 学 习 进 度 Java 3 6.1~6.34 内 容 介 绍 教 材 内 容 : 第 六 课 描 绘 的 层 次 和 关 系 主 要 议 程 1. 的 复 用 2. 的 继 承 3. 关 于 多 态 4. 应 用 约 束 ( 封 装 ) 5. 接

More information

20 , ? , : : ( ) ( ) : : : : :? : : ?? : ( ) OK : ( ) ( ) ( )

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

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

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

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

FY.DOC

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

More information

Microsoft Word - 投影片ch11

Microsoft Word - 投影片ch11 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第十一章抽象類別與介面 本章學習目標認識抽象類別學習介面的使用認識多重繼承與介面的延伸 抽象類別與介面 11-2 11.1 抽象類別 抽象類別的目的是要依據它的格式來修改並建立新的類別 11.1.1 定義抽象類別 定義抽象類別的語法如下 : abstract class 類別名稱 { 宣告資料成員 ; // 定義抽象類別

More information