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

练习题讲解

时间:2015-07-25 18:07:18      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

掌握】08-练习题讲解

 设计一个”狗“类
  1> 属性
  * 颜色
  * 速度(单位是m/s)
  * 性别
  * 体重(单位是kg)
  
  2> 行为
  * 吃:每吃一次,体重增加0.5kg,输出吃完后的体重
  * 吠(叫):输出所有的属性
  * 跑:每吃一次,体重减少0.5kg,输出速度和跑完后的体重
  * 比较颜色:跟别的狗比较颜色,如果一样,两个值做减法得零,返回NO(零值),不一样,做减法得到非零值,返回YES(1)
  * 比较速度:跟别的狗比较速度,返回速度差(自己的速度 - 其他狗的速度)
 
#import <Foundation/Foundation.h>

//定义狗的颜色的枚举
typedef enum {kColorWhite,kColorYellow,kColorHua,kColorBlack} Color;

typedef enum {kSexGong,kSexMu,kSexYao} Sex;

#pragma mark 狗类的定义
@interface Dog:NSObject
{
    @public
   //狗的实例变量
    Color _color;
    //NSString *_color;
    //char *
    //strcmp(字符串)
    
   //狗的体重
    float _weight;
   //狗的性别
    Sex _sex;
    
   //狗的速度
    int _speed;

}
   //狗的行为
-(void)eat:(NSString *)foodName;//体重+0.5
-(void)run;  //体重-0.5
-(void)bark; //打印所有的信息
//比较狗毛的颜色
-(BOOL)isCompareColorWithOther:(Dog *)dog;
//比较速度
-(int)CompareSpeedWithOther:(Dog *)dog;

@end

#pragma mark 狗类的实现
@implementation Dog
-(void)eat:(NSString *)foodName{
    
    _weight += 0.5f;
    NSLog(@"狗正在吃%@,吃完后还打了个隔!",foodName);

}//体重+0.5
-(void)run{
    
    _weight -= 0.5f;
    NSLog(@"狗正在以时速 %d 的速度向前疯跑!",_speed);


}  //体重-0.5
-(void)bark{

    NSLog(@"性别:%d,颜色:%d,速度:%d,当前体重:%.2f",_sex,_color,_speed,_weight);

} //打印所有的信息
//比较狗毛的颜色
-(BOOL)isCompareColorWithOther:(Dog *)dog{
  
    //当前狗的颜色   另外一条狗的颜色
    if(_color == dog->_color){
    
        return YES;  //颜色相同
    }else{
    
        return NO;
    }

}
//比较速度
-(int)CompareSpeedWithOther:(Dog *)dog{

    return _speed - dog->_speed;
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //创建两条狗
        Dog *d1 = [Dog new];
        
        d1->_speed = 80;
        d1->_weight=20;
        d1->_sex = kSexYao;
        d1->_color = kColorHua;
        
        //
        [d1 bark];
        
        [d1 eat:@"一块沾有粑粑的玉米"];
        [d1 eat:@"一块沾有粑粑的红薯"];
        
        [d1 bark];
        
        
        
        //创建两条狗
        Dog *d2 = [Dog new];
        
        d2->_speed = 30;
        d2->_weight= 50;
        d2->_sex = kSexGong;
        d2->_color = kColorHua;
        
        //
        [d2 bark];
        
        [d2 eat:@"一块沾有粑粑的玉米"];
        [d2 eat:@"一块沾有粑粑的红薯"];
        
        [d2 bark];
        
        // 1  相同    0不同
        BOOL isSameColor = [d1 isCompareColorWithOther:d2];
        NSLog(@"isSameColor = %d",isSameColor);
        
        //比较狗的速度差
        int cha = [d1 CompareSpeedWithOther:d2];
        NSLog(@"速度差:%d",cha);
        
    }
    return 0;
}
2015-07-16 16:15:00.586 08-练习题讲解(一)-1[972:83417] 性别:2,颜色:2,速度:80,当前体重:20.00
2015-07-16 16:15:00.587 08-练习题讲解(一)-1[972:83417] 狗正在吃一块沾有粑粑的玉米,吃完后还打了个隔!
2015-07-16 16:15:00.587 08-练习题讲解(一)-1[972:83417] 狗正在吃一块沾有粑粑的红薯,吃完后还打了个隔!
2015-07-16 16:15:00.587 08-练习题讲解(一)-1[972:83417] 性别:2,颜色:2,速度:80,当前体重:21.00
2015-07-16 16:15:00.587 08-练习题讲解(一)-1[972:83417] 性别:0,颜色:2,速度:30,当前体重:50.00
2015-07-16 16:15:00.588 08-练习题讲解(一)-1[972:83417] 狗正在吃一块沾有粑粑的玉米,吃完后还打了个隔!
2015-07-16 16:15:00.588 08-练习题讲解(一)-1[972:83417] 狗正在吃一块沾有粑粑的红薯,吃完后还打了个隔!
2015-07-16 16:15:00.588 08-练习题讲解(一)-1[972:83417] 性别:0,颜色:2,速度:30,当前体重:51.00
2015-07-16 16:15:00.588 08-练习题讲解(一)-1[972:83417] isSameColor = 1
2015-07-16 16:15:00.588 08-练习题讲解(一)-1[972:83417] 速度差:50
反思:

     1.代码书写顺序
           
              先把固定格式写好(类定义,声明)

     2.枚举不熟悉


          

 (二)

 2.结合前面的“狗”类,设计一个“人”类
 1> 属性
 * 姓名
 * 狗(养了一条狗)
 
 2> 行为
 * 喂狗:每喂一次,狗就会执行“吃”这个行为
 * 遛狗:每溜一次,狗就会执行“跑”这个行为
#import <Foundation/Foundation.h>

//定义狗的颜色的枚举
typedef enum {kColorWhite,kColorYellow,kColorHua,kColorBlack} Color;

typedef enum {kSexGong,kSexMu,kSexYao} Sex;

#pragma mark 狗类的定义
@interface Dog:NSObject
{
@public
    //狗的实例变量
    Color _color;
    //NSString *_color;
    //char *
    //strcmp(字符串)
    
    //狗的体重
    float _weight;
    //狗的性别
    Sex _sex;
    
    //狗的速度
    int _speed;
    
}
//狗的行为
-(void)eat:(NSString *)foodName;//体重+0.5
-(void)run;  //体重-0.5
-(void)bark; //打印所有的信息
//比较狗毛的颜色
-(BOOL)isCompareColorWithOther:(Dog *)dog;
//比较速度
-(int)CompareSpeedWithOther:(Dog *)dog;

@end

#pragma mark -
#pragma mark 人这个类的定义部分
@interface Person : NSObject
{
    @public
    NSString *_name;
    Dog *_dog;
}
//行为
//喂狗
-(void)feedDog:(NSString *)foodName;
//遛狗
-(void)liuDog;
@end

#pragma mark -
#pragma mark 人这个类的实现部分
@implementation Person
//喂狗
-(void)feedDog:(NSString *)foodName{

    //_dog
    //让狗吃东西
    //[null eat:foodName];
    [_dog eat:foodName];

}
//遛狗
-(void)liuDog{

    //让狗跑起来
    [_dog run];
 
}
@end




#pragma mark 狗类的实现
@implementation Dog
-(void)eat:(NSString *)foodName{
    
    _weight += 0.5f;
    NSLog(@"狗正在吃%@,吃完后还打了个隔!",foodName);
    
}//体重+0.5
-(void)run{
    
    _weight -= 0.5f;
    NSLog(@"狗正在以时速 %d 的速度向前疯跑!",_speed);
    
    
}  //体重-0.5
-(void)bark{
    
    NSLog(@"性别:%d,颜色:%d,速度:%d,当前体重:%.2f",_sex,_color,_speed,_weight);
    
} //打印所有的信息
//比较狗毛的颜色
-(BOOL)isCompareColorWithOther:(Dog *)dog{
    
    //当前狗的颜色   另外一条狗的颜色
    if(_color == dog->_color){
        
        return YES;  //颜色相同
    }else{
        
        return NO;
    }
    
}
//比较速度
-(int)CompareSpeedWithOther:(Dog *)dog{
    
    return _speed - dog->_speed;
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        //创建两条狗
        Dog *d1 = [Dog new];
        
        d1->_speed = 80;
        d1->_weight=20;
        d1->_sex = kSexYao;
        d1->_color = kColorHua;
        
        
        //创建一个人的对象
        
        Person *p = [Person new];
//        p->_name
        //给p一个dog
        p->_dog = d1;
        
        NSLog(@"%@",p->_dog);
        //人要喂狗
        [p feedDog:@"骨头"]; //狗会吃东西吗?为什么?
        
      
        
        
    }
    return 0;
}
2015-07-16 17:21:35.714 09-练习题讲解(一)-2[1029:99437] <Dog: 0x10020a1f0>
2015-07-16 17:21:35.715 09-练习题讲解(一)-2[1029:99437] 狗正在吃骨头,吃完后还打了个隔!

 

反思: 这个练习想让我们学习的是实例变量可以是一个类类型


       但这个类类型默认是null,你必须先赋值

         

 

 

13-【理解】练习题讲解(二)-1 

思考&实现1: 设计一个”学生“类
1> 属性 * 姓名 * 生日 用结构体作为类的实例变量(生日)

 

/*
 
 设计一个”学生“类
  1> 属性
  * 姓名
  * 生日

 
 
 */


#import <Foundation/Foundation.h>

//Student
//iPhone --> IPhone

//日期的结构体
typedef struct {
    
    //年
    int year;
    //月
    int month;
    //日
    int day;
    
}MyDate;

//Student类的声明
@interface Student : NSObject
{
    @public
  //学生姓名
    NSString *_name;
    
  //学生生日
    MyDate _birthday;  //结构体变量
    //MyDate1 *md = [MyDate new];
    //
//    MyDate1 *_birthday;

}

@end


//Student类的实现
@implementation Student

@end


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        Student *stu = [Student new];
        stu->_name = @"凤姐";
        
//        
//        struct Car{
//        
//            int lunzi;
//            int speed;
//        
//        }car1;

// (struct Car) // car1 = {4,50}; // int a[3]={4,50}; //第一种方法 stu->_birthday =(MyDate){1983,12,12}; //NSLog(@"%d,%d,%d",stu->_birthday.year,stu->_birthday.month,stu->_birthday.day); //第二种方法:定义一个结构体变量 MyDate d1 = {1981,11,11}; //定义结构体变量的同时进行初始化 stu->_birthday = d1; // NSLog(@"%d,%d,%d",stu->_birthday.year,stu->_birthday.month,stu->_birthday.day); //MyDate d2 = d1; //第三种方法,逐个赋值 stu->_birthday.year = 2014; stu->_birthday.month = 12; stu->_birthday.day = 11; NSLog(@"%d,%d,%d",stu->_birthday.year,stu->_birthday.month,stu->_birthday.day); } return 0; }

 

练习题讲解

标签:

原文地址:http://www.cnblogs.com/kongweiiwei/p/4676127.html

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