开发一个移动学习应用外文翻译资料

 2022-11-26 08:11

英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料


开发一个移动学习应用

移动市场的发展对包括教育在内的各个领域都有着很高的影响。用移动智能设备来处理教育中大规模的事务似乎并不太远。移动学习应用程序可以针对所有主流的移动操作系统开发出单机版本或者是网络版本。本文的目的是为了阐明iOS设备上移动学习应用评价模块的实现。移动学习应用程序主要针对高等教育机构。该应用程序使用网络服务来获取内容并验证用户。

关键词:移动学习,移动应用开发,iOS,模型-视图-控制器、Web服务、评估

1 介绍

移动学习在很多学校和企业中作为一个研究课题。世界各地有很多移动学习应用项目正在开发中或最终被确定下来,它们基于不同的移动平台或者网络专门适配于移动设备中,如[ 1 ],[ 2 ],[ 3 ]和[ 4 ]。

移动学习应用程序可以包括以下模块:

  • 内容介绍(课程);内容包括文本,视频,音频,图片;它可以只是简单地显示文本或加载PDF,或者使用多媒体组件呈现其它非常复杂的文件[ 5 ];
  • 简短的评估(小测验),这些都是提供给学生,以测试他们的知识,用户可以在任何时候进行这些测试,并没有时间限制;
  • 最后的评估(测试),这些测试是规定了特定的日期和时间,须在一个有限的时间内进行;
  • 学生训练交流,通过使用众所周知的工具(电子邮件或社交网络),或一个基于特定协议的工具。
  • 内容共享(电子邮件、社交网络、云等);这将允许用户将内容或结果分享给其他注册用户或任何应用允许的人;
  • 布置家庭作业;学生可以根据需求加载一个文件或填写一些数据表格。

每个开发人员选择在其应用程序中包含一个或多个模块。应用程序可以开发为单机版(所有内容存储在设备上),分布式应用程序(本地客户端和提供学习内容的服务器)或者基于网络的应用程序(客户端是一个简单的移动网络浏览器[ 6 ])。根据用户的需求和行为考虑到很多品质特点并设计应用程序是非常重要的[8]。

对于交互移动学习应用来说,客户端和服务器通过使用一些列协议来相互通信,像HTTP这样的标准通信协议或者自定义的协议。同样的,交互移动应用可以和服务器同步一定设备。

在这个领域,我们使用一个研究项目的框架开发出了很多移动学习应用的原型。在这方面,我们开发了一个能为学生评定提供方法并基于SOAP网络服务的应用。近期主要的工作是安卓平台移动学习应用的开发。结果将在后面呈现[4]。

前一个项目主要的目的是让界面尽可能的简洁,着重于基础功能的实现。进一步的版本需要着重于图形界面和用户交互(例如使用手势等)。

使用网络服务器有以下优点:

  • 客户端应用可以是任何类型(移动设备,电脑);
  • 客户端可以几乎使用任何语言和技术开发;
  • 客户端可以是任何操作系统或平台;

网络服务包含了学生评估的方法。每一个学生可以登录并选择一个主题的测试。这个主题是和移动应用开发有关的。

图1描述了移动设备和服务器之间的交互,高亮部分是一些网络服务的方法。

图1 使用Web服务的交互模块评估

通过给服务端增加新的方法可以很容易的扩充并支持其他的功能。

本文阐述了在iOS移动学习应用开发中的主要收获,使用相同的网络服务。应用程序就可以实现一个多选测试。

本文目录结构如下:

iOS应用开发的部分讲解了iOS操作系统的特点和iOS应用开发的特性。

网络服务介绍了iOS应用中使用网络服务的主要框架。

移动学习应用部分阐明了iOS移动应用开发。

本文结尾是总结和对未来的展望。

2 iOS开发

iOS是苹果公司在2007年开发的用于他们移动设备上的操作系统。核心的操作系统和OS X使用的近似,两者均是基于Unix的。该操作系统支持ARM架构的处理器。

目前iOS是仅次于安卓的最流行的移动平台,超过2013年第三季度的12%。

图2描述了iOS平台的主要结构:包括Core OS, Core Services, 多媒体 和Cocoa Touch。多媒体层包括对打印和绘图的支持(OpenGL,QuickTime等)。

图2 iOS平台层级

Cocoa Touch是MAC OS X Cocoa API的子集。它主要处理图形界面和用户交互。Cocoa Touch包括了UIKit框架,Foundation框架和其他体能够访问系统资源如指南针,GPS,照相机[9]的框架。

在其之上的是用户和系统预装的应用。iOS原生应用开发包括了Xcode集成环境和主要的编程语言Objective-C的使用。OC是C语言的扩展,它允许开发者使用类和对象。

OC的类用@interface声明。消息(方法)的实现在@implementation中。关键字@class被用来对类进行前置声明。

通常,类的声明被存储在头文件(.h)中,而类的实现在资源文件(.m)中。实例变量被声明在@interface的一对大括号中。方法(也叫作消息)的名称包括了一对对由冒号分隔开的参数字符。方法的调用和C/C 或者Java的函数不同。例如,Test类定义了一个方法:

setRaspunsuriPentruIntrebare:cuVarianta

通过这样的方法:

@interface Test : NSObject


-(void) setRaspunsPentruIntrebare: (int)idIntrebare cuVarianta : (int)varianta;

@end

最前边的减号表明这是一个实例方法。前面如果是加号则表明是一个类方法(静态方法)。方法调用时使用一对方括号,像下面这样:

[self.testCurent setRaspunsPentruIntrebare: idIntrebarecuVarianta: idVarianta];

方法是不能被重载的,即使只有参数名不同。所有的class类型对象都是动态分配空间的。对象的创建包括了两个方法:alloc(为默认的实例变量分配内存空间)和init(对指定的实例变量和他的父类的成员变量初始化)。

为了访问数据变量,可以在类中添加属性。用@property关键字来定义属性,为了让它在内部生成与数据变量相对应的seeters和getters,可以在在类的实现中使用@synthesize关键字。

Cocoa类均继承自NSObject类。iOS应用基于模型-视图-控制器设计模式[10],[11],如图3所示:

图3 模型-视图-控制器设计模式

模型是和数据管理相关的。那有应用程序的业务逻辑。对于移动学习应用来说,模型的代表就是Test类。它主要负责当前测试的问题和不同问题之间的衔接。

视图处理用户界面和交互。移动学习应用包括三个视图:一个是用来展示所有可用的测试(TestViewController类)一个用来回答问题和展示候选答案(IntrebareViewController类),最后一个是用来展示用户的意见反馈(RaspunsuriViewController类)。

控制器确保视图和模型之间的联系。它根据用户不同的操作来改变模型的状态,并展示在确定的视图上。通常每个视图都有一个对应的控制器。以下是移动学习应用的控制器结构:

  • 处理用户选择(测试问题和答案);
  • 填写的列表和用户控制的数据(问题,测试,答案等);
  • 展示用户处理信息,常规信息和错误信息。

用户交互界面使用IB和storyboard实现的。storyboard是一个场景(视图)的集合。

每个视图之间通过segue连接起来。Figure4描述了移动学习应用在Xcode中的视图设计。

图4 移动学习应用在故事板文件中的场景

为了在真机上测试,开发者必须加入Apple的开发这计划[12].注册时可能会收取一定的费用。移动学习应用使用Xcode5的iOS7 SDK开发,电脑的系统是OS X Mavericks
。

本应用测试采用的模拟器是iPhone Retina(4英寸)。当前版本的模拟器不能使用相机功能,但对我们来说足够了。

3 Web服务的使用

Web服务可以用SOAP和WSDL协议或者REST设计风格搭建。REST服务使用URLs,如果使用HTTP,则要分别使用单独的命令(GET,POST,DELETE等)。

对与当前版本的应用程序,Web服务基于SOAP和WSDL,并使用.NET技术实现。Web服务包括获取测试题目的数量,以及每个测试中题目的数量以及这些题目本身等。Web服务还为用户提供了登录功能。对于iOS端,有很多种利用Web服务的方式:

  • 第三方的像RESTKit和Spaghetti这样的采用Web服务的开源实现,或者高级的像AFNetworking这样的网络框架;
  • 开发者们自己实现的利用网络服务类库和方法主要采用了标准的网咯通信类,如NSURLRequest和NSURLConnection;
  • 第三方工具使用Web服务的基于WSDL的URL,像wsdl2objc[13]和SudzC[14]。

我们采用了基于Web服务的SOAP和wsdl2objc。使用WSDL,根据服务地址,该工具可以生成所有客户端访问服务器的所有文件。Web服务的名字叫做Service1,该工具将会生成一系列文件:

  • 一些文件用来处理对服务端的请求和响应结果。
  • 两个与Web服务相关的文件:一个头文件(Service1.h)和一个实现文件(Service1.m)。

表1展示了通过wsdl2objc工具生成的用于Web服务的类和他们的作用。

我们可以看到,每一个Web服务的方法都由两个类:一个是方法的调用,另一个是方法的返回结果。

表1 通过wsdl2objc工具生成用于Web服务的类

这些类用来初始化链接,以便于调用服务端的方法获取返回结果。

表单1展示了发起网络请求的方法。该方法是一个类方法(静态的),它调用了Web服务提供的GetNumarTeste方法,用来获取可以分配的测试数量。

表单1中提供的方法需要用户ID作为参数被调用

nrTeste = [AccessSW getNumarTeste: uid];

AccessSW是用于实现Web访问服务方法的类。为了确保可以跟用户保持持续的交互,甚至长时间的数据交换,Web服务被做成了异步的。

对比安卓平台,它用了kSOAP, wsdl2objc工具生成了使用Web服务所有必需的类。这包含了题目和可能的答案的复杂结果的类。安卓程序的原型需要实现这些复杂的类去正确地处理响应。

4移动学习软件

应用程序连接到Web服务以获取题目和可变的响应体。请求和响应使用纯XML文本格式。

应用启动图如图5所示。可用的测验就像一个表一样显示在表视图中(继承自UITableView类),用户可以选择表中的任何测验进行学习。相关的控制器继承自UITableViewController并且实现了与表格打交道时所需要的UITableViewDataSource(提供数据源)和UITableViewDelegate(用于处理用户交互)协议。

当需要展示表中的数据时,UITableViewDataSource协议要求至少实现两个方法。这些方法提供了组的个数,每组中的行数,头部和尾部的标题等。

UITableViewDelegate控制单元格的展示方式(单元格的高度,自定义的头部和尾部,单元格内容的编辑等)。

图5给出的测验只有一个主题(移动应用开发),但未来新的版本将扩展为多个主题。

图5 最初的应用程序屏幕

这个表有一个分组,分组里的行数取自于数据库中当前主题的测试数。这些值通过数据源协议的两个方法(numberOfSectionsInTableView和numberOfRowsInSection)返回从而控制分组和行数。

cellForRowAtIndexPath方法由相同的协议提供,将会用测试的名称初始化每一行的标签。当前的实现包含了4个由相应编号确定的测试并且标签也进行了初始化。

这个表在viewDidLoad方法里初始化。为了确保来自服务器的所有数据在列表显示之前可用,从代码摘录表单单2中可以看到,Web服务方法的调用使用了blocks。这样表视图将会收到刷新数据的请求,从而用户能够在表视图里看到所有请求到的数据。

单元格和下一界面的联系是在Interface Builder中创建的。这样的交互不需要编写任何一行代码就能完成。

当用户选择了一个测试之后,下一界面将会显示所选测试的第一题。

表单2控制UITableView数据加载的代码摘录

视图之间的对象传递在表单3中所示的prepareForSeque方法中:

表单3 视

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[29735],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。