黑马程序员——OC面向对象的基础认识

时间:2023-02-20 23:22:56

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

      经过了C语言基础的学习,从一个0基础的小菜鸟,到现在了解了各种参数、函数、循环以及复杂数据类型。

    之后又进阶到了Object -C的学习,原来编程可以这样做!程序并不只是一步一步按照顺序来写,也可以用对象-方法的思路,简直像发现了一个新大陆一样!

    原来,这就是面向对象的编程思想!

    那么,到底什么是面向对象思想?

官方的说:

面向对象编程-------(Object Oriented Programming),简称OOP,是一种程序设计思想。这种思想把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。

我自己的理解:

世间万物,皆可为对象。

是不是忽然有一种武林绝学的感觉?

没有错,事实上,在“编程”这个江湖里,有两各门派!一个是“面向过程”门派,他们讲究一招一式有序进行,比武中先后有序,不可乱了规矩。而另外一个,就是“面向对

象”门派,这个门派讲究万变不离其宗,招式烂熟于胸,打斗中随机应变!

嗯,还是有点“玄”。

举个例子:

假设我们要表示一个学生的成绩表,每一个学生对应一个分数。面向过程的时候,我们可以使用一个“字典”:

NSDictionary *dic1 = @{@"name" : @"Jack", @"score" : @98};
NSDictionary *dic2 = @{@"name" : @"Rose", @"score" : @81};
之后呢,可以用一个函数,来按顺序打印学生的成绩:

NSLog(@"%@", dic1);
NSLog(@"%@", dic2);

而如果我们采用面向对象的思想呢?

我们就可以创建一个学生的对象,用方法来实现。


<pre name="code" class="objc">
@property (nonatomic, retain) NSString *name;- (void)print;@end@implementation Student- (void)print{NSLog(@"name = %@\tscore = %d", _name, _age );}@end
 

这样我们就定义了一个Student类,这类里面有学生的姓名,即_name。也有学生的成绩,即_score。

再创建对象,赋值之后打印。

Student *stu1 = [[Student alloc]init];
stu1.socre = 98;
stu1.name = @"Jack";
Student *stu2 = [[Student alloc]init];
stu2.socre = 81;
stu2.name = @"Rose";
[stu1 print];
[stu2 print];

这就是2者之间的区别。面向过程是,我们要打印学生1的成绩,就输出1行成绩。打印学生2的成绩,就在给计算机一个指令,让它再输出一行成绩。

而面向对象呢?我们直接创建了一个Student的类,这个类包含了我们需要的属性和方法,想创建多少个学生(实例)都可以,想打印成绩(方法)的时候随时打印。

对象中使用的方法,从某种意义上来说也可以理解为函数,但方法中使用的参数是来自我们的类或者对象的成员变量。

说了那么多,什么是类、对象、方法呢?

通俗的说其实跟大自然中,物种的分类很像。比如,”猫科动物“是自然界一个类,这个类也可以作为面向对象思想里的类(Class)。通过这个类我们可以创造什么动

物呢?”猫“、”豹子“、”狮子“、”老虎“都是猫科,这就是具体对象,程序中我们也叫他们实例“(intstance)。以”猫“为例,猫有什么样的属性呢?“颜色”、“花纹”、“性格”

、“年龄”、“质量”等等。这些都可创建成成员变量将他们与我们的类绑定在一起。使类不仅是一个名字,具有更多的细节、也更加加准确。那么猫会做些什么行为呢?

可以“吃”,可以跑,可以“叫”。这些都可以是猫的“方法”,在创建类的时候可以设置类似的“吃”方法,使我们的小猫会吃东西。在初期阶段可以理解为“实例”所能做

的“行为”。

如何用代码创建一只我们的小猫呢?别急,来了:

@interface Cat : NSObject
{
	int _age;//小猫的年纪
	int _weight;//重量
	NSString* _colour;//花色
}
- (void)miao;//“喵喵”叫的喵方法
- (void)run;//它很调皮,会跑去各种地方
- (void)eat;//饿了就喂喂它

@end

@implementation Cat
- (void)miao
{
	NSLog(@"喵喵~");
}
- (void)run
{
	NSLog(@"啊!跑掉了!");
}
- (void)eat
{
	NSLog(@"饿了吧,吃点鱼!");
}
@end

好了,现在一只调皮可爱的猫咪已经出来了。是不是很神奇。


黑马程序员——OC面向对象的基础认识