练习题讲解

掌握】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;
}
时间: 2024-10-08 01:52:50

练习题讲解的相关文章

shell基础练习题讲解

1037774765 克隆 1.创建一个用户redhat,其ID号为1001,基本组为like(组ID为2002),附近租为linux. groupadd -g 2002 likegroupadd linuxuseradd -u 1001 -g 2002 -G linux redhat 2.创建一个用户fedora,其注释信息为Fedora Commuity,默认shell为sh man useradd 查看到-c是注释 useradd -c "Fedora Commuity" -s

shell练习题讲解

写一个脚本,计算100以内所有的奇数的和以及所有偶数的和,分别显示出来#! /bin/bashsum1=0for i in `seq 1 2 100`do sum1=$[$sum1+$i]doneecho $sum1 sum2=0for j in `seq 2 2 100`do sum2=$[$sum2+$j]doneecho $sum2 写一个脚本,利用RANDOM生成10个随机数,并且找出最大值和最小值 for i in `seq 1 10`do n[$i]=$RANDOM echo ${n

43 正则中用sub和subn函数搜索与替换 使用split函数分隔字符串 练习题

第10课 正则中用sub和subn函数搜索与替换 # 使用sub和subn函数搜索和替换 ''' sub(正则表达式,要替换的字符串,母字符串) ''' import re result = re.sub('Bill','Mike', 'Bill is my son.') print(result) # Mike is my son. 把Bill 替换成 Mike result = re.subn('Bill', 'Mike', 'Bill is my son, I like Bill') pr

OC-对象和方法的练习

练习题讲解 思考&实现1: 设计一个"狗"类 1)属性:颜色,速度,性别,体重 2)行为 吃:每吃一次,体重增加0.5kg,输出吃完后的体重 吠:输出所有的属性 跑:每跑一次,体重减少0.5kg,输出速度和跑完后的体重 比较颜色:跟别的狗比较颜色,如果一样,两个值做减法得零,返回NO(零值),不一样,做 减法得非零值,返回YES(1) 比较速度:跟别的狗比较速度,返回速度差(自己的速度-其他狗的速度) #import<Foundation/Foundation.h>

黑马程序员--IOS学习笔记--IOS初级视频目录

1.第一天: 1.1.开发概述 1.2.IOS设备发展史 1.3.Mac OS X系统介绍 1.4.Mac OS X常见设置 1.5.Mac OS X系统操作(一) 1.6.Mac OS X系统操作(一) 1.7.Mac OS X系统操作(一) 1.8.开发环境Xcode安装.使用 1.9.IOS开发体验之按钮.界面切换 1.10.IOS开发体验之按钮.界面切换(补充) 1.11.IOS开发体验之打电话发短信 1.12.IOS开发体验之<Tom猫> 1.13.计算机程序 1.14.IOS开发基

Python3.X全栈-Day09-Python语言介绍、变量、基本数据类型及while循环

01 python全栈s3 day9  Python开发系列课程概要 02 python全栈s3 day9  Python作业要求以及博客 03 python全栈s3 day9  编程语言介绍 04 python全栈s3 day9  Python种类介绍 05 python全栈s3 day9  Python安装以及环境变量的操作(一) 06 python全栈s3 day9  Python安装以及环境变量的操作(二) 07 python全栈s3 day9  Python条件语句和基本数据类型(一)

【图文+视频新手也友好】Java一维数组详细讲解(内含练习题答案+详解彩蛋喔~)

目录 视频讲解: 一.数组的概述 二.一维数组的使用 三.Arrays工具类中的sort方法(sort方法用的多,我们具体讲一下) 四.数组中的常见异常 五.一维数组练习题 六.彩蛋(本期视频使用的PPT+[练习题(带答案和详解)]) [新手友好型视频]全面讲解Java一维数组(内含带答案和讲解的练习题彩蛋喔)看完即上手!更有详解版练习题来帮你加深印象~~ 视频讲解: 点击这里即可到小乔的B站观看 一.数组的概述 数组(Array),是存储一系列同类型数据元素的一种数据结构.它通过数组名和一个整

[视频讲解]初级课程-运算符-Java之J2se

这一节主要讲解 运算符的应用 Java 的运算符分为: 算术运算符 赋值运算符 逻辑运算符 位运算符 三元运算符 这里录制了 视频讲解这几大类运算符,并有练习题提供大家 面试题: 1. 最有效率的方式算出2乘以8等于几? 2. 对两个整数变量的值进行互换(不需要第三方变量) 答案在官网论坛 - 第三课课后习题贴中 www.xiaozhangwx.com 视频地址: http://my.tv.sohu.com/us/233850565/75540081.shtml ================

[您有新的未分配科技点]可,可,可持久化!?------可持久化线段树普及版讲解

最近跑来打数据结构,于是我决定搞一发可持久化,然后发现--一发不可收啊-- 对于可持久化数据结构,其最大的特征是"历史版本查询",即可以回到某一次修改之前的状态,并继续操作:而这种"历史版本查询"会衍生出其他一些强大的操作. 今天,我们主要讲解可持久化线段树.其实,它的另外一个名字"主席树"似乎更加为人所知(主席%%%). 主席树与普通的线段树相比,多出来的操作是在修改时复制修改的一条链,这个操作的过程大概长下面这样. 至于为什么要这样做-- 对