一、面向对象概念
Objective-C 是一种面向对象语言,而C语言是面向过程的语言,二者在解决问题时的思想不同
下面以几个例子来说明面向对象和面向过程的区别:
1. 以用电脑听歌为例
a) 面向过程:
--- > 打开电脑
--- > 播放电脑中的歌曲
--- > 关闭电脑
b) 面向对象:
--- > 开机
--- > 播放歌曲
--- > 关机
2. 区别分析
1)面向过程关注的是解决问题需要哪些步骤,而面向对象关注的是解决问题需要哪些对象
2)两种思想都可以达到解决问题的目的,但是它们解决思路不一样。
3. 现实中面向对象的例子
--- > 想打电话\发短信 --> 找手机,不用分析电话要怎样才能拨通。
--- > 去饭店吃饭 --- > 找服务员,不用分析怎么到厨房炒菜。
--- > 汽车坏了 --- > 找汽车维修工,不用分析修车的步骤。
--- > 用业内一句有内涵的话说就是 “万物皆对象”。
4. 常用术语
--> 面向过程 Procedure Oriented
--> 面向对象 Objective Oriented , 简称 OO
--> 面向对象编程 Object Oriented Programming ,简称OOP
二、 类和对象的关系
1. 如何创建对象
1) 类是很抽象的概念,在解决问题是需要有具体的对象,那么怎么来创建对象呢?
以汽车的例子来说:
a) 首先,我们在造一辆车子时,必须要明确这些车子需要什么零件,在造车子之前要先造好这些零件
b) 其次,我们要造一辆汽车,必须要明白这辆汽车能做什么,也就是这辆车有什么功能,它能实现什么功
能,能不能满足生活的需要。然后把这些有相同特性的车抽象为一个类,然后可以根据个类型的车造出一辆具体的
车,通过这个过程,我们就利用一个类创建了一个具体对象。
2. OC中的面向对象
1) OC中的类相当于图纸,用来描述一类事物。也就是说,要创建对象,必须现有类
2) OC利用类来创建对象,对象是类的具体的存在
3) 因此,面向对象解决问题应该是先考虑需要设计哪些类,再利用类创建多少个对象
3. 需要设计哪些类,如何设计类
1) 类的设计,只关心3样东西:
--> 事物名称(类名): 人 (Person)
--> 属性:身高(height)、年龄(age)
--> 行为(功能):跑(run)、吃东西(eat)
2) 类的设计
a. 类名
-- > 类名的第一个字母必须大写
-- > 不能有下划线
-- > 多个英文单词,用驼峰标识
b.属性
c.行为(功能)
三、 类的声明和实现
1.以汽车例子来说明类的声明和实现
1) 分析汽车类的属性和功能
类名:Car
属性:轮胎个数、时速
行为:跑
下面根据上述的描述变编写相应的代码
#import <Foudation/Foundation.h>
//声明对象的属性、行为
@interface Car
{
int wheels; // 汽车的轮胎个数
int speed; // 汽车的时速
}
//声明对象的行为
- (void)run;
@end
@implementation Car
// 行为的实现
- (void)run
{
NSLog(@"汽车跑起来了!");
}
@end
int main()
{
// 创建对象
Car *c = [Car new];
//对象C调用方法run
[c run];
return 0;
}
在这段代码中,通过@interface 接口来声明了Car类,在“{}”内声明了轮胎数和时速两个属性,后边声明了run行为。这段代码就是类的声明,概括为:
@interface 类名
{
成员变量1;
成员变量2;
.......
}
- (方法类型)方法名; (该方法是无参数类型的声明方式)
@end
类的声明就是按照上述格式,成员变量又称实例变量,而且成员变量必须放在括号里面。方法的声明以 ” - “ 开头来说明这是对象的方法。
类的实现:
@implementation 类名
- (方法的类型)方法名
{
方法的具体实现;
}
@end
对象在interface接口声明后 ,在implementation内实现。如该Car类在interface中声明了对象的run方法,并在implementation中实现了该对象的行为。
后面的main函数:
在main函数中创建了Car对象,通过Car *c = [Car new]; 创建了对象c,通过对象c就可以调用对象的方法。
在Objective-C中,想执行一些行为就写上一个中括号[行为执行者 行为名称],利用类来创建对象时是通过类的new行为来创建新对象。该程序定义了一个指针变量c, c指向的是Car类型的对象,[Car new]每次都会创建出一个新的对象,并且会返回新对象本身(新对象的地址)。
2. 关于方法的一些总结
--> 只要是Objective-C对象的方法,必须以 “ - ” 开头
--> Objective-C方法中任何数据类型都必须用小括号( )扩住
--> Objective-C方法中的小括号( ): 扩住数据类型
--> 对象方法的声明必须写在@interface和@end之间
对象方法的实现必须写在@implementation和@end之间
--> 对象方法只能由对象来调用
--> 对象方法归类\对象所有