从C 到 OC----从面向过程到面向对象的转变

1.在C的学习中,我们写一段代码,通常考虑整个事件的发展的过程,开始--经过--结果,而在OC中,这样的思想需要整个转变为,做一件事,需要哪些人物、事物参与,他们分别负责做什么。比如我们玩植物大战僵尸游戏:

C的思维方式:僵尸出现--以某速度往前走--植物投射炮弹--僵尸受伤减血--植物再投射炮弹--僵尸受伤减血--植物投射--僵尸死亡

OC的思维方式:参与整个事件的人物、事物有:

僵尸 :1.僵尸名字(如路障僵尸)、僵尸的道具(如路障)     2.走路、失血、死亡

植物:1.植物类型(如豌豆射手)   2.投射炮弹

这当中,僵尸、植物就称为“类”(就是谁或者什么),以僵尸为例,“名字、道具”是僵尸这个类的属性,“走路、失血、死亡”称为僵尸的行为方法(也就是负责做什么)。我们可以用僵尸的这些属性和方法,来创建对象,比如路障僵尸,就是僵尸类创造出来的一个对象,类可以无数个对象。

名词解释, super:父类,self:对象本身

2.OC的三个特性:继承、封装多态

--继承:在OC中,如果一个类B的部分属性和方法与另一个类A所有的属性和方法相同,则可以让B继承A,来实现给A写一份代码,B全全拥有。

注意:1.继承具有单向性,B继承于A后,B具有A所有属性和方法,当B具有额外的属性和方法时,A不具有,此时,A称为父类,B称为子类

2.继承具有先子后父的特性,如果子类重写了父类中的某个方法,系统在执行时,会执行子类的方法。

3.NSObject 是所有类的父类,我们创建的任何一个类都继承这个类,它的内部是所有我们在外部可调用的系统方法的实现方法。

--封装:实现对属性、方法等具体实现访问的限制,对外只留出传入数据的接口,让写出的代码更具有隐秘性,就好比有一个袋子,具体实现的方法放在袋子里,只留出口袋的开口,供外界传入数据。同时我们可以随时根据需求修改封装内部的属性、方法等,这样也增强了项目的可维护性。

--多态:多态是指相同方法名的方法可以具有不同的实现功能,比如,在A类中有一个方法,方法名为“haveDinner”,实现是输出“我爱吃面条”,在B类中也有一个具有相同方法名的方法,实现可以改为输出“我爱吃汉堡”。A与B之间可以是继承也可以是关联,或者没有关系。系统方法也可以重写实现。

时间: 2024-10-29 19:11:08

从C 到 OC----从面向过程到面向对象的转变的相关文章

OC - 1.面向过程和面向对象的思想对比

一.面向过程 1> 思想 面向过程是一种以过程为中心的最基础编程思想,不支持面向对象的特性. 面向过程是一种模块化程序设计方法 2> 开发方法 面向过程的开发方法是以过程(也可以说是模块)为研究核心 ,将不同的过程设计成不同的函数,然后按一定的流程调用即可. 3> 优缺点 优点 ① 能够编写高效的代码 ② 在小型的流程清晰的程序设计方面有一定的优势 缺点 ① 编写的代码可重用性低,开发效率较低 ② 难以或无法完成流程复杂的程序设计任务 二.面向对象 1> 思想 概念 ① 对象:人们

o'c基础第一天面向过程与面向对象

1. OC将C的复杂的东西简单 a. #import 指令. b. NSLog函数. c. NSString d. BOOL 2. OC在C的基础之上增加了一些面向对象的语法. 面向过程 面向对象. 是解决问题的不同的思路. 1). 将大象放进冰箱. a. 打开冰箱门. b. 把大象放进冰箱 c. 把冰箱门关上. 面向对象. 找到1个冰箱. 只要这个冰箱有自动开门 自动拉近大象 自动关门. 2). 买电脑的需求 a. 根据自己的预算和需求确定型号. 查找资料. b, rMBP 9288 c, 到

面向过程与面向对象的区别-遁地龙卷风

下面例子根据C和Java编写 面向过程与面向对象之间的区别在于认知世界的方式,后者在前者的基础上提供了更高的抽象层次-类. 也就是抽象.封装.继承.多态. 举个例子 输出 小明20岁<=>A,小明打篮球<=>B. 面向过程相当于在类中调用main方法输出A.B public class Test { public static void main( String[] args ) { System.out.println( "小明去上学" ); System.o

面向过程,面向对象,函数式对同一个问题的思考方式

我之所以对函数式代码感兴趣是因为函数式代码富有表现力,可以使用简短.紧凑的代码完成工作,同时能对特定的问题给出优雅的解决方案.现代的编程语言不约而同的朝着面向对象.函数式.动态.解释执行的方向发展,例如Ruby,Swift.而另一些语言则更加强调函数式编程,如F#,Scala,这种语言有着强大的类型推断系统,编写的代码洁程度则令人叹为观止. 在F#编写一个两个数相加的函数,在F# Interactive中输入: let add num1 num2=num1*num2;; F# Interacti

essential C++中关于面向过程和面向对象的说明

昨天在阅读essential C++中看到了一个关于面向过程和面向对象的区别的例子,感觉挺好的.记录下来.... 这个例子是关于照相机的.照相机有三个性质,一个是控制位置:通常使用3个浮点数据来表示其坐标:还有一个视角方向的性质:可以使用3个浮点数据来表示其坐标:最后是一个宽高比的性质,可以使用1个浮点数据来表示. 对于面向过程而言,在编程的过程中势必要不断的在相机的抽象的性质和这7个浮点数据之间反复来回.就好比我们定义一座大楼,面向过程就是要不断在建造大楼的砖头进行打交道,这明显和现实生活的思

面向过程和面向对象的本质理解

http://kiritor.blog.51cto.com/7400479/1226762/ 面向过程和面向对象的本质理解 面向过程就是分析出解决问题所需的步骤,面向对象则是把构成问题的事物分解成对象,抽象 出对象的目的并不在于完成某个步骤,而是描述其再整个解决问题的步骤中的行为. 面向过程的思维方式是分析综合,面向对象的思维方式是构造. 例如c语言解决问题时,一般是先定义数据结构,然后在构造算法.而是用Java面向对象求解时 则是先抽象出对象,构造一个"封闭"的环境,这个环境中有定义

.NET 高级架构师0002 架构师之路(1)---面向过程和面向对象

1.引言     机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训练就可以做得到.但是,会编程和编好程绝对是两码事,同样的程序员,有的人几年之后成为了架构师,有的人却还在不停地coding,只不过ctrl-c.ctrl-v用得更加纯熟了.在中国,编程人员最终的归途无外乎两条:一是转向技术管理,它的终点是CTO:二是继续深入,它的终点是首席架构师,成为CEO的人毕

PHP面向过程和面向对象

php程序编写分为面向过程和面向对象.两者在功能实现上没有区别,但是在代码编写上区别很大,面向过程的代码很乱,不易管理,而面向对象把常用的功能封装为一个类,这样代码清楚多了. 下面举个小例子说明一下: php连接数据库: 面向过程:$conn = mysql_connect('服务器名称', '数据库登陆名', '密码') or die('连接不成功!');          mysql_select_db('库名', $conn) or die('数据库不存在!');          $qu

面向过程和面向对象编程

 编程方式可分为:面向过程和面向对象 面向过程:面向过程是我们比较原始的编程方式,它是根据计算机的思维方式进行编程,其缺点是当遇到比较复杂的程序时运用这种编程实现起来比较困难.----------面向对象:万物皆对象,现实生活中每个实实在在的东西都可以称之为对象,面向对象它是人类有史以来就具备的思维方式. 例如:我们看到一辆汽车首先我们就会关注它的颜色.大小.价格.款式等等,这些东西称之为属性或者叫做特征.接下来我们就会想到这辆汽车它能做什么,像这种就是可一称之为方法或者叫做行为.而对于我们没个

面向过程和面向对象及面向对象的三大特征

英文及缩写: 面向过程:procedure oriented programming POP 面向对象:object oriented programming OOP 面向对象和面向过程的历程: 面向过程编程采取的是时间换空间的策略,因为在早期计算机配置低,内存小,如何节省内存则成了首要任务,哪怕是运行的时间更长.随着硬件技术的发展,硬件不再成为瓶颈,相反更好的模拟现实世界.系统的可维护性等问题凸显出来,于是面向对象设计应运而生.当下:应用在PC机上的一般应用系统,由于不太需要考虑硬件的限制,而