ImageVerifierCode 换一换
格式:DOC , 页数:21 ,大小:261KB ,
资源ID:7234929      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7234929.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(UML建模与Android应用程式开发.doc)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

UML建模与Android应用程式开发.doc

1、转】UML建模与Android应用程式开发(上) 前言     就一个完整的软体系统而言,程式码只是系统(本体)的一个观点(View)而已,而模型(Model)也是系统(本体)的一个观点。当Android应用开发者来说,若既能从程式码看应用系统,又能从模型看它,就相当于人们都有两只眼睛来看前方的一切事物。一旦发现两者有不一致的情形,就表示两者可能有所失真(即远离本体)了。这样的讯息,可让开发者提前知道未来开发路子上,可能发生的错误,以便防患未然。同样地,在模型大观点里,也含有许多小观点,例如: l 架构观点:一般采用UML 类别图(Class Diagram) l 使用观点:一般采用

2、UML 用例图(Use Case Diagram) l 顺序观点:​​一般采用UML 顺序图(Sequence Diagram) l 状态观点:一般采用UML 状态图(Statechart Diagram)       在本文里,将说明如何就上述的4个小观点,来构成模型大观点,然后再与程式码观点汇合,成为一个稳定可靠、简洁高雅的Andr​​oid应用系统。然而,特别留意的是:模型观点与程式码观点两者不一定要有明确的先后顺序关系。两者之间,到底何者先,而何者后,并非重点。因为最好的状态是:在脑海里先两者并存,先领悟构思,然后才画出UML模型图,也写出程式码,但都不一定是完美的。随着两个观

3、点的对比,发现不一致现象,就像两只眼睛发现前方物体的呈像不一致时,两者自然而然会逐渐修正(Iterative & Incremental),止于至善。      本文范例     本文举一个简单范例:一个Activity的子类别,以及一个远程的(Remote)的Service 子类别。两者透过 Android的IPC机制相互沟通。   多种UML 类别图呈现各种架构观点     所有的模型图都是人们对某项事物本体认知的心智观点,随着观点和抽象的角度之不同而改变其所呈现之面貌。例如,当我们觉得Android框架里的基类(即抽象类)是最重要的,只要呈现它即可,此时类别图就呈现如下:

4、     ‍  图1 独尊Android框架的类别图       如果觉得应用子类别也是架构里的重要元素,需要与框架里的基类别一起呈现出来,则此时类别图就呈现如下:     ‍  图2 兼具框架与应用的类别图       当然也有许多人习惯于独尊应用子类别,而认为不需要呈现幕后的框架基类别,则此时类别图就呈现如下:    ‍  图3 独尊应用子类别的类别图       此外,还有人习惯于独尊介面(即接口),而对幕后实作类别视而不见,则此时类别图就呈现如下:     ‍  图4 强调介面(即接口)的类别图       以上都只强调架构里的元素(如

5、类别和介面),还有人认为这些元素之间的互动(Interaction)与合作(Collaboration)是非常重要的,需要表现出来,此时类别图就呈现如下:    ‍  图5 强调互动的类别图   UML 用例图呈现使用观点     类别图是基于架构师的观点,偏向系统的内观(Internal View)。至于用例图(Use Case Diagram)则是基于使用者(即用户)的观点,偏向系统的外观(External View)。许多人坚持需求至上(Requirement-based)的开发者,非常重视这项UML图,终究用户是买家,就行销的角度来看,用户观点当然非常重要啰。例如,针对

6、上述范例的UML用例图呈现如下:     ‍  图6 强调用户观点的UML用例图   UML 顺序图呈现各项活动发生顺序     如何去实现上述的用例呢? 为了实现上述的用例,系统必须执行一连串的活动(Action)。有人认为这些用例幕后的活动执行顺序是很重要的,就使用UML顺序图来表达之,例如,针对用例「Run」可绘制其幕后活动的执行顺序,如下述的UML顺序图:     Use Case: Run   ‍  图7 Run用例幕后的活动顺序图      再如,针对用例「Exit」可绘制其幕后活动的执行顺序,如下述的UML顺序图:    Use Case: E

7、xit  ‍  图8 Exit用例幕后的活动顺序图   UML 状态图呈现UI 画面的千变万化     由于Android是属于事件驱动(Event-Driven)的平台系统,有许多人主张善用UML状态图可对众多事件分而治之,于是在清晰的状态之下,会执行明确的活动。例如,下述的画面可接受来自Android和用户所引发的事件。         ‍ 此时,可以采用UML状态图呈现UI变化之观点,如下图:     ‍   图 9 呈现UI画面状态变化的UML状态图   以Java 语言表达程式码的观点     至今天,还是有许多人维持传统的观点: l 画UML

8、模型图在先,撰写程式码在后。 l 程式码是UML模型的实践。 l UML模型较为抽象,程式码较为具体。   这项传统观点并没有对与错。但是,近年来,愈来愈多的人们持着新的观点: l UML模型图与Java程式码是两个同位阶的观点。 l 两个观点的一致性是确保系统稳定可靠、简洁高雅的重要途径。 l 杰出的Andr​​oid开发者应该兼具两个观点。 经过两个观点的互相核对与逐步修正后,的确呈现出极为完美的程式码,如下:   Android应用程式Project   这包含了1个IA.java介面定义档,及两个应用子类定义档:      应用程式码 一致化的程式码如下所

9、示:   // IA.java接口   package com.misoo.pk01; import android.os.Binder; import android.os.IBinder; import android.os.Parcel; import android.os.RemoteException;   public interface IA {       int f1(int x)throws RemoteException;       public static abstract class Stub extends Binder implem

10、ents IA {               @Override                 public boolean onTransact(int code, Parcel data, Parcel reply, int flags)                                throws android.os.RemoteException {                    int x = data.readInt();                    int y = this.f1(x);                    r

11、eply.writeInt(y);                    return true;                 }          public abstract int f1(int x) throws RemoteException;          public static IA asInterface(IBinder obj){                    return new Proxy(obj);       }             //-------------------------------------------

12、        private static class Proxy implements IA{          private IBinder mRemote;                  public Proxy(IBinder ibinder) {                        mRemote = ibinder;                }          public int f1(int x) throws RemoteException {                       // TODO Auto-gene

13、rated method stub                       Parcel data = Parcel.obtain();                     data.writeInt(x);                     Parcel reply = Parcel.obtain();                     mRemote.transact(0, data, reply, 0);                     return reply.readInt();             }     }   } }  

14、  // myService.java   package com.misoo.pk01; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.os.RemoteException;   public class myService extends Service {           @Override         public IBinder onBind(Intent intent) {           

15、      return mBinder;         }           public int mySf1(int x){                 return x + 1000;         }           //---------------------------------------------           private final IA.Stub mBinder = new IA.Stub() {                   @Override                 public int f1(int

16、x) throws RemoteException {                         return mySf1(x);                 }     }; }   // myActivity.java   package com.misoo.pk01; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android

17、content.ServiceConnection; import android.graphics.Color; import android.os.Bundle; import android.os.IBinder; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView;   public cla

18、ss myActivity extends Activity implements OnClickListener {           private final int WC = LinearLayout.LayoutParams.WRAP_CONTENT;         private final int FP = LinearLayout.LayoutParams.FILL_PARENT;           private Button btn, btn2;         private TextView tv;           private IA ia;

19、         private int state_var_A = 0;       public void onCreate(Bundle icicle) {                   super.onCreate(icicle);                   if(state_var_A == 0){                         show_layout_01();                         goto_state_01();                 }     }       private vo

20、id show_layout_01(){                 LinearLayout layout = new LinearLayout(this);                 layout.setOrientation(LinearLayout.VERTICAL);                 btn = new Button(this);                 btn.setBackgroundResource(R.drawable.heart);                   btn.setId(101);             

21、   btn.setText("Run");                   btn.setOnClickListener(this);                 LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(120, 55);                 param.topMargin = 10;                 layout.addView(btn, param);                                  btn2 = new Button

22、this);                 btn2.setBackgroundResource(R.drawable.heart);                 btn2.setId(102);                 btn2.setText("Exit");                 btn2.setOnClickListener(this);                 layout.addView(btn2, param);                   tv = new TextView(this);                 

23、tv.setTextColor(Color.WHITE);                 tv.setText("");                 LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(FP, WC);                 param2.topMargin = 10;                 layout.addView(tv, param2);                 setContentView(layout);           }     

24、private void goto_state_01(){        state_var_A = 1;        bindService(new Intent("com.misoo.pk01.REMOTE_SERVICE"), mConnection, Context.BIND_AUTO_CREATE);    }      private ServiceConnection mConnection = new ServiceConnection() {            public void onServiceConnected(ComponentName cla

25、ssName, IBinder ibinder) {                         ia = IA.Stub.asInterface(ibinder);          }             public void onServiceDisconnected(ComponentName className) { }     };       public void onClick(View v) {          int ret=0;                 switch(v.getId()){                   ca

26、se 101:                           if(state_var_A == 1){                               try {                                        ret = ia.f1(188);                               } catch (Exception e) {                                        e.printStackTrace();                               }

27、                           tv.setText(String.valueOf(ret));                           }                   break;                     case 102:                           if(state_var_A == 1) {                              stopService(new Intent("com.misoo.pk01.REMOTE_SERVICE"));             

28、                finish();                           }                   break;                 }         }    }   结语 在传统观点里,大多先绘制UML模型图,然后才开始构思程式码的撰写,使得UML建模成为撰写程式码的前置工作,因此许多程式员将UML建模视为多余的负担。为了节省开发成本,就将省略掉UML建模的工作了。   在新潮的观点里,UML模型与程式码是软体系统本体的两个观点(或面向),两者没有先后顺序关系,而是并存和兼具于同一个人的脑海里。这就像两只眼睛看到的景象并存于一个人的脑海里一般,如此才能看到更真实的世界,也能做出更完美的软体系统来。从本文的范例,你可看到当UML模型与程式码两个观点一致时,真的能让软体系统既可靠又高雅,不亦美哉! 另一篇文章:

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服