仓酷云

标题: IOS制作之前端之Android进门(5):MVC形式(下)仓酷云 [打印本页]

作者: 飘灵儿    时间: 2015-1-18 11:32
标题: IOS制作之前端之Android进门(5):MVC形式(下)仓酷云
在python中的函数__xxxNSString字符串NSArray数组NSDictionary字典这些都需要弄很清楚其他的类都是一个套路NSMutableArray这样带Mutable的类代表可变的在上一篇文章中,我们将View类独自出来并完成了计划和编写。此次我们将完成Model类,并经由过程Controller将二者毗连起来,完成这个盘算器程序。
模子(Model)就是程序中封装了数据,并界说了操纵和处置这些数据的逻辑的对象。在盘算器的例子中,就是处置输出的操纵数和运算符,并盘算前往了局。Let’sGo
(注重:示例中间接利用double范例来处置数据,但严厉来讲良多言语的浮点数盘算都是不准确的)
一,计划模子的接口

在程序构建之初,我们起首思索的应当是各模块间的封装和扩大,计划好模块的接口,然后再完成模块的细节,最初把模块组合起来组成全部程序。这就是面向接口编程的观点。
思索一下Model类,它次要完成三个功效,1,承受操纵数输出;2,承受运算符输出并前往盘算了局;3,重置。这些功效次要都是被内部利用的,以是基于此来计划接口,对别的类而言,只需晓得该接口界说了甚么办法然后利用就行,而不必要懂得完成细节。
创立com.test.interfaces包,并右键选择New->Interface创立一个名为ICalculator的接口(一样平常接口定名都以年夜写字母I开首)
IOS制作之前端之Android进门(5):MVC形式(下)仓酷云
登录/注册后可看大图

<br>
创立com.test.model包,并创立CalModel类,同时完成ICalculator接口。
IOS制作之前端之Android进门(5):MVC形式(下)仓酷云
登录/注册后可看大图

<br>
二,经由过程栈和递回函数完成盘算器算法

盘算器的盘算划定规矩很复杂,从左到右盘算,不思索运算符的优先级,比方:2+1*2&ndash;3,相称于:(((2+1)*2)&ndash;3)=3;如许包管编写的浅易性。
我们晓得,栈是一种落后先出的数据布局,我们经由过程一个栈dataStack纪录输出的运算数和操纵符。如图所示:
IOS制作之前端之Android进门(5):MVC形式(下)仓酷云
登录/注册后可看大图

<br>
所谓的递回函数,就是承受无限的天然数,经由过程反复挪用本身,终极失掉一个天然数了局的函数。算法的中心就是计划如许一个递回函数popOpOffStack来对dataStack举行求解,历程如图:
IOS制作之前端之Android进门(5):MVC形式(下)仓酷云
登录/注册后可看大图

<br>
三,编写程序

按下面的思绪,popOpOffStack能够独自写出,其实不必要实例化后才干利用,以是将popOpOffStack设为CalModel的静态办法则可,如图:
IOS制作之前端之Android进门(5):MVC形式(下)仓酷云
登录/注册后可看大图

<br>
完成编写后,能够构建一个栈来测试一下,由于前往的是double范例,以是了局是3.0,如图:
IOS制作之前端之Android进门(5):MVC形式(下)仓酷云
登录/注册后可看大图

<br>
IOS制作之前端之Android进门(5):MVC形式(下)仓酷云
登录/注册后可看大图

<br>
中心算法完成后,完成对运算数和操纵符的输出的处置并增补别的细节。如许我们的CalModel就完成了。
IOS制作之前端之Android进门(5):MVC形式(下)仓酷云
登录/注册后可看大图

<br>
四,经由过程Controller将Model和View毗连

在Android的文档中,Activity是被保举作为Controller的脚色,卖力视图和模子的和谐、相同。而从Activity所具有的功效的角度看,也是最符合的选择。至此,代码布局也明晰了。MainActivity将作为Controller和谐视图和模子,并对一些数据及细节举行处置。其代码以下:
IOS制作之前端之Android进门(5):MVC形式(下)仓酷云
登录/注册后可看大图

<br>
经由过程MainActivity将模子和视图毗连起来后,我们的盘算器也终极完成了。能够运转测试一下。
五,停止及回覆

本主要点:
1)经由过程MVC计划,使盘算器程序有了较好的扩大和保护才能,假设利用另外一种盘算器算法,只需创立另外一完成ICalculator接口的Model类,并取代本来的CalMode则可。当必要增添功效时,能够将代码增添到对应的模块处而不必随便写在一同。
2)此次只先容了最基础的MVC常识,而至于MVC形式更初级的利用和模块间的通讯会在前面再讲。从代码的编写中,人人大概会发明MainActivity实在很难举行笼统,由于都是一些毗连的逻辑和细碎代码。这也就是为何MVC观点提出这么久以来,Model和View的封装手艺有了长足前进,而Controller却没甚么冲破的缘故原由之一。作为前端,这方面人人能够对照一下现时盛行起来的MVC库,对Controller脚色的处置。而苹果在Cocoa中对Controller的封装也是很有特征,无机会会先容对照一下。
3)例子中的细节处置还能够处置得更好,就留给人人修正。别的,偶然间的话能够实验利用典范的双栈算法来完成这个盘算器,交换CalModel类。

只能IB识别IB也没那么高深XIB文件解开之后就是一堆代码之前面过一家小公司看我当时写的程序里面用到了IB一脸不屑
作者: 冷月葬花魂    时间: 2015-1-21 09:49
到大三时,学院与我去培训的机构成立了实习基地,并让我们寒假去实习了一段时间,感觉还不错,于是在大四的时候去培训了
作者: 透明    时间: 2015-1-30 14:09
边吃零食边看Stanford的视频教程
作者: 因胸联盟    时间: 2015-1-31 23:15
培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。
作者: 爱飞    时间: 2015-2-5 12:44
其次学习方法和学习心态很重要,在学习当中应该保持一颗良好的心态。应该借鉴别人好的学习方法,大家互相帮助,取长补短。
作者: 小魔女    时间: 2015-2-9 01:56
其次学习方法和学习心态很重要,在学习当中应该保持一颗良好的心态。应该借鉴别人好的学习方法,大家互相帮助,取长补短。
作者: 小妖女    时间: 2015-2-26 18:16
要学会通过各种方法将面前的事情变成自己感兴趣的,那专研起来就不会是无聊和折磨了。
作者: 再见西城    时间: 2015-3-2 18:31
同很多iOS开发者一样,我也是通过培训进入到iOS开发这个行业,开始没有打算培训,只准备自己学习一些计算机编程相关的知识,毕业时找一份编程相关工作(本人是信息与计算科学这个专业,是数学系)。
作者: 灵魂腐蚀    时间: 2015-3-11 05:17
要学会通过各种方法将面前的事情变成自己感兴趣的,那专研起来就不会是无聊和折磨了。
作者: 莫相离    时间: 2015-3-12 01:09
其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。
作者: 再现理想    时间: 2015-3-17 11:09
最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。
作者: 谁可相欹    时间: 2015-3-18 10:14
我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下,供广大网友一起讨论交流。
作者: 柔情似水    时间: 2015-3-19 20:37
iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。
作者: 变相怪杰    时间: 2015-3-25 09:51
首先是基础,在汉昌的课程非常全面。从object—c到最后的毕业项目,基本上方方面面都涉及到了,我是一名非计算机专业的学生,起初学习还有点吃力,因为基础知识薄弱。经常像听天书
作者: 简单生活    时间: 2015-4-1 17:32
近期由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来,
作者: 若天明    时间: 2015-4-6 06:12
特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地
作者: 若相依    时间: 2015-4-6 07:58
边吃零食边看Stanford的视频教程
作者: 分手快乐    时间: 2015-4-6 23:08
down下code4app网站的每个分类的代码挨着看
作者: 老尸    时间: 2015-5-2 15:31
down下code4app网站的每个分类的代码挨着看
作者: 仓酷云    时间: 2015-5-6 00:08
我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下,供广大网友一起讨论交流。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2