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

iOS开发-OC-类、对象、方法

2015-08-28 10:41 567 查看
一、面向对象编程概念

1、编程的实质是什么?

软件编程就是将我们的思维转变成计算机能够识别的语言的一个过程

2、面向对象的基本概念

什么是面向对象编程?有人这么理解

面向对象是相对面向过程而言

面向对象和面向过程都是一种思想

Object Oriented Programming-OOP



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

面向对象编程(Object Oriented Programming-OOP)

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

优点:

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

减少维护费

提高可移植性和可靠性

面向对象设计四个个主要特征

封装性

多态性

继承性

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

强调的是功能行为

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

面向过程

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

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

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

二、类(class)和对象(object)

类(class):

类是具有相似内部状态和运动规律的实体的集合(或统称、抽象)。类的概念来自于人们认识自然、认识社会的过程。在这一程中,人们主要使用两种方法:由特殊到一般的归纳法和由一般到特殊的演绎法。在归纳的过程中,我们从一个个具体的事物中把共同的特征抽取出来,形成一个一般的概念,这就是”归类”;如:昆虫、狮子、爬行动物,因为它们都能动所以归类为动物。在演绎的过程中我们又把同类的事物,根据不同的特征分成不同的小类,这就是”分类”;如动物->猫科动物->猫->大花猫等。对于一个具体的类,它有许多具体的个体,我们就管这些个体叫做”对象”。类的内部状态是指类集合中对象的共同状态;类的运动规律是指类集合中对象的共同运动规律。如:博拉图对人作如下定义:人是没有毛能直立行走的动物。在博拉图的定义中”人”是一个类,具有”没有毛、直立行走”等一些区别于其它事物的共同特征;而张三、李四、王五、流氓陈水扁等一个个具体的人,是”人”这个类的一个个”对象”。

对象(object):

即指现实世界中各种各样的实体。它可以指具体的事物也可以指抽象的事物。如:整数1、2、3、流氓陈水扁、苹果、飞机、规则、法律、法规、表单等等。每个对象皆有自己的内部状态和运动规律,如流氓陈水扁具有名字、身高、体重等内部状态,具有吃饭、睡觉、打人、偷税、漏税等运动规律。在面向对象概念中我们把对象的内部状态称为属性、运动规律成为方法或事件。

消息(Message):

消息是指对象间相互联系和相互作用的方式。一个消息主要由5部分组成:发送消息的对象、接收消息的对象、消息传递办法、消息内容(参数)、反馈。

把学生的姓名、年龄、班级—–>抽象—–>学生类的属性

把对学生姓名、年龄、班级的修改和现实——>抽象——>学生类的方法

把学生张三、李四 ——————->学生类的对象

总结:

一个类可以实例化多个对象

1)类和对象之间的关系

类(Class) 一个类由3个部分构成

类的属性:一组包含数据的属性

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

类的名称:类名

是系统中的基本运行实体

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

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

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

对象(Object)

2、类的构成

人的类设计,只关心3样东西:

事物名称(类名):人(Person)

属性:身高(height)、年龄(age)

行为(功能):跑(run)、打架(fight)

例如:芒果、苹果和桔子都是Fruit类的对象

3、类的抽象

如何把日常生活中的事物抽象成程序中类?

拥有相同(或者类似)属性和行为的对象都可以抽像出一个类

小明在公车上牵着一条叼着热狗的狗

人类(小明对象)

牵狗

交通工具(公交车对象)



热狗





叼热狗



三、类的声明和实现

1、关于类的几个名词



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

注意:.h中的方法只是做一个声明,并不对方法进行实现。也就是说,只是说明一下方法名、方法的返回值类型、方法接收的参数类型而已,并不会编写方法内部的代码。

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

方法

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

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

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

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

成员变量(实例变量\属性)

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

@public 全局都可以访问

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

@private 只能在类内部访问

2、声明一个类

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

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





3、实现一个类

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

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

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



四、创建一个对象并访问成员变量

我们用类的方式告诉了计算机我们需要一个什么样的对象,之后我们要在程序中使用这个对象,就必须先创建一个对象

Car *car = [Car new]

类名 指针政变量 使用类名调用new方法

注意:

[Car new];

在内存中干三件事:

1.开辟存储空间

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

3.返回指针地址

并每一个对象中都有一份属于自己的属性。

通过 对象->对象成员(注意声明属性为:@public)的方式操作对象中的成员,

对其中一个对象的成员进行了修改。和另一个对象没有关系。

五、无参方法声明实现及调用

1、无参方法声明实现及调用

OC中的方法分为:对象方法和类方法:

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

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

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

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

对象方法

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

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

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

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

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

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

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

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

(1)不带参数的方法

声明:

— (double) p

方法类型 返回值类型 方法名

2、方法的调用

使用对象调用方法就是OC中的消息机制

oc语言中采用特定的语言调用类或者实例(对象)的方法称为发送消息或方法调用。

oc中方法的调用有两种:

1)[类名或者对象名 方法名];



不带参数的方法调用:

[ C P ]

指针名 方法名

六、有参方法声明实现及调用

1、有参方法声明和实现

带参数的方法的定义和实现

声明:

注意:冒号也是方法名的一部分。

2、有参方法调用

带参数的方法调用:

思考&实现1:

类名:苹果手机(Iphone)



应用:有参方法的调用和实现

#import <Foundation/Foundation.h>
typedef enum color {KColorwhite,KColorblack,KColorTHJ}

@interface iPhone:NSObject

{

@public
iColor_color;

float _size;

NSString *_cpu;

}

-(void)aboutMyPhone;
-(void)callPhone:(NSString *) telNum;
-(<
a3ba
span class="hljs-keyword">void)sentMessage:(NSString *) telNumandContent:(NSString *) content;
@end

@implementation iPhone

-(void)aboutMyPhone
{

NSLog{@"颜色:%d,尺寸:%.2f,cpu:%@",_color,_size,_cpu};

}
-(void)callPhone:(NSString *) telNum
{

NSLog{@"给%@打电话!",telNum};

}
-(void)sentMessage:(NSString *) telNumandContent:(NSString *) content
{

NSLog{@"给%@发短信,短信内容:%@."telNum,content};

}
@end

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

{
iPhone *iPhone6s=[iPhone new];

iPhone6->_color=KColorTHJ;

iPhone6->_cpu=@"A9";

iPhone6->_size=4.7;

[iPhone6 aboutMyPhone];

[iPhone6 callPhone:@"10086"];

[iPhone6 sendMessage:@"10086" andContent:@"您好,请问联通客电话号码是多少?"];

}


学习心得:

通过本章知识点的接触,了解到OC语言和C语言的区别,OC是一门面向对象的编程语言,基于C语言的扩展,类,对象,方法的声明实现调用。有参,无参函数的声明,实现,都很好的诠释了OC这们语言的特性,让我对OC这门语言有了初步的认识。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: