//[Person new];
//做了三件事
//分配空間,初始化,返回空間的首地址
Person *p = [Person new];
p->_age = 24;
p->_name = @"陳自超";
NSLog(@"你叫%@,年齡%d歲!", p->_name, p->_age);
//調用方法
設計一個狗類
1)屬性
*顏色
*速度(單位m/s)
*性別
*體重(單位kg)
2)行爲
*喫:每喫一次體重增加0.5,輸出喫完後的體重
*吠(叫):輸出所有的屬性
*跑:每跑一次,體重減少0.5,輸出速度和跑完後的體重
*比較顏色:跟別的狗比較顏色。如果一樣,兩個值做減法得零,返回NO,不一樣,做減法得非零值,返回YES
*比較速度:跟別的狗比較速度,返回速度差(自己的速度-其他狗的速度)
人類
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;
float _speed;
Sex _sex;
float _weight;
}
//方法
-(void) eat:(NSString *) foodName;//喫
-(void) bark;//叫
-(void) run;//跑
-(BOOL) isCompareColorWithOther:(Dog *) Dog;//比較顏色,傳一個狗對象
-(float) isCompareSpeedWithOther:(Dog *) Dog;//比較速度
@end
//方法實現
#pragma mark 狗類的實現
@implementation Dog
//方法具體實現
-(void) eat:(NSString *) foodName {
_weight += 0.5f;
NSLog(@"狗正在喫%@,狗的體重:%.2f(kg)", foodName, _weight);
}//喫
-(void) bark {
NSLog(@"狗的顏色:%d,狗的速度:%.2f(m/s),狗的性別:%d,狗的體重:%.2f(kg)", _color, _speed, _sex, _weight);
}//叫
-(void) run {
_weight -= 0.5;
NSLog(@"狗的速度:%.2f(m/s),狗的體重:%.2f(kg)", _speed, _weight);
}//跑
-(BOOL) isCompareColorWithOther:(Dog *)Dog {
//當前狗的顏色 另外一條狗的顏色
if(_color == Dog->_color) {
return YES;
} else {
return NO;
}
}//比較顏色
-(float) isCompareSpeedWithOther:(Dog *)Dog {
return fabsf(_speed - Dog->_speed);
}//比較速度
@end
#pragma mark -
//聲明人類
#pragma mark 人類的聲明
@interface Person : NSObject
{
@public
//屬性
NSString *_name;
Dog *_dog;
}
//方法的聲明
//餵狗
-(void) feedDog:(NSString *) foodName;
//遛狗
-(void) liuDog;
@end
#pragma mark 人類的實現
@implementation Person
//餵狗
-(void) feedDog:(NSString *) foodName {
//_dog 狗喫東西
[_dog eat:foodName];
}
//遛狗
-(void) liuDog {
//_dog 狗跑起來
[_dog run];
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
//創建狗對象1
Dog *p1 = [Dog new];
p1->_color = kColorHua;
p1->_speed = 15.2f;
p1->_sex = kSexYao;
p1->_weight = 45.5f;
// //狗對象2
// Dog *p2 = [Dog new];
// p2->_color = kColorBlack;
// p2->_speed = 20.5f;
// p2->_sex = kSexGong;
// p2->_weight = 40.5f;
// [p1 eat:@"牛肉湯"];
// [p1 bark];
// [p1 run];
//
// //返回值1相同
// BOOL isSameColor = [p1 isCompareColorWithOther:p2];
// NSLog(@"isSameColor = %d", isSameColor);
//
// float cha = [p1 isCompareSpeedWithOther:p2];
// NSLog(@"兩隻狗速度相差%.2f(m/s)", cha);
//創建人對象
Person *m = [Person new];
m->_name = @"陳自超";
//先給人一條狗,不然_dog爲null
m->_dog = p1;
//方法調用,人餵狗
[m feedDog:@"狗骨頭"];
//人遛狗
[m liuDog];
}
return 0;
實現功能:士兵開槍,槍射擊子彈
槍類
名稱:Gun
屬性:型號(_size),子彈個數(_bulletCount)
行爲:射擊
人類
名稱:Soldier
屬性:姓名(_name),等級(_level),血量(_life)
行爲:跑 蹲 開槍 跳
子彈類
名稱:Bullet
屬性:子彈個數,型號(_model)
*/
#import <Foundation/Foundation.h>
//子彈連續傳遞了兩次
#pragma mark 子彈類的聲明
@interface Bullet : NSObject
{
@public
NSString *_size;
int _bulletCount;
}
@end
#pragma mark 子彈類的實現
@implementation Bullet
@end
#pragma mark 槍類的聲明
@interface Gun : NSObject
{
@public
//屬性
NSString *_size;
// int _bulletCount; //普通
}
-(void) shoot:(Bullet *) bullet;
@end
#pragma mark 槍類的實現
@implementation Gun
-(void) shoot:(Bullet *) bullet {
//每射擊一次,子彈個數-1
if (bullet->_bulletCount > 0) {
bullet->_bulletCount --;
NSLog(@"%@正在突突的射擊。。。,剩餘子彈:%d", _size, bullet->_bulletCount);
} else {
NSLog(@"蠢驢,沒子彈了!");
}
}
@end
#pragma mark -
//#pragma mark 士兵類的聲明-普通
//@interface Soldier : NSObject
//{
// @public
// NSString *_name;
// int _life;
// int _level;
//
//}
//-(void) fireByGun:(Gun *) gun;
//@end
//#pragma mark 士兵類的實現-普通
//@implementation Soldier
//-(void) fireByGun:(Gun *) gun {
// //讓槍射擊
// [gun shoot];
//}
//@end
#pragma mark 士兵類聲明-高級
@interface Soldier : NSObject
{
@public
NSString *_name;
int _life;
int _level;
}
-(void) fireByGun:(Gun *) gun andBullet:(Bullet *) bullet;
@end
#pragma mark 士兵類實現-高級
@implementation Soldier
//開槍,傳了子彈和彈夾
-(void) fireByGun:(Gun *) gun andBullet:(Bullet *) bullet {
//讓槍裝上子彈,然後射擊
[gun shoot:bullet];
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
//創建槍對象
Gun *g = [Gun new];
g->_size = @"AK47";
// g->_bulletCount = 1;
//創建士兵對象
Soldier *s = [Soldier new];
s->_name = @"許三多";
s->_life = 100;
s->_level = 5;
// [s fireByGun:g];
// [s fireByGun:g];
//創建子彈
Bullet *myBullet = [Bullet new];
myBullet->_size = @"5mm口徑";
myBullet->_bulletCount = 3;
[s fireByGun:g andBullet:myBullet];
[s fireByGun:g andBullet:myBullet];
[s fireByGun:g andBullet:myBullet];
[s fireByGun:g andBullet:myBullet];
}
return 0;
//1、字符串純英文
NSString * s1 = @"chenzichao";
NSUInteger len = [s1 length];
NSLog(@"len = %ld", len);
//2、字符串純中文
//OC字符串中英文都一個字符佔一個字節,C語言中,UTF-8,一個漢字三個字節
NSString *s2 = @"陳自超";
len = [s2 length];