码迷,mamicode.com
首页 > 其他好文 > 详细

Objective-C - 类的设计实例

时间:2015-04-18 11:37:21      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:objective   设计   实例   类的设计   属性   

类的设计

1.类的设计:
1> 类名
* 类名的第一个字母必须是大写
* 不能有下划线
* 多个英文单词,用驼峰标识
2> 属性
3> 行为(功能)

2.植物大战僵尸的僵尸
* 类名:Zoombie
* 属性:lifespeedgongjili
* 行为:walkbitedie

3.雷电的飞机
* 类名:Plane
* 属性:lifegongjilispeedbombCount
* 行为:flybombshootdie

4.电脑
* 类名:Computer
* 属性:bandexpireDate
* 行为:openclose

Car类的设计实例

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

// 因为使用了NSObject
#import <Foundation/Foundation.h>

// 完整地写一个函数:函数的声明和定义(实现)
// 完整地写一个类:类的声明和实现

// 1.类的声明
// 声明对象的属性、行为
// : NSObject 目的是:让Car这个类具备创建对象的能力
@interface Car : NSObject
{// 用来声明对象属性(实例变量\成员变量,默认会初始化为0)
    // @public可以让外部的指针间接访问对象内部的成员变量
    @public
    int wheels; // 轮胎个数
    int speed; // 时速(xxkm/h)
}

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

@end

// 2.类的实现
// 用来实现@inteface中声明的方法
@implementation Car
// 方法的实现(说清楚方法里面有什么代码)

- (void)run
{
    NSLog(@"车子跑起来了");
}

@end

int main()
{
    // 在OC中,想执行一些行为,就写上一个中括号[行为执行者 行为名称]
    // 利用类来创建对象
    // 执行了Car这个类的new行为来创建新对象

    // 定义了一个指针变量p,p将来指向的是Car类型的对象
    // [Car new]每次都会创建出一个新对象,并且会返回新对象本身(新对象的地址)
    Car *p = [Car new];


    Car *p2 = [Car new];
    p2->wheels = 5;
    p2->speed = 300;
    [p2 run];

    // 给p所指向对象的wheels属性赋值
    p->wheels = 4;
    p->speed = 250;

    // 给p所指向对象发送一条run消息
    [p run];

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

    return 0;
}

Person类的设计实例

/*
 人
 类名:Person
 属性(成员变量\实例变量):体重、年龄
 行为(方法):走路、吃
 */
#import <Foundation/Foundation.h>
/*
 1.类的声明
    * 成员变量
    * 方法的声明
 */
@interface Person : NSObject
{
    @public
    int age;
    double weight;
}

- (void)walk;
- (void)eat;

@end


// 2.类的实现
@implementation Person

// 实现@interface中声明的方法
- (void)walk
{
    NSLog(@"%d岁、%f公斤的人走了一段路", age, weight);
}

- (void)eat
{
    NSLog(@"%d岁、%f公斤的人在吃东西", age, weight);
}

@end

int main()
{
    // 在使用类创建对象之前,会将类加载进内存
    Person *p = [Person new];
    p->age = 20;
    p->weight = 40;

    [p eat];
    [p walk];

    Person *p2 = [Person new];
    p2->age = 30;
    p2->weight = 60;
    [p2 eat];
    [p2 walk];


    Person *p2 = [Person new];
    p2->age = 30;
    p2->weight = 50;

    p = p2;

    p->age = 40;

    [p2 walk];


    /*
    Person *p = [Person new];
    p->age = 20;

    Person *p2 = [Person new];
    p2->weight = 50.0;

    [p walk];
     */


    Person *p = [Person new];
    p->age = 20;
    p->weight = 50.0;
    [p walk];

    Person *p2 = [Person new];
    p2->age = 30;
    p2->weight = 60.0;
    [p2 walk];

    return 0;
}

类的合理设计

#import <Foundation/Foundation.h>

typedef enum {
    SexMan,
    SexWoman
} Sex;

typedef struct {
    int year;
    int month;
    int day;
} Date;


typedef enum {
    ColorBlack,
    ColorRed,
    ColorGreen
} Color;

@interface Dog : NSObject
{
    @public
    double weight; // 体重
    Color curColor; // 毛色
}

- (void)eat;
- (void)run;
@end

@implementation Dog
- (void)eat
{
    // 每吃一次,体重就加1
    weight += 1;
    //weight = weight +  1;
    NSLog(@"狗吃完这次后的体重是%f", weight);
}

- (void)run
{
    weight -= 1;
    NSLog(@"狗跑完这次后的体重是%f", weight);
}
@end

/*
学生
成员变量:性别、生日、体重、最喜欢的颜色、狗(体重、毛色,吃、跑)
方法:吃、跑步、遛狗(让狗跑)、喂狗(让狗吃)
*/
@interface Student : NSObject
{
    @public
    Sex sex; // 性别
    Date birthday; // 生日
    double weight; // 体重(kg)
    Color favColor; // 最喜欢的颜色
    char *name;

    // 重点:狗
    Dog *dog;
}
- (void)eat;
- (void)run;
- (void)print;

- (void)liuDog;
- (void)weiDog;
@end

@implementation Student

- (void)liuDog
{
    // 让狗跑起来(调用狗的run方法)
    [dog run];
}

- (void)weiDog
{
    // 让狗吃东西(调用狗的eat方法)
    [dog eat];
}

- (void)print
{
    NSLog(@"性别=%d, 喜欢的颜色=%d, 姓名=%s, 生日=%d-%d-%d", sex, favColor, name, birthday.year, birthday.month, birthday.day);
}

- (void)eat
{
    // 每吃一次,体重就加1
    weight += 1;
    //weight = weight +  1;
    NSLog(@"学生吃完这次后的体重是%f", weight);
}

- (void)run
{
    weight -= 1;
    NSLog(@"学生跑完这次后的体重是%f", weight);
}
@end

int main()
{
    Student *s = [Student new];

    Dog *d = [Dog new];
    d->curColor = ColorGreen;
    d->weight = 20;
    s->dog = d;


    [s liuDog];

    [s weiDog];
    return 0;
}


void test()
{
    Student *s = [Student new];
    s->weight = 50;

    // 性别
    s->sex = SexMan;

    // 生日
    Date d = {2011, 9, 10};
    s->birthday = d;

    s->name = "Jack";

    /*
     s->birthday.year = 2011;
     s->birthday.month = 9;
     s->birthday.day = 10;
     */

    // 喜欢的颜色
    s->favColor = ColorBlack;
    /*
     [s eat];
     [s eat];

     [s run];
     [s run];
     */

    [s print];
}

Objective-C - 类的设计实例

标签:objective   设计   实例   类的设计   属性   

原文地址:http://blog.csdn.net/wangzi11322/article/details/45111039

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!