您的位置:首页 > 移动开发 > Objective-C

【Objective-C】面向对象—类和对象

2015-08-28 23:20 507 查看
一、OC是面向对象的,C语言是面向过程的。面向对象面向过程只是解决问题的两种不同思想。

1. 区别:面向过程关注的是解决问题需要哪些步骤,面向对象关注的是解决问题需要哪些对象

2. 常用术语:面向对象 Object Oriented,简称OO; 面向对象编程 Object Oriented Programming,简称OOP;

二、类与对象的关系

1. 类的设计

1). 类名

2). 属性

3). 行为(功能)

2. 名词一般是类

如:小明在公交成上牵着一条叼着热狗的狗;

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

1> 类的声明与实现

2> 对象的创建

3> 成员变量的直接赋值

4> 对象的行为

5> 方法与成员变量

6> 对象的简单对象内存

例子:

#pragma mark 类的声明与实现

#import <Foundation/Foundation.h>

// 类的声明
@interface Person : NSObject
{
    @public
    int age;
    double weight;
    
}

- (void)walk;

@end

// 类的实现
@implementation Person
- (void)walk {
    NSLog(@"%d岁、%f公斤的人走了一段距离", age, weight);
}

// main函数
@end

int main()
{
    Person *p = [Person new];
    // oc中指向成员变量使用->
    // .在oc中表示的是调用方法
    p->age = 20;
    p->weight = 60.2;
    [p walk];
    
    Person *p1 = [Person new];
    // oc中指向成员变量使用->
    p1->age = 30;
    p1->weight = 50.2;
    [p1 walk];
    
    Person *p2 = p1;
    p2->age = 40;
    [p1 walk];
    
    p = p1;
    p->age = 60;
    [p1 walk];

}
命令执行文件:

shumeideiMac:~ shumei$ cc -c 类的申明.m

shumeideiMac:~ shumei$ cc 类的申明.m -framework Foundation

shumeideiMac:~ shumei$ ./a.out

2015-08-27 11:30:07.817 a.out[795:221158] 20岁、60.200000公斤的人走了一段距离

shumeideiMac:~ shumei$ ./a.out

2015-08-27 11:30:50.128 a.out[798:224307] 20岁、60.200000公斤的人走了一段距离

shumeideiMac:~ shumei$ cc 类的申明.m -framework Foundation

shumeideiMac:~ shumei$ ./a.out

2015-08-27 11:31:06.294 a.out[802:225249] 20岁、60.200000公斤的人走了一段距离

2015-08-27 11:31:06.295 a.out[802:225249] 30岁、50.200000公斤的人走了一段距离

shumeideiMac:~ shumei$ cc 类的申明.m -framework Foundation

shumeideiMac:~ shumei$ ./a.out

2015-08-27 11:40:21.404 a.out[845:267498] 20岁、60.200000公斤的人走了一段距离

2015-08-27 11:40:21.405 a.out[845:267498] 30岁、50.200000公斤的人走了一段距离

2015-08-27 11:40:21.405 a.out[845:267498] 40岁、50.200000公斤的人走了一段距离

2015-08-27 11:40:21.405 a.out[845:267498] 60岁、50.200000公斤的人走了一段距离

shumeideiMac:~ shumei$

图示解释:





7> 常见错误:只有类的声明,没有类的实现; 漏了@end;@interface和@implementation嵌套;两个类声明嵌套;成员变量没有写在括号里面;方法声明写在大括号里面;(类的实现可以写在main后面,主要声明写在前面就行了)

8> oc方法与函数的区别:

1. 对象方法都是以减号 - 开头;

2. 对象方法的声明必须写在@interface与@end之间,对象方法的实现必须写在@implementation和@end之间;

3. 对象方法只能由对象来调用;

4. 对象方法归类/对象所有;

5. 函数能写在文件中的任意位置(@interface与@end之间),函数归文件所有;

6. 函数调用不依赖于对象;

7. 函数内部不能直接通过成员变量名字访问某个对象的成员变量;

9> 类的合理设计

#pragma mark 类的合理设计
typedefn enum {   // 注意枚举的使用适用情况
    SexMan,
    SecWoman
} Sex;

typedef struct {   // 注意结构体的使用适用情况
    int year;
    int month;
    int day;
}  Date;

#import <Foundation/Foundation.h>

// 类的声明
@interface Person : NSObject
{
    Sex sex;   // 性别
    Date birthday;  // 生日
    double weight;
    
}

@end
10> 方法的声明与实现

注意事项:













11> 关于苹果开发帮助文档的安装

方法一: 找到运用程序Xcode -- /Applications/Xcode.app/Contents/Developer/Documentation/DocSets

方法儿: 方法硬盘的某个路径下面,也是可以
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: