在编程行业有句老话,大意是:“只要多添加一个间接层,计算机科学中就没有解决不了的问题。”间接这个词的含义很简单——不在代码中直接使用某个值,而是使用指向该值的指针。下面是一个真是的例子:你可能不知道自己最喜欢的比萨饼店的电话号码,但你知道可以查阅字典号码薄来找到它,那么,使用电话号码薄就是一种间接的形式。
在编程时,可以利用多层间接,如编写一段代码来查询其他代码,而后者又可以访问另一层代码。你大概拨打过技术支持热线。你对支持员工说明了问题,他将你转接到能够处理此问题的具体部门。该部门员工又将你转接到下一级技术人员,他可帮你解决问题。如果你和我们一样,在这时发现自己拨打了错误的号码,那么你不得不转向另一部门寻求 帮助,这种推诿就是一种形式的间接。幸运的是,计算机的耐心是无限的,为了找到答案,能够接受多次差遣。
关键词:变量和间接
基本变量就是间接的一种实际应用。考虑下面这个输出数字1到5的小程序。
#import <Foundation/Foundation.h>
int main(int argc, const char *argv[])
{
NSLog(@”Thenumbers from 1 to5:”);
int i;
for(i=1;i<=5;i++){
NSLog(0);
}//main
假设你想更新这个程序,使其输出数字1到10,那么你需要更改两处代码:
NSLog(@”The numbers from 1 to10:”);
i=1;i<=10;i++
这样修改程序显然不需要太多技巧,你可以用简单的搜索替换操作来完成,而且只需改变两处。然而,在比较大的程序中,执行搜索和替换就麻烦多了,仅仅是将5替换为10,我们也必须小心:毫无疑问,有些情况下数字5是与此无关的,所以不应该改为10.
解决这个问题就是变量的目的。不必直接在代码中修改上限循环值(5或10),我们可以将这个歌数字放到变量中,于是添加一个间接曾,这样就能够解决问题。添加变量后,就是告诉程序“去查看名为count的变量,它会说明进行多少次该循环”,而不是“执行5次循环”。现在程序如下:
#import <Foundation/Foundation.h>
int main(int argc, coust char *argv[])
{
int count =5;
NSLog(@”Thenumbers from 1 to %d:”, count);
Int I;
For(i=1;i<=count;i++){
NSLog(@”%d\n”, I );
} NSLog(@”Thenumbers from 1 to5:”);
return(0)
}//main
通过添加变量,代码现在更加干净,并且更易于扩展。为了修改循环值,她们不必仔细查看程序中使用的每个数字5,以确定是否需要修改,而是只需修改count变量就可获得期望的结果。
使用文件名的间接
文件是另一种间接的示例。这个重要程序是新web2.0公司站点Length-o-words.com的关键技术。
#import <Foundation/Foundation.h>
int main(int argc, coust char *argv[])
{
coust char*words[4] = { “aardvark”, “abacus”, “allude”, “zygote” };
int wordCount =4;
int i;
for( i=0; i< wordCount; i++){
NSLog( @”%sis %d characters long “, words[ I ], strlen(words[i]));
}
return(0);
}//main
for循环可在任何时候确定要处理words数组中的哪个单词。循环内的NSLog()函数使用%S格式说明符来输出单词。之所以使用%S,是因为words是C字符串数组,而不是@”NSString”对昂。%d格式说明符取strlen90函数的整数值,此函数计算字符串的长度,并输出单词本身及其长度。
分享到:
相关推荐
3.4 Objective-C中的OOP34 3.4.1 @interface部分34 3.4.2 @implementation部分38 3.4.3 实例化对象40 3.4.4 扩展Shapes-Object41 3.5 小结43 第4章 继承45 4.1 为何使用继承45 4.2 继承语法48 4.3 继承的...
are lots of Objective-C books out there, but all of these books assume you have programmed before and know OOP. We wanted to write a book that takes readers from knowing nothing about programming to ...
S2-------JavaOOP全程解答S2-------JavaOOP全程解答S2-------JavaOOP全程解答S2-------JavaOOP全程解答
《Objective-C程序设计》(作者杨正洪、郑齐心、李建国)通过大量的实例系统地介绍了Objective-C语言的基本概念、语法规则、框架、类库及开发环境。读者在阅读本书后,可以掌握Objective-C语言的基本内容,并进行...
What is OOP or object oriented programming and how it impacts Objective-C What are the Objective-C language features and the foundational APIs How to use the Filesystem, I/O and networking APIs How to...
Objective-C: From Zero to Hero - Object Oriented Programming 1
Objective-C: From Zero to Hero - Object Oriented Programming 2
Java-OOP --- 1 玩OOP
冒号课堂——编程范式与OOP思想 冒号课堂——编程范式与OOP思想 冒号课堂——编程范式与OOP思想 冒号课堂——编程范式与OOP思想
Objective-C中Self和Super详解本文要介绍的内容,在Objective-C中的类实现中经常看到这两个关键字self和super,以以前oop语言的经验,拿c++为例,self相当于this,super相当于调用父类的方法,这么看起来是很容易...
实战出来的程序员的话语描述,没有科班出身的程序员的叙事语言的噪音混杂和误导性质,很具有入口体验的再现性质。
基于 Objective-C 的面向对象编程 中文
我们将关注组件测试(编写单元测试)和测试驱动开发(TDD)的概念。获得的技能了解面向对象的编程范例应用面向对象编程的原理创建类和继承的层次结构组件测试(单元测试) 使用迭代器和生成器与装饰员一起工作证书
SuperMarket-project---Advanced-OOP---Java:在高级OOP课程中,我们要求创建一个简单的JavaFx程序来管理收银员的办公室。 主要重点是设计模式,二进制文件,映射和线程。 必须使用命令设计模式以及观察员,备忘录等...
Softuni-C-Sharp-OOP完成的任务 SoftUni C#OOP已完成的任务
冒号课堂-编程范式与OOP思想 mobi kindle
Learning-Object-Oriented-Programming-Explore-and-crack-the-OOP-code-in-Python-JavaScript-and-C-.pdf
OOP-LAB-2563 OOP-LAB-2563