02-OC创建对象

作者: amoLink | 来源:发表于2016-06-10 00:12 被阅读81次

在面向对象问世之前,人们是使用面向过程来编程的,那时候程序设计被看成是功能系统的集合。那么,面向对象与面向过程的区别是什么呢 ?


一、面向对象 VS 面向过程

知乎上有个解释个人认为是很到位的,说:面向过程是一件事“该怎么做”,面向对象是一件事“该谁来做”,然后那个“谁”就是对象。

面向过程 ( Procedure Oriented )是以事件为核心,关注的是解决问题所需要的步骤,然后分析解决问题的步骤,然后用函数把这些步骤实现,并按顺序调用。

面向对象 ( Object Oriented ) 则是以对象为核心,关注需要哪些对象、对象需要具备哪些功能,然后创建出解决问题的对象,利用对象调用相应的方法即可。


二、对象消息

2.1  消息表达式

在 Objective-C 中,id类型的变量是可以存放任何数据类型的对象!对象!对象!定义一个 id 类型的 Object 的方法如下所示:

id object;

向 object 发送 message 消息的语法如下:

[object message];

这就是消息表达式的语法。其中接收者(object)是一个对象,消息(message)告诉它要做什么。

消息由消息关键字组成,消息关键字的命名规则同变量名的命名规则一样。与函数一样,消息也可以带有参数。没有参数的消息就只有消息名。

***消息名:又称为 消息选择器 、 选择器  或 方法。【以后统一称为方法】

如:[object message];  //其中“message”就是消息名

当方法中带有参数的时候:

[object message:123]; //123为传进来的实际参数

此时方法就是 “message:” ,注意,冒号也是方法名的一部分。

2.2  对象的生成和初始化

只声明一个 id 类型的变量时,改变量并不指向任何对象。所以,在使用一个对象之前,应该调用类的构造方法来生成对象。

对象的生成:[类名 alloc];

调用对象的 alloc 方法只是给对象分配储存空间,没有对对象进行初始化。初始化对象的方法成为 “初始化方法” 。Objective-C 的初始化方法通常是 init 或以 init 开头的函数。

对象创建并初始化:[[类名 alloc] init]; 

我们已经知道怎么给对象分配储存空间和初始化对象了,但我们还缺少类,那怎么去定义类呢?


三、类的定义

3.1  怎么设计一个类

类的设计,只需关心 3 样东西:1)、类名;2)、属性;3)、方法。

属性是指对对象的形态、构成及状态的描述,即描述对象的一些固有特征。方法是用来描述对象有所具备的功能,即对象能做什么。

3.2  定义类

3.2.1 类的接口声明

定义一个 人(Person) 类,拥有2个属性:年龄和姓名,一个行为:睡觉。

***类名的命名规范:类名要有意义、首字母大写、驼峰标识。

Objective-C中接口(interface)和实现(implementation)是分离的 ,先来了解一下类接口。类的接口部分定义了类的属性的和方法。类的接口声明通常声明为头文件,提供给要调用的类引用。

接口的定义如下:

@interface 类名 : 父类名

{

//属性的定义

}

//方法声明

@end 

//Person类的定义

#import <Foundation/Foundation.h>

@interface Person :NSObject

{

    @public

    int age;//年龄

    NSString *name;//姓名

}

- (void)sleep;

@end

3.2.2 类的实现

类的实现部分只要完成对在接口(interface)中声明的方法的实现即可。

类实现的语法:

@implementation 类名

//方法的实现(定义)

@end

//Person类的实现

#import" Person.h"

@implementation Person

- (void)sleep{

      NSLog(@"人对象在睡觉");

}

@end


四、创建对象

#import <Foundation/Foundation.h>

#import"Person.h"

int main(int argc,const char* argv[]) {

@autoreleasepool  {

//创建人对象p

Person  *p = [ [Person  alloc ]  init ];

//给p对象的属性赋值

p->age = 20;

p->name = @"jack";

//调用p的sleep方法

[p  sleep];

}

return  0;

}

相关文章

  • 02-OC创建对象

    在面向对象问世之前,人们是使用面向过程来编程的,那时候程序设计被看成是功能系统的集合。那么,面向对象与面向过程的区...

  • 02-OC对象的本质

    一个NSObject对象占用多少内存. 我们平时编写的Objective-C代码,底层实现其实都是C\C++代码....

  • javascript面向对象解析(一)

    创建对象的方式 json对象方式创建对象 Object方式 声明构造函数方式,创建对象 -- 这种创建对象的方式用...

  • JS对象

    JS 创建对象 批量创建对象

  • JavaScript基础—对象

    概论 对象基础 创建对象 利用字面量创建对象: 使用对象 利用new Object创建对象 使用对象方式与上面完全...

  • JS 创建对象的四种方式

    通过对象字面量来创建 通过 new Object() 创建对象 通过工厂函数来创建对象 通过构造函数来创建对象 工...

  • JS笔记-006-JS对象-数字-字符串-日期-数组-逻辑

    JS对象 创建 JavaScript 对象 通过 JavaScript,您能够定义并创建自己的对象。 创建新对象有...

  • 创建对象

    1. 原始方法 2. 工厂方法 3. 构造函数 4. 原型函数 5. 混合构造函数\原型函数 6. 动态原型方法

  • 创建对象

    工厂方式 缺点:1.无法确定对象的类型(因为都是Object)。2.创建的多个对象之间没有关联。3.这个对象的属性...

  • 创建对象

    在ES5中 我们想创建一个对象,人。 我们想克隆多个相似的人怎么办?需要一个函数(资源)创造一个 对象模版(对象制...

网友评论

    本文标题:02-OC创建对象

    本文链接:https://www.haomeiwen.com/subject/etfsdttx.html