黑马程序员-OC中的类

来源:互联网 发布:mac dock图标不显示 编辑:程序博客网 时间:2024/05/18 08:21
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一.设计类的三个步骤
1.类的名称
2.类的属性
3.类的行为(功能)
类与对象的关系
1.oc中的因相当于图纸,用来描述一类事物,也就是说,要想创建对象,必须先有类
2.oc利用类来创建对象,对象是类的具体存在。
3.因此,面向对象解决问题应该是先考虑需要设计哪些类,再利用类创建多少个对象。


二.合理设计一个类 类中有类
/*
 类名称 学生
 成员变量:性别,生日,体重,最喜欢的颜色,狗(

体重,毛色,吃,跑)
 方法: 吃,跑步,遛狗(让狗跑),喂狗(让狗吃)
*/
bogon:03oc whome$ touch 10oc.m
bogon:03oc whome$ open 10oc.m

#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

void test();int main(){        Student *s = [Student new];        Dog *d = [Dog new];    d->curColor = ColorGreen;    d->weight = 20;    s->dog = d;        [s liuDog];    [s weiDog];        test();        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];}

bogon:03oc whome$ cc 10oc.m -framework

Foundation
bogon:03oc whome$ ./a.out
2014-09-22 05:58:04.188 a.out[576:507] 跑完这

次后的体重是19.000000
2014-09-22 05:58:04.204 a.out[576:507] 吃完这

次后的体重是20.000000
2014-09-22 05:58:04.206 a.out[576:507] 性别=

0,喜欢的颜色=0,姓名=Jack,生日=2011-9-10
bogon:03oc whome$

设计一个计算器类 类方法传参
返回pai 3.14
返回两个数的平方
返回两个数的和

bogon:03oc whome$ touch 11oc.m
bogon:03oc whome$ open 11oc.m
#import <Foundation/Foundation.h>
/*
 类名称 计算器
 方法:
 1>返回 pai
 2>计算某个整数的平方
 3>计算两个整数的和
*/

@interface JiSuanQi : NSObject//方法名:pi- (double)pi;//OC方法中,一个参数对应一个冒号//方法名叫:pingFang:(冒号也是方法名的一部分)-(int)pingFang:(int)num;//- (int)sum:(int)num1 : (int)num2;//方法名:sumWithNum1:andNum2;- (int)sumWithNum1:(int)num1 andNum2:(int)num2;//- (int)sumWithNum1:(int)num1 andNum2:(int)num2 andNum3:(int)num3;@end

@implementation JiSuanQi- (double)pi{    return 3.14;}- (int)pingFang:(int)num{    return num*num;}//- (int)sum:(int)num1:(int)num2- (int)sumWithNum1:(int)num1 andNum2:(int)num2{    return num1 + num2;}@end

int main(){    JiSuanQi *jsq = [JiSuanQi new];    int a = [jsq sumWithNum1:20 andNum2:5];    //int a = [jsq sum:10 :5];    //int a = [jsq pingFang:10];    //double a = [jsq pi];    NSLog(@"%i",a);    return 0;}

bogon:03oc whome$ cc 11oc.m -framework

Foundation
bogon:03oc whome$ ./a.out
2014-09-22 06:42:51.467 a.out[626:507] 25

设计一个类 类比较方法

/*
 类名称 车 Car
 成员变量:速度 speed
 方法: 速度比较
*/
bogon:03oc whome$ touch 12oc.m
bogon:03oc whome$ open 12oc.m

#import <Foundation/Foundation.h>/* 类名称 车 Car 成员变量:速度 speed 方法: 速度比较 */@interface Car : NSObject{    @public    int speed;}//速度比较- (int)compareSpeedWithOther:(Car *)other;@end;

@implementation Car- (int)compareSpeedWithOther:(Car *)other{    //speed    //other->speed    //返回当前这输车和为other这辆车的速度差距    return speed - other->speed;}@end

int main(){    //第一辆车 速度300    Car *c1 = [Car new];    c1->speed = 300;        //第二辆车 速度250    Car *c2 = [Car new];    c2->speed = 250;    int a = [c1 compareSpeedWithOther:c2];        NSLog(@"a=%d",a);    return 0;    }



bogon:03oc whome$ cc 12oc.m -framework

Foundation
bogon:03oc whome$ ./a.out
2014-09-22 06:56:29.188 a.out[649:507] a=50
匿名对象
[Car new]->speed = 300;
[[Car new] run];






------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
0 0
原创粉丝点击