黑马程序员--Obeject-c面向对象和面向过程思想

来源:互联网 发布:侠盗飞车罪恶都市mac 编辑:程序博客网 时间:2024/05/16 17:07

----------------------ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

OC是面向对象的,C是面向过程的。面向对象和面向过程只是解决问题的两种不同思想

一、面向对象和面向过程的区别

1.面向过程

        面向过程就像一个细心的管家,事无具细全要考虑到,而面向对象就像是个家用电器,你只需只道他的功能,而不需知道它的工作原理,“面向过程”是一种以事件为中心的编程思想。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实“面向对象”(Object Oriented,简称OO)是一种以事物为中心的编程思想。

面向过程其实是最为实际的一种思考方式,就是算面向对象的方法也是含有面向过程的思想.可以说面向过程是一种基础的方法.它考虑的是实际的实现.一般的面向过程是从上往下步步求精.所以面向过程最重要的是模块化的思想方法.对比较面向对象,面向对象的方法主要是把事物给对象化,对象包括属性与行为.当程序规模不是很大时,面向过程的方法还会体现出一种优势,因为程序的流程很清楚,按着模块与函数的方法可以很好的组织.比如拿学生早上起来的事情来说说这种面向过程吧.粗略的可以将过程拟为:

  (1)起床

  (2)穿衣

  (3)洗脸刷牙

  (4)去学校

而这4步就是一步一步的完成,它的顺序很重要,你只须一个一个的实现就行了.而如果是用面向对象的方法的话,可能就只抽象出一个学生的类,它包括这四个方法,但是具体的顺序就不能体现出来.

怎么理解面向对象和面向过程到底的本质区别

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

        面向过程的思维方式是分析综合。面向对象的思维方式是构造。就是对C语言过程式解决问题时。一般是将现有的数据结构先定义出来。然后想办法构造出算法了。而用C++这样的面向对象求解时,先是将对象抽出来。构造成一个仿真的环境,然后在这个环境里,把与最终要解决的问题间建立一个方法。所以面向过程的程序设计有挑战性,技巧性强。

2.面向对象

        面向对象的程序设计(Object-OrientedProgramming,简记为OOP)

比如以公共汽车而言。“面向过程”就是汽车启动是一个事件,汽车到站是另一个事件。在编程序的时候我们关心的是某一个事件。而不是汽车本身。我们分别对启动和到站编写程序。类似的还有修理等等。现,使用的时候一个一个依次调用就可以了。

面向对象主要在于对象抽象有技术性,抽象完了后,任何人都可以做后面的工作了。

3.面向对象和面向过程的主要区别

        就是数据是单独存储还是与操作存储在一起。对面向过程而言,数据是独立的。而在面向对象中,对象本身就提供了存储数据的空间(类的数据成员),这样就是函数的参数传递简单多了,而且提供了数据封装后,数据的访问也变可靠了。

面向过程就是将编程当成是做一件事,要按步骤完成,每一步就是一个过程。比如作菜,先放油,接着是放菜进去炒,然后放水,最后菜就做好了。

这里面放油,炒,放水就是三个步骤。

面向对象就是将编程当成是一个事物,对外界来说,事物是直接使用的,不用去管他内部的情况。而编程就是设置事物能够做什么事。其实有点像是将面向过程给放到事物内部了。仍然举作菜为例,其实面向过程就好像你是个厨师,要自己炒菜,所以要讲究步骤,而面向对象就好像你是个食客,你只要通知厨师作菜,即发一个消息就可以了,至于厨师怎样作菜,是不用知道的。

 

4.总结概念及专用术语:

        面向对象是将实物高度抽象化

        面向过程是一种自顶向下的编程。

        而面向对象是自下先建立抽象模型然后再使用模型。

        面向过程Procedure Oriented

        面向对象Object Oriented,简称OO

        面向对象编程Object Oriented Programming,简称OOP

 

二、OC中的面相对象

        1.OC中的类相当于图纸,用来描述一类事物。也就是说,要想创建对象,必须先有类

        2.OC利用类来创建对象,对象是类的具体存在

        3.因此,面向对象解决问题应该是先考虑需要设计哪些类,再利用类创建多少个对象

        现实中的例子:

                  想打电话\发短信找手机,不用分析电话要怎样才能拨通

                  去饭店吃饭找服务员,不用分析怎么到厨房炒菜

                  汽车坏了找汽车维修工,不用分析修车的步骤

                  境界:万物皆对象

三、定义OC的类和创建OC的对象

           OC中的类分2大步骤:类的声明、类的实现(定义)。跟函数类似,函数有分声明和定义:

#import<Foundation/Foundation.h>

//类的声明

@interfaceCar: NSObject

{

        @public

        Int num; // 车子的编号(简单编号,不含字母)

        Int speed; // 最大时速

}

-(void)run;// 跑的行为

@end

 

2)  成员变量

          @interface的大括号{}中声明的变量:num、speed

          @interface的大括号和函数的大括号是不一样的

          默认会初始化为0

 

3)  @public

        @public可以让Car对象的num和speed属性被外界访问

 

4)  NSObject

        加上:NSObject的目的是让Car类具备创建对象的能力

 

2.  类的实现

        //类的实现

@implementationCar

-(void) run

{

    NSLog(@"车子编号为%i,最大时速%i的车子跑起来了", num, speed);

}

@end

3.  创建对象

        1)  代码编写

        //主函数

        intmain()

        {

        //创建车子对象

        Car*c = [Car new];

        c->num= 8888;

        c->speed= 200;

 

         [c run];

        return0;

        }


----------------------ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

0 0
原创粉丝点击