黑马程序员——OC笔记之类和对象

来源:互联网 发布:阿里云os电视软件下载 编辑:程序博客网 时间:2024/06/05 06:19

------- android培训、java培训、iOS培训、.Net培训、期待与您交流! ----------

在了解类和对象之前,先了解一下什么是面向对象。

面向对象

编程的实质:

将我们的思维转变成计算机能够识别的语言的一个过程。

编程思想:

分为面向过程和面向对象

面向对象是相对于面向过程而言的。

举个例子:

在苹果Appstore上线一个app

面向过程:

(1)先学C和OC语言 (2)构思开发项目 (3)开发app (4)调试Bug (5)上线app

面向对象:

(1)找个苹果开发者 (2)让他开发app  (3)上线

因此,面向过程就是将待解决的问题分解成多个步骤亲自参与解决,面向对象就是将待解决的问题交给对象,专业分工。

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

面向过程:

强调的是功能行为,关注的是解决问题需要哪些步骤。

面向对象:

将功能封装进对象,强调具备了功能的对象,关注的是解决问题需要哪些对象。

面向对象的优点:

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

(2)减少维护费

(3)提高可移植性和可靠性

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

抽象性、封装性、多态性和继承性

类和对象

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

我们从一个个具体的事物中把共同的特征抽取出来,形成一个一般的概念,这就是"归类";如:昆虫、狮子、爬行动物,因为它们都能动所以归类为动物。在演绎的过程中我们又把同类的事物,根据不同的特征分成不同的小类,这就是“分类”;如动物->猫科动物->猫->大花猫等。对于一个具体的类,它有许多具体的个体,我们就管这些个体叫做“对象”。 

对象(object):
即指现实世界中各种各样的实体。
它可以指具体的事物,也可以指抽象的事物。如整数1、2,飞机,法律,表格等等。每个对象都有自己的内部状态和运动规律,如哮天犬具有体重、颜色等内部状态,具有啃骨头、睡觉、被打、咆哮等运动规律。在面向对象概念中我们把对象的内部状态称为属性,运动规律称之为方法。 
类的抽象:
拥有相同(或类似)的属性和行为的对象都可以抽象出一个类
如大花猫、加菲猫、汤姆猫就可以抽象出“猫”类
抽象的方法:
名词提炼法,一般名词都是类
类的实例:
一个类可以实例化多个对象
如人这个类可以实例化出张三、李四、王五等。
类和对象之间的关系:

类:

由3个部分构成

类的名称:类名

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

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

对象:

是系统中的基本运行实体

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

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

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

类的声明和实现

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

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

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

成员变量的常用作用域有3种:@public 全局都可以访问

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

方法:

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

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

- 表示对象方法(动态方法)在.h中声明的所有方法作用域都是public类型,不能更改

类的定义分为两部分:

1)类的声明(规定当前类的:类名、属性、行为)
@interface 类名:父类名
{
        //定义类的属性
}
//类的行为

@end

2)类的实现(实现具体行为)

@implementation 类名

//行为的具体实现

@end

//车的类的声明@interface Car:NSObject{   //类的属性    int lunzi;  //车的轮子    NSString *color;//车的颜色    int speed;  //车的速度}-(void)run;//跑的方法@end//类的实现@implementation Car-(void)run{    NSLog("车在以%d的速度奔向悬崖",speed);}@end

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

OC中对象创建
[Car new];  

做了3件事情
1)向计算机申请内存空间
2)给类中的每一个成员初始化值
3)返回新申请的空间的首地址
理解方式一:
定义了一个Car类型的指针变量
指针变量指向新申请的内存空间
理解方式二:
用Car类实例化了一个实例对象,对象的名称是p
Car *p = [Car new];
//创建Car类型的对象 car1Car *car1=[Car new];//创建一个对象 实质还是指针 (用指针间接访问实例变量值)car1->lunzi = 3;car1->speed = 150;car1->color = @"蓝色";//查看车的信息NSLog(@"轮子:%d,速度:%d ,颜色:%@",car1->lunzi,car1->speed,car1->color);


0 0
原创粉丝点击