IOS学习笔记 第1篇 OC面向对象(一)


                 一、面向对象的思想VS面向过程的思想                           

   在目前自己所学的语言中,了解到C语言是面向过程,C++是面向对象,在今天所学的OC也是面向对象。无论是面向对象还是面向过程,都是解决问题的两种方式。

1.面向过程的思想

       面向过程强调过程,侧重执行的步骤与实现细节,关注的是解决问题需要哪些步骤
用现实生活中的例子分析,比如用手机听音乐为例:1.打开手机,2.播放手机中的播放器的歌曲,3关闭手机。面向过程是将它分为3个步骤来看待

2.面向对象的思想

       面向对象的思想是将一切事件或者事物都看成是对象,对于执行某个动作时,将它看做是对象的内部细节,因而可以忽略内部步骤。它关注的是解决问题需要哪些对象
如用现实生活中的例子分析也用手机听歌来举例:将手机直接作为对象,而所执行的开机、播放歌曲、关机都是封装在对象中,无需看做过程。
生活中的其他例子:
1.在想打电话或则发短信是找手机,而用户不用分析电话要怎样才能拨通,

2. 去饭店吃饭直接找服务员,不用分析怎么到厨房炒菜

3汽车坏了直接去找汽车维修工,不用分析修车的步骤

总结:面向对象来分析问题在生活中比比皆是, 面向过程关注的是解决问题需要哪些步骤;面向对象关注的是解决问题需要哪些对象

二、OC中类和对象

    OC面向对象最重要的两个概念就是类和对象,OC中类与对象描述:

OC中的类相当于图纸,用来描述一类事物。也就是说,要想创建对象,必须先有类。 OC利用类来创建对象,对象是类的具体存在     因此,面向对象解决问题应该是先考虑需

要设计哪些类,再利用类创建多少个对象。 拥有相同(或者类似)属性和行为的对象都可以抽像出一个类。

如生活中可设计的类

1.类的设计:
1> 类名
* 类名的第一个字母必须是大写
* 不能有下划线
* 多个英文单词,用驼峰标识
2> 属性
3> 行为(功能)
2.植物大战僵尸的僵尸
* 类名:Zoombie
* 属性:life、speed、gongjili
* 行为:walk、bite、die
3.雷电的飞机
* 类名:Plane
* 属性:life、gongjili、speed、bombCount
* 行为:fly、bomb、shoot、die
4.电脑
* 类名:Computer
* 属性:band、expireDate
* 行为:open、close

三、 第一个OC程序

在面向对象编程时,OC中的类的使用与函数的使用相似,函数有声明和定义,类也有声明和定义(实现)

例如写一个关于汽车的类,并创建对象

 类名:Car
 属性:轮胎个数、时速(速度)
 行为:跑

 代码如下:

#import
//类的声明
@interface car:NSObject
{
    @public   //这些属性可允许外部的类间接访问
     int wheel;
     double speed;
}
-(void)run;    //-减号可以区别与平时的函数,可知是类的方法
@end
//类的实现
@implementation car
   -(void)run
  {
     NSLog(@"车子跑了!");
  }
@end

int main()
{
  car *p=[car new];
  car *p2=[car new];
p2->wheel=4;
p2->speed=20.5;
[car run]
return 0;

}

其中知识点:

 1.类的定义

因为使用了NSObject
所以用#import

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

声明用@interface  @end 成对出现 如上面的代码

@interface Car : NSObject
{

 用来声明对象属性(实例变量\成员变量,默认会初始化为0)
 @public可以让外部的指针间接访问对象内部的成员变量

}

方法(行为)的声明:方法名、参数、返回值(声明、实现)
 只要是OC对象的方法,必须以减号 - 开头
OC方法中任何数据类型都必须用小括号()扩住

 OC方法中的小括号():括住数据类型

如:  - (void)run;
@end
2.类的实现
用来实现@inteface中声明的方法
@implementation Car
方法的实现(说清楚方法里面有什么代码)
如:
- (void)run
{
    NSLog(@"车子跑起来了");
}
 在OC中,想执行一些行为,就写上一个中括号   [行为执行者 行为名称]   如  [p2 run];
 利用类来创建对象,执行了Car这个类的new行为来创建新对象,定义了一个指针变量p,p将来指向的是Car类型的对象
   [Car new]每次都会创建出一个新对象,并且会返回新对象本身(新对象的地址)

如:Car *p = [Car new];      Car *p2 = [Car new];

 给p所指向对象的wheels属性赋值  

  如:  p->wheels = 4; p->speed = 250;

NSLog与C语言中的printf 有相似的功能,屏幕输出

如: NSLog(@"车子有%d个轮子,时速位:%dkm/h", p->wheels, p2->speed);

 总结:

      通过以上的第一个OC程序的学习,初步认识了与C语言的不同,以及面向对象中重要的类的创建,对象的创建。OC 与C的差别不仅仅表现在语法的一些差异上,更总要是的解决问题的思路上。对于以后的学习充满了期待。

OC的方法注意:
如果方法只有声明,没有方法的实现这是错误的(经典错误)
如果方法没有声明,只有函数的实现,编译器虽然警告,但是也能够能调用,OC的弱语法)
访问没有的成员变量直接报错,
访问没有的方法,只是警告


 

你可能感兴趣的:(IOS,学习笔记)