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

//
//  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;
}

总结:

/*

1、OC简介:

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、返回指向该对象的指针

*/

时间: 2024-10-13 22:47:56

OC基础笔记——创建类2(广州黑马一期)的相关文章

OC基础笔记——内存管理(广州黑马一期)

栈: 局部变量:定义在方法或函数内部变量 系统管理 堆:动态存储区 一般由程序猿管理 ##引用计数 如果内存管理不当 1.不再使用对象没有被回收,内存泄露,最终导致程序闪退 2.正在被使用对象被释放了,野指针,访问野指针就会导致程序崩溃 ARC Automatic Reference Counting 自动引用计数 MRC Manual Reference Counting 手动引用计数 1.当一个对象刚刚出生时候,它的引用计数 1 2.当对象上引用计数是0的时候,系统立即把它回收 3.rele

OC基础笔记——创建类注意点和printf与NsLog的区别(广州黑马一期)

//1.类的声明和实现不能嵌套的,声明中也不能嵌套其他声明,实现也不能嵌套其他的实现 //2.类的声明中仅仅能放成员变量和方法的声明 //3.成员变量一定要声明在大括号中, //4.不能在声明的时候给变量赋值 //5.方法不可以写大括号中 //6.成员变量不能定义在大括号外部 //7.方法定义一定要在大括号与@end之间 //8.对象方法只能同多对象调用,不可以使用C语言的方式进行调用 //9.外部不能识别定义在@interface 与 @end 函数,但是可以放在@implementation

OC基础笔记目录

OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象的存储细节 函数与方法对比 常见错误 OC基础(4) NSString 类介绍及用法 结构体成员变量 对象和方法之间的关系 对象作为方法的参数连续传递 OC基础(5) #pragma mark指令 OC多文件开发介绍 匿名对象

OC基础笔记——类方法和对象方法和封装(广州黑马一期)

对象方法: 1.声明和实现方法时候,以 -开头 2.对象方法是隶属于对象,只能通过对象调用 3.对象方法中可以直接访问成员变量,因为对象方法和成员变量都是隶属于该对象的 4.对象方法中可以调用其他对象方法 5.对象方法中也可以调用类方法 类方法: 1.声明和实现的标识符都是 + 2.类方法它是属于类本身的 3.类方法是直接通类名调用的,不能通过对象调用 4.类方法不能访问成员变量,因为成员变量是对象的,不是类的 5.在类方法中不能直接调用对象方法,也就是说不能通过self来调用对象方法 如果你要

OC基础笔记——继承(广州黑马一期)

OC中的继承机制是单继承的,一个子类只能有一个父类 OC支持多层继承的,A 继承 NSObject,B继承A这就称为多层继承 在继承体系中方法调用的顺序 1.在自己类中找 2.如果没有,去父类中找 3.如果父类中没有,就去父类的父类中 4.如果父类的父类也没有,就还往上找,直到找到基类(NSObject) 5.如果NSObject都没有就报错了 //只有继承NSObject那么这个对象才有创建对象能力//NSObject是大部分类的基类(根类 root class),/* 当 A 类 继承 B类

OC基础笔记——成员变量的可见性(广州黑马一期)

@private:私有的,只有本类的对象方法中中可以直接访问访问它 成员变量在那个类中定义的才能在那个类中使用 @protected:受保护的:只能在本类和子类中可以直接访问,不再外部访问 @public:公共的,大家都可以用,在本类,子类,外部都可以访问 @package: 主要用在框架内部,在框架内部相当于@protected,在框架外部相当于@private(了解) 本类:定义这个成员变量的类 控制可见性的修饰符,从使用开始直到所有成员变量结束或遇到其他的控制可见性修饰符为止 在实现文件里

OC基础笔记——self 和super(广州黑马一期)

局部变量.成员变量和全局变量 1.在方法内部可以定义与成员变量同名局部变量, 那么在这个局部变量的作用域范围内他会覆盖成员变量 2.如果定义与成员变量同名局部变量,还(ˇ?ˇ) 想-操作局部变量:通过self来访问 3.全局变量,整个文件共享的,所有方法中共享的: 那么一个方法中修改这个全局变量其他方法中使用这个全局变量都会修改 4.变量作用域中存在一个原则:就近原则 查找的顺序 局部变量 -> 成员变量 -> 全局变量 self与方法 1.self在对象方法中,它是调用这个方法那对象 2.s

张超超OC基础回顾01_类的创建,申明属性,以及本质

1.如何编写类的声明 以@interface开头 , 以@end结尾, 然后再class name对应的地方写上 事物名称, 也就是类名即可 注意: 类名的首字符必须大写 声明一个类的目的就是为了告诉系统, 我们这个类中有哪些属性和行为 OC类声明中属性只能在写@interface和@end之间的{}中 注意: 编写OC类属性的时, 建议将所有属性的名称前面都加上"_",这个是规范,记住就行了. 类名后面的 :NSObject 是为了让我们的Iphone类具备创建对象的能力,也就是说,

oc基础第二天类与对象---1复习

1. OC语言是在C语言的基础之上新增了一些面向对象的语法. 将C语言复杂的.繁琐的.东西封装的更为简单和易用. Objective-C: 本质其实就是C语言. OC完全兼容C. 2. OC将C难用的东西做了封装. 1). #import指令. 2). NSLog()函数. 3). NSString @"jack" 新增了一些数据类型. BOOL class 类 3. 面向过程与面向对象. 4. 代码中的面向过程与面向对象. 5. 类与对象 类 对象 6. 类和对象的关系 类是模板 对