OOP,iOS,MVC
何政达
【前言】:写这篇文章的目的是总结一下这几天学到的有关iOS编程的有关知识点。主要分三部分:OOP的设计理念;iOS的构成;MVC的具体应用。
Part I :OOP
说起OOP,大家都知道是什么——面向对象程序设计(Object-OrientedProgramming)。但是我们为什么要使用这样的一种设计模式来进行我们的程序设计呢?记得一开始学习编程的时候是小学六年级,当时学习的是BASIC;上了初中以后学习PASCAL语言;上了高中开始学习C语言;到了大学之后逐渐熟悉了Java,Python,Object-C。在常用的设计模式当中,面向过程和面向对象这两种设计模式是使用最广泛的。面向过程往往用于一个具体任务的设计实现(比如在科学计算当中具体算法的实现);而面向对象的设计模式往往是针对可视化程序、网络以及移动程序设计的;在这些程序当中,可能没有一个真正线性的从头到尾的“流程”。比如一个程序上有许多按钮,用户可能随意按任何一个按钮,而且人和人之间选择的方式又有所区别,因此顺序式的程序设计显然不能满足我们对于程序的高要求。那么下面我们就用非常简单的语言来描述一下什么叫面向对象程序设计。
面向对象程序设计的灵魂概念是“对象”(别想歪了。。。。)。一个对象就是一个“实例物体”,它具有两种最基本的属性:(1)将自己与别人进行区分的instantvariable(2)自己可以执行的一些method。从这我们就可以知道我们使用一个对象的方式其实非常简单:利用instant variable找到我们想用的对象,然后再使用方法调用来运用相关的方法来完成任务。对象与对象之间的协作也是非常重要的一个方面,我们使用一种所谓“protocol”的方法来进行这样的协作,用来完成更复杂的任务。当然还可以有delegate这样的复杂关系(一个对象的方法会使用另一个对象的方法)。
那么我们如何去build一个对象呢?这就需要一个抽象化的思维:类。比如我们人,你和我都是人的实例(也就是对象),我们有自己的名字、年龄、身高、体重,这些数据就是我们的instantvariables;同时我们还拥有一些方法:说话、唱歌、吃饭等等,这些方法说明了我们可以做什么事情。但是人作为一个概念却具有广泛的共性,这样我们就可以将这样的共性提取出来,和对象一样,进行两部分的设计:(1)instantvariables(2)methods。当我们建立好了一个类以后,我们就可以利用类中的Init(初始化)方法来新建一个对象并对其进行初始化。而对于Instantvariable(在Object-C当中称为property)我们也会有相应的getter与setter来进行选择和处理。
要想良好的使用OOP的程序设计模式,思考方式的转变必不可少。原来我们都是以“算法”为中心,以具体的步骤为中心。但是在OOP设计模式中,我们更关心的是Object之间的相互协作来完成复杂的任务。而且在OOP当中,重用性和封装程度是非常重要的两个指标,我们需要尽可能增加我们类的重用性以及尽可能将我们需要的功能封装到类当中。当然如果我们需要对类进行进一步的细节化(但又不是直接新建一个object),那么这个时候就开始了inherite(继承)的观念。目前我还没有学到有关于继承的深层次的东西,因此这次就不在这里叙述。
总结一下,OOP的核心就是:类àObjectàObject之间的协作。
iOS
什么是iOS?iOS包括哪些东西?这是我们在进行iOS开发之前必须要搞清楚的问题。iOS是运行在iphone以及ipad上的操作系统。它是Unix为底层的一个移动端操作系统。而在unix kernel之上又加了许多的应用和接口(API),以及相应的框架(Framework)。因此iOS最核心的应该是:(1)Objective-C语言(2)Cocoa Touch框架(3)其他的重要服务(视频、音频、网络、游戏等等)。在StanfordCS139P第一讲的PPT当中有详细的介绍。因此在这里就不赘述了,如果好奇想了解更多,不妨去看看第一讲的PPT。因此学习iOS程序设计最困难的也就是掌握Cocoa Touch以及iOS包含的众多Framework。我们要清楚:所有的Framework都是OOP的,它们都使用OOP的设计理念来进行设计并进行整合的。因此整个iOSprogramming就是OOP。这点非常的重要。
MVC
在iOS编程当中,我们使用的设计模式是MVC(Model-View-Controller)。那么下面就分别按照Model,View,Controller进行总结。
Model顾名思义就是你的程序是做什么的,你的程序的具体实现思路怎样(注意:在model当中的逻辑是完全不考虑UI的,我们就在纯粹的思维上去进行思考)。它会包含你的程序所需要的所有数据结构以及数据结构之间的相互作用关系。这就是model。有了model,就知道程序是如何去做的了。
View就是我们程序和用户进行交互的地方,也是我们如何设计让我们的程序去执行的地方,但是注意:View完全不知道我们要执行的是什么东西。它只听Controller的话。Controller让它干嘛,它就干嘛。让它显示什么就显示什么。
Controller是连接Model和View的桥梁,也是我们需要在Xcode编程当中花大力气去编写的。Controller可以向Model询问,也可以向View询问。
Model,View,Controller之间的关系:
(1) Controller可以指向Model以及View
(2) Model绝对不能和View进行互动
(3) Model如果改变想提醒Controller,需要使用一种类似于“radio”的方式进行
(4) View如何受到互动(比如用户按了一个按钮),那么它会以target-action的方式告诉Controller,然后等待Controller告诉它下一步应该如何去做。
(5) View也会和Controller有两种方式的互动:一种称为Data Source,另外一种是“did,should, would”形式的。这个在不同的UIView的Object中会有应用。
如果我们熟练掌握了上面5种MVC中的交互方式,我们就能很好的使用Xcode以及iOS中的Framework,因为它们的设计都是基于MVC的。
【总结】:在上面我们简单的总结了OOP,iOS以及MVC的相关知识点。当然我才刚刚开始接触iOS,后面还有很长的路要走,要写许多许多自己的class;也要熟悉iOS所提供的Framework以及相应的SDK。千里之行始于足下,加油吧。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。