您的位置:首页 > 移动开发 > IOS开发

iOS概念入门学习-OC-类和对象

2015-08-15 10:17 225 查看
概要:本文介绍了类和对象的基础知识和其简单地应用。

一、OC和C的差异

盼望着,盼望着,面向对象来了,iOS的脚步近了。

那么OC和C到底有什么差别呢?

首先要明确地是,OC是C的扩展,OC支持C的语法,具体差别在哪,下面将一一列出

1.源文件对比

C中常见的源文件有.c 和 .h ;
OC中常见的源文件有.h 和 .m ;


2.基本语法对比

1)数据类型对比

首先OC兼容C中的所有数据类型;

OC新增了boolean类型、block类型、对象类型、特殊类型SEL和nil 等;

另外,C中不兼容OC中新增的类型;

2)流程控制语句对比;

首先OC兼容了C中所有的流程控制语句;

OC又新增了自己的for in 增强型的循环语句;

//OC中的增强型for循环

for(NSString *str in arr){

NSLog(@"%@",str);

}


另外,C中不兼容OC中新增的增强循环语句;

3)函数和方法定义声明的对比;

C语言中函数的声明和实现

i.函数声明:

int sum(int a,int b);


ii.函数定义

int sum(int a,int b){
return a+b;
}


OC语言中函数习惯称之为“方法”

i.方法声明:

-(int)sum:(int) a and:(int) b;


ii.方法定义

-(int)sum:(int) a and:(int )b{
return a+b;
}


3.import和include的区别

(1)include 和 import 都是引入头文件

(2)import引入的头文件,可以防止重复包含

(3)include它是使用预处理指令防止重复包含,如果没有写预处理指令,则无法防止重复包含问题

4.NSLog和printf使用的差异

(1)NSLog 会自动换行 而printf不会自动换行

(2)NSLog 会自动输出时间等项目信息,printf不会输出调试信息

(3)NSLog 函数的参数是一个NSString 对象,printf是一个字符串常量指针

二、面向对象

1.面向对象的概念

(1)概念

面向对象(object-oriented ;简称: OO) 至今还没有统一的概念,我这里把它定义为: 按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世 界分析、设计、实现软件的办法。通过面向对象的理念使计算机软件系统能与现实世界中的 系统一一对应。

面向对象编程(Object Oriented Programming-OOP) 是一种解决软件复用的设计和编程方法。这种方法把软件系统中相近相似的操作逻辑和操作应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。


(2)面向对象编程的优点

1)大幅度提高软件项目的成功率

2)减少维护费

3)高可移植性和可靠性

(3)面向对象设计三个主要特征

1)封装性

2)多态性

3)继承性

(4)面向对象和面向过程的区别:

面向过程

1)强调的是功能行为

2)关注的是解决问题需要哪些步骤

面向对象

1)将功能封装进对象,强调具备了功能的对象

2)关注的是解决问题需要哪些对象

3)面向对象是基于面向过程的。

三、类和对象

1.概念

类:类是具有相似内部状态和运动规律的实体的集合(或统称、抽象)。

对象: 即指现实世界中各种各样的实体。它可以指具体的事物也可以指抽象的事物。

属性和事件:在面向对象概念中我们把对象的内部状态称为属性、运动规律成为方法或事件。

2.类和对象之间的关系

类(Class)

一个类由3个部分构成

(1)类的名称:类名

(2)类的属性:一组包含数据的属性

(3)类的方法:允许对属性中包含的数据进行操作的方法

对象(Object)

(1)对象是系统中的基本运行实体

(2)对象就是类类型(class type)的变量

(3)定义了一个类,就可以创建这个类的多个对象

(4)一个类就是具有相同类型的对象的抽象

3.类的声明和实现

(1)相关名词介绍

.h文件:类的生命文件,用于声明成员变量、方法。类的声明使用关键字@interface和@end。

.m:类的实现文件,用于实现.h中声明的方法。类的实现使用关键字@implementation和@end。

方法:

方法的声明和实现,都必须以 + 或者 - 开头

+表示类方法(静态方法)

-表示对象方法(动态方法)

在.h中声明的所有方法作用域都是public类型,不能更改

作用域的种类:

成员变量的常用作用域有3种:

@public 全局都可以访问

@protected 只能在类内部和子类中访问

@private 只能在类内部访问

(2)声明一个类

1)声明类使用关键字 @interface

2)声明类,我们通常放到.h的头文件中



(3)实现一个类

1)实现一个类 使用关键字:@implementation

2)实现一个类通常放到.m的文件中

3)实现类主要是对方法的具体实现



4.对象的创建



[Car new]; 在内存中干三件事:

(1)开辟存储空间

(2)初始化成员变量(写在类声明大括号中的属性就叫成员变量,也叫实例变量)

(3)返回指针地址

理解方式一:

定义了一个Car类型的指针变量

指针变量指向新申请的内存空间

理解方式二:

用Car类实例化了一个实例对象,对象的名称是p

Car *p = [Car new];

5.方法的声明和调用

(1)方法的声明

1)无参



2)有参



(2)方法的调用

1)无参



2)有参



(3)对象方法和类方法

对象方法

1)对象方法以-开头如 -(void)xx;

2)对象方法只能由对象来调用

3)对象方法中可以访问当前对象的成员变量

4)调用格式 [对象名 对象方法名];

类方法

1)类方法以+开头 如+(void)put;

2)类方法只能由类来调用

3)类方法中不能访问实例(成员)变量,因为类方法由类来调用,并没有创建存储空间 来存储类中的成员变量。

4)调用格式:[类名 类方法名];

类方法的好处和适用场合:

1)不依赖于对象,执行效率更高;

2)能用类方法解决的问题,尽量使用类方法;

3)场合:当方法内部不需要使用到成员变量时,可以改为类方法。

总结:经历了C语言的学习之后,终于踏入了OC的门槛,类和对象的思想、面向对象编程是思维方式的转变,编程变得更高效、可维护性更高,OC虽然是C的扩充,但是语法方面还是有很多不同的,不过学习之后,好像一切又是那么的“理所应当”。更深入的学习期待中…
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: