【iOS开发之Objective-C】面向对象编程--间接
2015-06-26 20:57
519 查看
面向对象编程(Object-Oriented Programming)的首字母缩写为OOP,这是一种编程技术,最初是为编写模拟程序而开发的。OOP是一种编程架构,可构建由多个对象组成的软件。
在变成界有句老话,大意是这样的:“只要再多添加一层间接,计算机科学中就没有解决不了的问题”。
1.变量与间接
看下面的程序,输出数字1~5,他使用NSLog()语句来显示循环运行的值。
通过添加变量,代码变得比之前更加简洁,而且也更易于编辑了,尤其是在编程人员需要修改代码的时候。
2.使用文件的间接
文件是间接的一个示例。先来看如下的代码:
words.txt文件中的内容:
aardvark
abadcus
alude
zygote
首先,fopen()函数打开文件words.txt文件以便读取内容,然后fget()从文件中读取一行文本并将其放入数组word中。fget()调用会保留每行之间用来断行的换行符,但我们不需要它,如果留下换行符就会被自动计为单词中的一个字符。为了解决这个问题我们将换行符替换为\0,这表示字符串的结束。最后我们使用NSLog()输出单词及其长度。输出结果和上面的相同。
注意:
fopen()使用的路劲名称/tmp/words.txt。/tmp是Unix临时目录,这意味着每次计算机重启都会清空。在真是的程序中,可以将文件放在一个可以永久保存的位置。
在变成界有句老话,大意是这样的:“只要再多添加一层间接,计算机科学中就没有解决不了的问题”。
1.变量与间接
看下面的程序,输出数字1~5,他使用NSLog()语句来显示循环运行的值。
<span style="color:#009900;">// // main.m // OOP_1 // // Created by zhum on 15/6/23. // Copyright (c) 2015年 zhum. All rights reserved. //</span> #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"The numbers from 1 to 5"); for(int i=1;i<=5;i++) { NSLog(@"%d\n",i); } } return 0; }如果,我们要程序输出20那么,我们这里就需要修改两个部分了,NSLog(@"The number from 1 to5");和for(int i=1;i<=5;i++)把数字5换为20,是不是有点麻烦。如果在比较庞大的程序中,执行搜索和替换就麻烦多了,还要防止无关部分的代码也被替换了。如果我们增加变量count,那么修改起来就容易多了,我们也只需要查看变量count的值就知道程序执行了多少次。
<span style="color:#009900;">// // main.m // OOP_1 // // Created by zhum on 15/6/23. // Copyright (c) 2015年 zhum. All rights reserved. //</span> #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... int count = 5; NSLog(@"The numbers from 1 to %d",count); for(int i=1;i<=count;i++) { NSLog(@"%d\n",i); } } return 0; }上面两个程序最终输出的结果是一样的。但是当我们需要程序输出20个数时,第二个程序修改起来就容易多了,我们仅仅需要修改int count = 20;就可以了。
通过添加变量,代码变得比之前更加简洁,而且也更易于编辑了,尤其是在编程人员需要修改代码的时候。
2.使用文件的间接
文件是间接的一个示例。先来看如下的代码:
<span style="color:#009900;">// // main.m // OOP_2 // // Created by zhum on 15/6/23. // Copyright (c) 2015年 zhum. All rights reserved. //</span> #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... const char *words[4] = {"aardvark","abadcus","alude","zygote"}; int wordCount = 4; for(int i = 0; i < wordCount;i++) { NSLog(@"%s is %lu characters long",words[i],strlen(words[i])); } } return 0; }使用for语句输出数组words里面的四个单词及其长度。如果我们需要修改数组words里面的内容,我们可以直接修改就可以了。但是这要的修改需要大量的工作,每次都需要修改.m文件里面的数组。如果程序在网站上面运行,还需要重新测试和部署程序才能升级至新的版本。构造此程序的另外一个办法是新建一个文件,把数组words里面的内容保存在文件中。这样以后修改就无需修改源文件。
<span style="color:#009900;">// // main.m // OOP_2 // // Created by zhum on 15/6/23. // Copyright (c) 2015年 zhum. All rights reserved. //</span> #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... FILE *wordFile = fopen("/tmp/words.txt", "r"); char word[100]; while(fgets(word, 100, wordFile)) { word[strlen(word)-1] = '\0'; NSLog(@"%s is %lu characters long",word,strlen(word)); } fclose(wordFile); } return 0; }
words.txt文件中的内容:
aardvark
abadcus
alude
zygote
首先,fopen()函数打开文件words.txt文件以便读取内容,然后fget()从文件中读取一行文本并将其放入数组word中。fget()调用会保留每行之间用来断行的换行符,但我们不需要它,如果留下换行符就会被自动计为单词中的一个字符。为了解决这个问题我们将换行符替换为\0,这表示字符串的结束。最后我们使用NSLog()输出单词及其长度。输出结果和上面的相同。
注意:
fopen()使用的路劲名称/tmp/words.txt。/tmp是Unix临时目录,这意味着每次计算机重启都会清空。在真是的程序中,可以将文件放在一个可以永久保存的位置。
相关文章推荐
- Objective-C 快速入门--基础(一)
- Objective-C 快速入门--基础(一)
- ORA-31685: Object type DB_LINK:"NCAOODS"."LINK_SNAPSHOTM" failed due to insufficient privileges. Fai
- 凭借K2 SmartObject框架,在SharePoint中集成数据
- Object类中的equals(Object obj) 和 操作符“==”的区别
- java 可变长参数 Object...object
- Android反编译时报错Exception in thread "main" brut.androlib.err.UndefinedResObject
- 刨根问底Objective-C Runtime(2)- Object & Class & Meta Class
- 刨根问底Objective-C Runtime(1)- Self & Super
- Object-C NSTimer定时器使用
- Objective-C中的hasPrefix
- Objective-C程序设计第九章---多态、动态类型和动态绑定
- private SortedDictionary<string, object> Dic_values = new SortedDictionary<string, object>();
- html object 标签 高度不生效问题
- Objective-C语法学习 第三天
- [转] 深入理解Objective-C的Block
- net.sf.json.JSONObject 和org.json.JSONObject 的差别
- object c 循环引用计数问题,非常重要。
- 解决C++与object-c混合编译
- Objective-C(四、属性声明与功能,点语法)——iOS开发基础