




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、手机常见操作系统:iOS苹果手机an droid安卓系统 Moto HTCsymbia n塞班 诺基亚WP7 微软MeeGoBada 三星手机编程语言:JAVA是手机主流的编程语言Java是一个编程语言系:分成三部分:JavaEE Java企业版,网络程序开发JavaSE Java标准版,开发桌面应用系统JavaME Java移动版,移动设备程序开发An droid market手机程序的开发方式,在电脑上设计,调试程序,一旦程序正确, 可以传输到手机上,安装,执行。手机程序用java语言开发,必须用手机程序规定的java语法设 计程序。开发工具:基本工具jdk(javaSE),手机开发包手机
2、运行环境版本可能有区别:J2ME 环境(midp cldc)Android-重要的手机开发模式,其编程范围已经不仅仅限于 手机应用,更扩展到了无线互联网领域。MIDP (Mobile In formation Device Profile)移动信息设备导言:是移动设备编程和运行必不可少的条件之一。其中定义了一些手机编 程必须的类和包。分成1.0, 2.0, 2.1版本。CLDC (Co nn ected Limited Device Con figuratio n)连接受限设备配置,是专为连接受限设备编程准备的程序。作为连接受限设备之一的手机编程当然这部分也必不可少。以上两大部分,在开发环境安
3、装后,一并安装到机器上。手机开发环境:1. java编译环境,因为手机程序(J2ME )首先是一个java程 序,所以必须由java编译器编译。2. 手机开发环境,是在java编译环境之上的一个开发环境。如WTK,eclipse 等。我们选用WTK环境。但WTK的集成度并不高,它本身不具备编辑源程序的功能,所以 只有用其它文本编辑工具编辑源程序,如写字板。并要将写好的手 机源程序放在指定位置。如下图:rJ| SunWireless Toolkrt 2.5 for CLDC -【二 I 回File Edit Project HelpIJt* Frojtet T Prejsct . .&1*sti
4、ngs 丄可.:|uild gun Console:.:Dev ice: DefsnltC q1arFhoueCreatinj project 手机程序演示Place Java source files in C:TK25apps手机程序満示冶Place application resource files in C: 编译(翻译,在Build环节的前一步,如果有错,返回前一步)预审(在Build中的后一环节,去掉(修改)程序中不适合在手机中运行的内容,这环 节自动的)模拟器运行(Run)如果需要在实体机上运行 打包项目 传至手机 安装 运行。手机程序的基本结构:手机程序是一个java语言程序
5、,而java语言程序是由类(class) 构成。一个类可以是如下结构:class类名.类体.手机程序中的类必须 派生于MIDIet类。也就是说,MIDIet类是由 系统准备好的。public class Computer exte nds MIDIetMIDIet在何处?必须由程序中说明:import javax.microediti on. midlet.*;import javax.microeditio n.lcdui.*;public class Computer exte nds MIDletimport:导入,当使用系统提供的类时,必须导入这些类。相当于指明 这些类所在的位置。im
6、port javax.microedition.midlet.MIDIet;/其中的 *表示所有类import javax.microeditio n.lcdui.*;这两行是所有的j2ME程序必须。每一行的开始的部分是注释。可见,一个手机程序必须扩展于基类 MIDIet,且在类中要覆盖(写 出它们的函数体,至少时,可以只给出一对)MIDIet类中的startApp、 pauseApp、destoryApp 三个函数。以上程序运行时没有画面,如果要求在手机上有一些画面,可以 如下进行:import javax.microediti on. midlet.MIDIet;import javax.
7、microeditio n.lcdui.*;public class Computer exte nds MIDIetDisplay disp;Form form二new Form(” 简易计算器);public void startApp()disp二Display.getDisplay(this);disp.setCurre nt(form);public void pauseApp()public void destroyApp(boolea n b)Java编程基础数据类型运算符与表达式程序结构Java程序有三种结构:顺序结构分枝结构(选择结构,判断结构)循环结构(重复结构)分枝结构由
8、if else语句实现,if (条件)语句块1else语句块2这种结构执行过程是:首先求出条件,条件成立执行语句块1而 不执行语句块2,条件不成立时,执行语句块2而不执行语句块1;分枝结构中,“条件”指的是一个可以得到逻辑值的表达式。所 以关系运算和逻辑运算常常出现在条件部分。在分枝结构的某一个分枝上,还可以写出更低一级的分枝结构,构成嵌套的分枝结构。循环结构:函数:手机程序是java程序,java由类构成,一个类由若干函数构成。函数是什么?数学中的函数:。程序中的函数:分成两类一类是系统函数:指系统已将函数的算法写成了程序,我们在 程序中只需使用(调用)它。使用这类函数,只需要了解函数的一些
9、 特征。具体地,了解函数来自何类?参数(自变量)特征(需几个参 数,各参数的类型)?函数值特征(类型)。女口:正弦函数。double x=Math.si n(30*Math.PI/180);二类是自定义函数,函数必须由程序员在程序如写出。因为,系统函数不可穷尽所有的应用,所以有些应用必须由程 序员自己设计。在程序中设计函数更主要的原因是:将一个庞大的、复杂的程序,化整为零。函数是程序中功能相对独立的部分程序。函数程序设计解决两部分问题: 函数的定义,函数的调用。函数的设计:回答如下问题,函数名?参数(自变量)特征? 函数值类型?函数体?函数值类型函数名(参数表)函数体 函数值类型函数名(参数表
10、)函数原型。有了原型就应该明白函数的用法。函数原型设计除了遵守基本的语法之外,主要取决于函数的功能举例:求两个整数之较大者。int getMax(i nt x, int y)上式中,圆括号中的参数int x, int y,称为形式参数。表现为若干变量 的声明。注意不可写成如下形式:int getMax(i nt x, y)int getMax(i ntx ; int y)求三个实数之积。double mul(double x,double y,double z)求两个整数的最大公约数int getMaxFactor(i nt a, int b )求两个整数之较大者。int getMax(i n
11、t x, int y)在写函数时,形参部分的变量应当已知数,去设计函数。而参数 的具体值,是由函数调用时传入的。函数体是实现函数功能的代码。如:函数中必须用return语句“返回”函数值,这个值的类型必须与 函数值类型一致。double mul(double x,double y,double z)return x*y*z ;函数的调用:就是使用函数,得到一个结果。如求两整数之较大值:对它的调用:函数名(实际参数表)getMax(34 , 26);getMax(a,b);这种调用常常错写为如下方式:getMax(i nt a, int b);由于函数是int getMax(int x, int
12、 y)声明的,所以,对该函数的一个调用式就可以当一个int值来使用。getMax(34,56)当一个整数使用。如:int x=getMax(34,56);int x=12+getMax(a,b);Sysytem.out.pri ntl n( getMax(a,b);因此,总结函数调用方法:形式参数与实际参数应个数相等、类型相容、次序一致,而且要正确使用返回值。例:判断一个整数x是否是质数。首先从概念出发:质数是只能被1与其自身整除的整数。程序中,可以用2-X-1的每个数除x,若有至少一个数能整除X,则x不是质数;若所有的数都不能整除 x,则是质数。int x=.,i;for (i=2;ix;i
13、+)if (x%i=0)不是是扩大问题的范围,输出3-1000之间的所有质数。public class SimplePrime public static void main(String args) for (i nt x=3; x=1000;x+)if (isPrime(x) System.out.pri ntln (x);static boolea n isPrime(i nt x)for (i nt i=2;ix;i+)if (x%i=0) retur n false;return true;类:类的设计:class 类名为何要设计类? java程序必须要由类构成。类是对现实世界中事物
14、的描述。而对一个事物的描述分成两部分,事物的属性(数据),行为。 属性在类中表现为类的成员变量,行为可以由函数来表现。举二例1.人属性:姓名,年龄,身份证行为:自我介绍,唱歌Java程序中可以有多个类,变量与函数 都应该隶属于某个类, 不能有变量和函数处于类之外的。在类中的变量可以有两种方式出现:一是,在类中,且不在任何函数中,这样的变量称为类的成员变量。而在类中的某函数中定义的变量,叫 局部变量区别在于,局部变量,它的作用范围是它所处的那对 ,而类的成员变量,在整个类的各函数中都起作用。又如,分数类。class Fractorint fz,fm,sign;/sign 表示符号,正 1,负-1
15、void prin t()System.out.print(sign=1)? -;System.out.pri ntln (fz+ fm);void simplize() int mcf=getMaxCommFactor();fz=fz/mcf; fm=fm/mcf;int getMaxCommFactor()return 0;282283082类的定义class PersonStri ngID;Stri ngn ame;intage;void setData(Stri ng id, Stri ng n, i nta)ID二id; n ame 二n; age=a;void show
16、Me()System.out.println( 我是”name+ ”今年”+age+ “岁”);使用已定义的类:在类外部(在另一个类中)使用类。通过类创建对象。写成的类只是一个类型,类型并不能表达具体的事物,它是抽象的正如:int表示整数类型,但它不是一个整数,不能int =5; 只能 int a=5;用类型创建对象,再为对象提供数据。类是类型(相当于int)所以也不能直接描述一个事物。也只能用它 创建变量,再用变量描述一个事物。用类创建的变量叫对象。对象在使用之前需经两步:声明对象。 Person p1;(比较int a ;)创建对象。p1= new Person();(简单变量不创建)对象
17、创建后可以使用,使用方法两种,存取变量,调用函数。 调用函数: 对象名函数名(参数表);存取变量:对象名变量名当一个类产生后,其中的各变量应该有确定的值。这可以通过调用相应的函数,或为变量赋值这两途径实现。但,这两种方法都要求在程序中用语句完成(由程序员承担)。可能会产生两种不应该的情况,一是对象创建了但没有提供数据; 二 是多次提供了数据。解决这两种问题在面向对象的程序设计中提供一种叫构造函数的机制为成员变量传值。构造函数也是类的成员函数,但它必须与类同名,不可定义任何 返回值类型构造函数的作用是构造一个对象,也就是为成员变量提供数据。它是对象创建(new)时,由程序自动调用,而且在对象的整
18、个生存期 中仅被调用一次,这样正好解决上述两个错误(一是对象创建了但没 有提供数据;二是多次提供了数据)。构造函数可以重载。重载:指在同一个类中可以存在多个同名的函数。普通函数与构造函数都可以重载。重载函数要求各同名函数之间能在参数上区别。即参数的个数和参数的类型应该不同。同类的对象之间可以相互赋值。类成员变量的访问权限。访问权限指该成员能被哪些程序访问。相对于类而言程序分三种,本类中的函数,外部函数,派生类中的函 数类的成员(包括类的成员函数和类的成员变量)有四种访问权限。public :公有,这类成员在程序中任何位置都可以访问。private :私有,私有的成员只能在本类中访问。prote
19、cted:保护,只能被自身或其 派生类访问。友好权限:在程序中未定义任何权限。它可以被类自身访问,也 可以被同一个包中的其他类访问,如写在同一个源程序中的各类就属 于同一包。定义成员的访问权限的目的是为了对成员,尤其是成员变量中的数据进行保护。通常类的成员变量可以定义较严格的权限。派生是面向对象程序设计中的又一个特征。它可以从一个已有类 产生新类。新类中可以继承旧类中的成员。从而可能以递增的方式编程。class Personclass Student extends Personclass Hbeu_Stude nt exte nds Stude nd.public class MyMIDIe
20、t extentd MIDIet 手机程序import javax.microediti on. midlet.*;import javax.microeditio n.lcdui.*;/这两个包是手机程序中必须导入的,程序中会用到这两个包中 的一些类。public class MyMIDIet exte nds MIDIet手机类必须公有,继承于系统类MIDIet类体,改写从MIDIet中继承的函数MIDIet是一个抽象类。何为抽象类?描述抽象事物的类。比喻:三角形类与形状类。三角形就是具体的类,形状就是抽象类。但某形状就有一定的面积。但形状不具体也无法求面积,所以在 形状类中求面积的函数可
21、以定义为抽象函数。abstract doubIe getArea();可见,抽象函数用abstract修饰,且没有函数体。形状类可能是这样:class Shapabstract double getArea();class Circle exte nds Shap double r;double getArea()覆盖基类的抽象函数return r*r*Math.PI;Java中的抽象函数是指没有函数体的函数(因为它无法定义)。 至少含有一个抽象函数的类称为抽象类。MIDIet类也是抽象类。Java中规定,如果某类派生于一个抽象类,那派生类中必须覆盖 (写出函数体)基类中的抽象函数。也就是说,
22、如果某类派生于一个基类,那么派生类中必须重定义 基类的抽象函数,写出函数体。当函数体仍无法定义,可以加空函数体所以,我们的手机程序都必须派生于MIDIet,因此每个手机程序中都必须要重定义:public void startApp()public void pauseApp()public void destroyApp()这样,在概念上正确的手机程序如下:import javax.microediti on. midlet.*;import javax.microeditio n.lcdui.*;public class MyMIDlet exte nds MIDlet public voi
23、d startApp()public void pauseApp() public void destroyApp(boolea n b)这个程序没有定义屏幕类,所以运行时不会有效果。屏幕类 Display在程序必须定义该类的对象。Display disp;声明对象,但并未创建。通过调用Display类中的静态函数getDisplay ()函数可以得到一个 MIDIet的屏幕。Display对象只代表手机屏幕,类似于一个“相框”,如果相框里没 有物体是无法看到相框。然后就可以将一些可显示对象设到相框中。如TextBox,它实际上是一个输入框,也可以显示内容TextBox类的构造函数如下:Tex
24、tBox(String title, String text,int len , int con str);title标题text正文con str限制可以输入的符号len长度,指明能输入到TextBox中的字数。将创建的TextBox对象设置到Display中,相当于将照片嵌到相框 里。import javax.microeditio n.lcdui.*;public class MyMIDlet exte nds MIDletDisplay disp;TextBox text二new TextBox(演示,第一个手机程序,20,1);public void startApp()disp二D
25、isplay.getDisplay(this);disp.setCurre nt(text);public void pauseApp()public void destroyApp(boolea n b)在本例中disp,text可以定义在startApp函数中,这时它们只 是startApp的局部变量,在其他的函数中不能访问的。所以更多的是将它们定义为类的成员变量,成员变量在各函数中都可以访问。该程序可以运行并有一定的效果。将图片引入手机程序各种款式的手机一定支持png格式的图片,不同手机支持的图片 格式类型不同。找到图片,如xx.png,图片必须置于项目文件夹中的res (resourc
26、e资源)然后在程序中进行如下编码。Image img=n ull;tryimg=lmage.createlmage(/xx.p ng);catch(Excepti on e)try.catch()称为java的异常处理,也就是对运行过程中产生的错误进行处理。try被监视的代码段.catch(.)错误处理代码段。Image类中的createImage函数的定义中,抛出了异常。所以在我 们调用这个函数时,必须捕捉这个异常。换言之:语法上createImage函数要求进行异常处理。图片对象创建后,就可以将它用在程序中任何需要Image对象的位List :列表框,提供若干选择项供选择,三种状态,用Ch
27、oice类中的三常量决定:Choice.EXCLUSIVE创建单选项Choice.MULTIPLE创建多选项Choice.IMPLICIT创建隐含列表框,在选中某选项同时,产生事件Form屏幕对象前述TextBox、Alert、List是系统定义好的屏幕组件,我们创建它们 之后只能设置参数,但无法自由定义。唯有Form可以由程序员自由定义界面。所有的Item子类对象都可以添加到Form中去。用的是Form中的 append 函数。Item类的常用子类有:TextField :功能与TextBox类似,用于显示与输入的组件。不同的 是TextBox是屏幕组件,它可以直接设置到屏幕上,TextFi
28、eld不是屏幕组件,只能添加到Form,而且它是单行输入。ImageItem:图像项,用于显示图片。DateField:日期域,用于显示或修改手机中的日期与时间。ChoiceGroup :选项组,功能 与List相同import javax.microediti on. midlet.*;import javax.microeditio n.lcdui.*;public class Demo exte nds MIDletDisplay disp;Formform二new Form(” 个人信息登记”);TextField tf仁new TextField(” 姓名,”,10,TextFiel
29、d.ANY),tf2二new TextField(电话号码,”,11,TextField.PHONENUMBER);ImageItem img;DateField df二new DateField(电子表,DateField.DATE_TIME);public void startApp()Image im二nu II;tryim=lmage.createlmage(/344.png);catch(Exception e)img二new Imageitem(” 图标”,im,lmageltem.LA YOUT_CENTER,);form.appe nd(img);form.appe nd(tf
30、1);form.appe nd(tf2);form.appe nd(df);disp二Display.getDisplay(this); disp.setCurre nt(form);public void pauseApp()public void destroyApp(boolea n b)手机中的菜单(命令项):Comma nd clear 二new Comma nd(” 清除 ”,Comma nd.EXIT,1), exit 二new Comma nd(” 退出 ”,Comma nd.OK,1), option=new Command(选项,Command.SCREEN,1);一个命令
31、项由三部分构成,第二部分为命令型态,决定命令的显示方 式,8个命令型态有级别之分,? Command.BACK :返回前一屏幕;? Command.CANCEL :取消当前正在进行的工作;? Command.EXIT :退出应用程序;? Command.HELP :请求在线帮助;? Command.lTEM :选择命令是当前屏幕中的某一项;? Command.OK :确定当前正在进行的动作;? Command.SCREEN :应用到当前屏幕的命令;? Command.STOP :中断当前正在运行的动作。从上到下,级别由高到低,高级别的命令项可以单独显示在左边, 而 其他级别相对低命令项全部压缩
32、在右边的 Menu项中。第三选项是优先级,决定命令项在界面上出现的次序。 优先级高(数 越小)越先出现。因此可以总结命令项在界面上出现的先后的规律:型态型态相同,决定于优先级型态优先级都相同,决定于程序中添加的次序只有比Exit更高的型态的命令项可以出现在左边除Alert之外,其他的屏幕型组件都可以添加命令项:Form List TextBox Canvas事件模型:事件:当按下手机上的按键,就发生了事件。事件分两种。一种是高级事件:按下两个软件按钮产生的事件,这些事件与软件有 关,如选定某个命令项。这类事件主要是处理 Comma nd组件事件。 另一种是低级事件:按动除软件按钮之外的其他按键
33、,产生的事件。 低级事件发生在Canvas组件上。高级事件与低级事件的区别在于除事件发生的来源不同之外, 高级事 件的通用性好,如果在程序中处理的是高级事件,这种程序很容易移 植到其他机型。或者说,高级事件处理与机型无关。低级事件,与机型相关联,所以针对低级事件处理的程序,不保证有 好的移植性。不保证在某机型上运行正确的程序,在其他机器上一定 可以正确运行。以高级事件处理为例,说明事件处理的方法。首先当然必须要在程序加入 Comma nd.要处理Comma nd上发生的事件,必须要用某个类的对象作监视 器,监视器对象的作用是,监控事件是否发生以及事件发生后应该进 行的处理。监视器就是某类的对象
34、,只要该类实现了对应的接口。具 体联系到高级事件,它应该实现 CommandListener接口。如监视器 类可能是如下:public class MyMIDIet exte nds MIDIet impleme ntsComma ndListe ner在java中规定,如果某类实现了某接口,那就必须在该类中写出 这个接口的 全部接口函数。CommandListener接口中只定义了一个函数。public void comma ndActi on( Comma nd c, Displayable d)当监视器所监视的事件发生,就会使程序转到该函数中运行。第三,要让添加了 Comma nd的屏幕
35、组件指定监视器。其中的this是在类中指代该类的对象import javax.microediti on. midlet.*;import javax.microeditio n.lcdui.*;public class MyMIDlet exte nds MIDlet impleme ntsComma ndListe nerDisplay disp;List list;Comma ndcomm1= new Comma nd(” 退出”,Comma nd.BACK,1),comm2二 new Comma nd(”还原,Comma nd.SCREEN,1),comm3=new Comma nd(
36、” 结果,Comma nd.SCREEN,2);public void startApp()list=new List(选择年龄段 ”,Choice.EXCLUSIVE);list.append(0-20 岁,null);list.append(21-40 岁,null);list.append(41-60 岁,null);list.append(60 岁以上,null); list.addComma nd(comm1);list.addComma nd(comm2); list.addComma nd(comm3);disp二Display.getDisplay(this);disp.setCurre nt(list);public void pauseApp()public void destr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国工业胰酶市场调查研究报告
- 2025年中国巧克力模具数据监测研究报告
- 2025年中国工业设计用模板数据监测报告
- 全面解析焊接工程师证书考试试题及答案
- 2025年中国尼索地平数据监测报告
- 人教版生物七年级下册第四单元第六章第二节神经系统的组成 教学设计
- 2024年Adobe设计师考试的智慧探索试题及答案
- 交通与社会心理行为的相关性研究试题及答案
- 2025年中国女式TPR鞋底市场调查研究报告
- 2025年中国太阳神口服液数据监测报告
- 电力安全工作规程(完整版)
- 2024-2030年中国临近空间飞行器发展规划及未来前景展望研究报告
- 瑞幸咖啡认证考试题库(值班主管)
- 《广东省智慧高速公路建设指南(试行)》
- 工厂自动化规划报告
- 《分布式生活垃圾中转站臭气处理技术规程》
- 2023年LNG设备操作维护手册培训资料
- 一般企业财务报表附注(模板)
- 波斯帝国课件
- ICD-10和ICD-9-CM-3编码质控解析-循环系统
- 河南省劳动关系协调员职业技能大赛技术工作文件
评论
0/150
提交评论