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

OC基础笔记——创建类2(广州黑马一期)

时间:2015-11-23 16:41:27      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:

//
//  main.m
//  04-创建类2
//
//  Created by Apple on 14/11/17.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>
/*
 类名:Zombies
 属性:life,颜色,位置,形状
 行为:走,咬,死,loseLife
 
 炮弹
 类名:Cannonball
 属性:大小,威力,飞行距离,速度
 行为:飞,爆炸
 
 车
 类名:Car
 属性:载员,速度,牌照
 行为:跑,停
 
 学生
 类名:Student
 属性:姓名、学号,性别
 行为:学习,逃学
 
 手机:
 类名:Phone
 属性:大小,尺寸,颜色,_cup,内存
 行为:打电话,发短信
 */
//在OC中没有命名空间,也不支持包名
//在OC定义类、枚举、结构体的时候需要给它们加上前缀

//Zombies
//声明
typedef enum _CZColor{
    CZColorWhite,
    CZColorBlack,
    CZColorYellow
} CZColor;


typedef struct _CZPoint{
    int x;
    int y;
} CZPoint;


@interface CZZombies : NSObject
{
@public
    int _life;//生命值
    CZColor _color;//颜色
    CZPoint _position;//位置
}

/**
 *  走到那个位置
 *
 *  @param position 走到位置
 */
- (void) walkTo:(CZPoint) position;

- (void) bite;

@end


@implementation CZZombies

/**
 *  走到那个位置
 *
 *  @param position 走到位置
 */
- (void) walkTo:(CZPoint) position
{
    _position = position;

    NSLog(@"走到了(%d,%d)的位置",_position.x,_position.y);
}

- (void) bite
{
    NSLog(@"");
}




@end

void test()
{
    //  创建对象
    //  同一个类创建出来的多个对象之间没有什么关系,成员变量都是自己拥有的,与其他的对象没有任何关系
    CZZombies  *zombie   =  [CZZombies new];
    
    CZPoint position = {10,10};
    
    [zombie walkTo:position];
    
    
    
    CZZombies *zom = [CZZombies new];
    
    NSLog(@"zom 位置(%d,%d)",zom->_position.x,zom->_position.y);
}


/*
 手机:
 类名:IPhone
 属性:大小,颜色,型号
 行为:aboutPhone
      打电话,
      callTo:(char *) phoneNum
      发短信
      sendMessage:(NSString *) content to:(NSString *) phoneNum
 
 */

//定义一个大小的结构体

typedef struct _CZSize {
    double width;//
    double height;//
} CZSize;

//为了防止与前面的冲突去掉前缀
typedef enum _Color{
    ColorWhite,
    ColorBlack,
    ColorYellow
} Color;

//定义手机类

//声明

@interface CZIPhone : NSObject
{
@public
    CZSize _size;//尺寸
    Color _color; // 颜色
    NSString * _model;//型号
}
/**
 *  关于手机
 */
- (void) aboutPhone;

/**
 *  打电话
 *
 *  @param phoneNum 手机号码
 */
- (void) callTo:(NSString *) phoneNum;

/**
 *  发送短信
 *
 *  @param content  短信内容
 *  @param phoneNum 手机号码
 */
- (void) sendMessage:(NSString *)content to:(NSString *) phoneNum;

@end


@implementation CZIPhone

/**
 *  关于手机
 */
- (void) aboutPhone
{
    NSLog(@"这一部%@ 颜色为%d,尺寸width = %.2lf,height = %.2lf",_model,_color,_size.width,_size.height);
}

/**
 *  打电话
 *
 *  @param phoneNum 手机号码
 */
- (void) callTo:(NSString *) phoneNum
{
    NSLog(@"给 %@ 打电话",phoneNum);
}

/**
 *  发送短信
 *
 *  @param content  短信内容
 *  @param phoneNum 手机号码
 */
- (void) sendMessage:(NSString *)content to:(NSString *) phoneNum
{
    NSLog(@"给 %@ 发送内容为 %@ 的短信",phoneNum,content);
}

@end


int main(int argc, const char * argv[]) {
   

//   创建对象
    CZIPhone *myPhone  = [CZIPhone new];
    
    myPhone->_color = ColorWhite;
    
    myPhone->_size = (CZSize){320,480};
    
    myPhone->_model = @"iPhone4s";
    
    [myPhone aboutPhone];
    
    [myPhone callTo:@"10086"];
    
    [myPhone sendMessage:@"老婆不回家吃饭了" to:@"110"];
    
    
    return 0;
}

 总结:

/*

  1OC简介:

     OC C语言的超集,它在C语言的基础上增加了最小的面向对象的语法

  2、对比C来学习OC

     数据类型、关键字、流程控制、函数

  3、面向对象的思想

     1、它是一种更接近于现实生活的一种编程思想

     2、它思考问题强调的谁去做

     3、要完成某项任务,首先去找完成该任务对象,如果没有创建一个,然后指挥对象做事。

  4、对象

     在面向对象中万物皆对象

     从另一角度的来说,现实生活中任何具体的事物都可以认为是一个对象

  5、类

     从编程的设计:现实中一类事物抽象,抽象就是提取这一类事物共有的属性和行为

     从编程语言:创建对象必须要类,对象是类的实例;

  6、类与对象关系

     汽车图纸与汽车的关系

  7、设计类

     1、通过文字描述来设计一个类

        名词提取法:只要遇到相关的名词都可以提取一个类

     2、看图提取一个类

        图上具有一些共性的事物都可以提成一个类

     一个类包含三个部分:

     1、类名:这一类事物的名称

     2、属性:某类事物共有一些状态特征

     3、行为:某类事物共有一些功能特征

 

  8、创建类

     0、设计类

     1、声明:就是对的概括说明,它是给使用该的人看的

        1、确定类名

        2、要继承NSObject,是为了让类有创建对象的能力

        3、声明必须以@interface 开头 @end结尾

        4、声明属性,必须在@interface @end之间的大括号中

           声明属性的时候不可以对属性进行初始化

        5、声明方法,必须在{} @end之间进行声明,不可以有方法的实现

           格式:方法类型标识符 (返回值类型) 方法名:(参数类型) 参数名称 方法名:(参数类型) 参数名称 

           1、所有的数据类型都要使用小括号扩起来

           2、一个参数对应一个冒号

           3、冒号是方法名称一部分

 

     2、实现:实现声明所有的方法

        必须写在@implementation @end

 

     注意点:1、只有声明没有实现的类,链接的时候就报错

            2、只有实现没有声明的类,可以使用(OC弱语法),但是编程的时候也不可以这么做

            3、声明与实现不可以嵌套,一个类的内部也不可声明其他类

            4、少@end

            5、声明的属性没有写在大括号中

            6、声明的方法写在了大括号中

            7、调用类的对象方法的时候只能通过该类对象,不能像函数一样直接调用

            8、函数不能直接访问某个对象的成员变量

    9、函数与方法

       1、函数都是平行,没有谁隶属于谁的关系

       2、函数中定义变量都是局部变量,函数中能直接操作一个类的成员变量

       3、函数的调用是直接通过函数名称进行调用的

       对象方法:

       1、它是隶属于该类的对象的,只能该该类的对象调用

       2、在对象方法中可以直接访问成员变量,因为他们都是隶属于该类的对象的

    10、对象的创建

       Object * obj =  [类名  new];

       1、为类的对象在堆中开辟存储空间

       2、将所有成员变量初始化为0,如果是对象类型的就初始化为nil

       3、返回指向该对象的指针

 

*/

OC基础笔记——创建类2(广州黑马一期)

标签:

原文地址:http://www.cnblogs.com/zhuyaguang/p/4988558.html

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