看了一天OC,根據視頻上老師的要求,自己動手寫了個小例子。歡迎大家指出不足的地方 【要求】 設計一個“狗”類 1)屬性 顏色、速度(m)、性別,體重(kg) 2)行爲 喫:每喫一次,體重增加0.5kg,輸出處完後的體重 叫:輸出所有屬性 跑:每跑一次,體重減少0.5kg,輸出速度和跑完後的體重 比較顏色:跟別的狗一樣,兩個值做減法得零,返回NO,不一樣,做減法得到非零,返回YES 比較速度:跟別的狗比較速度,返回速度差 【代碼實現如下】 |
#import <Foundation/Foundation.h>
#pragma mark 枚舉變量定義部分
//定義顏色
typedef enum{Black,Red,White,Yellow,Silver}Color;
//定義性別
typedef enum{Female,Male} Sex;
#pragma mark 狗類定義部分
@interface Dog : NSObject{
@public
NSString *_name; //名字
float _weight; //體重
Color _color; //顏色
Sex _sex; //性別
float _speed; //速度
}
//喫東西 _weight+=0.5
-(void)eat:(NSString*)food;
//運動 _weight-=0.5
-(void)run;
//bark 叫-->打印狗的所有信息
-(void)bark;
//與其他狗比較顏色,相同返回YES,不同返回NO
-(BOOL)compareColorWithOther:(Dog*)dog;
//與其他狗比較速度,返回速度差
-(float)compareSpeedWithOther:(Dog*)dog;
@end
#pragma mark 狗類實現部分
@implementation Dog
//狗喫東西_weight += 0.5
-(void)eat:(NSString *)food{
self->_weight += 0.5;
NSLog(@"%@ eat %@,然後打了一個飽嗝,喫完體重爲%.2f",self->_name, food, self->_weight);
}
//狗運動_weight -= 0.5
-(void)run{
self->_weight -= 0.5;
NSLog(@"%@ 撒歡跑了起來,跑完後體重爲:%.2f",self->_name,self->_weight);
}
//狗叫
-(void)bark{
NSLog(@"[name:%@ sex:%d weight:%.2f color:%d speed:%.2f]",_name,_sex,_weight,_color,_speed );
}
//與其他狗比較顏色,與其他狗顏色相同返回NO,否則返回YES
-(BOOL)compareColorWithOther:(Dog *)dog{
return _color-dog->_color != 0 ? YES : NO;
}
//與其他狗比較速度,返回速度差
-(float)compareSpeedWithOther:(Dog *)dog{
return _speed - dog->_speed;
}
@end
int main(int argc, const char * argv[])
{
@autoreleasepool {
//定義第一隻狗
Dog *dog1 = [[Dog alloc] init];
dog1->_name = @"Lisa";
dog1->_weight = 20.4f;
dog1->_sex = Female;
dog1->_color = White;
dog1->_speed = 10.9f;
//定義第二隻狗
Dog *dog2 = [Dog new];
dog2->_name = @"Blue";
dog2->_weight = 40.6f;
dog2->_sex = Male;
dog2->_color = Black;
dog2->_speed = 30.9f;
//dog1執行動作
[dog1 eat:@"Rich wiht Shit"];
[dog1 run];
[dog1 eat:@"Shit"];
[dog1 bark];
//兩隻狗比較顏色
if (![dog1 compareColorWithOther:dog2]) {
NSLog(@"%@ 與%@的顏色相同",dog1->_name, dog2->_name);
}
else{
NSLog(@"%@ 與%@的顏色不相同",dog1->_name, dog2->_name);
}
//兩隻狗比較速度
float temp = [dog1 compareSpeedWithOther:dog2];
if([dog1 compareSpeedWithOther:dog2] >= 0){
NSLog(@"%@ 的速度大於等於%@的速度",dog1->_name, dog2->_name);
}
else{
NSLog(@"%@ 的速度小於%@的速度",dog1->_name, dog2->_name);
}
}
return 0;
}
打印結果:
2015-10-03 22:45:43.959 PersonAndDoa[2220:303] Lisa eat Rich wiht Shit,然後打了一個飽嗝,喫完體重爲20.902015-10-03 22:45:43.961 PersonAndDoa[2220:303] Lisa 撒歡跑了起來,跑完後體重爲:20.40
2015-10-03 22:45:43.962 PersonAndDoa[2220:303] Lisa eat Shit,然後打了一個飽嗝,喫完體重爲20.90
2015-10-03 22:45:43.963 PersonAndDoa[2220:303] [name:Lisa sex:0 weight:20.90 color:2 speed:10.90]
2015-10-03 22:45:43.963 PersonAndDoa[2220:303] Lisa 與Blue的顏色不相同
2015-10-03 22:45:43.963 PersonAndDoa[2220:303] Lisa 的速度小於Blue的速度