// // main.m // OC1_类与对象 // // Created by zhangxueming on 15/6/9. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <Foundation/Foundation.h> //面向过程与面向对象 //C语言偏向面向过程 //面向过程强调业务的逻辑 //五子棋 //1.显示棋盘 2.黑子先走 3.判断输赢 4.绘制棋盘 5.白子下棋 6.判断输赢 7.绘制棋盘 8.返回第二步 9.下棋结束 //用函数把逻辑过程中的每一步实现, 通过函数调用加上控制结构实现整个项目 //面向对象强调的是对象 //1.黑白双方 2.棋盘系统 3.下棋规则 //黑白双方负责接收用户输入, 告知棋盘系统显示棋盘, 通过棋盘规则判断输赢 //类与对象 //从生活上: //对象 类 //章子怡 奥巴马 人类 //小黑 狗类 //小飞的macbook computer //官方定义 //类: 具有相同特征事物的统称(抽象的概念) //对象: 类的实例化(形象) //从编程的角度来看 //结构体: 封装了数据结构 //函数: 封装了处理数据的方法 //类: 既封装数据结构, 又封装了处理数据的方法 (升级版的结构体) //对象: 用类定义的实例(类类型的对象) //类: Car 对象: Car *mycar //Person Person *xiaoHua //实例方法(对象方法)与实例变量 //[window earse]; //[text write]; //[text read]; //[view show]; //[xiaoHua age]; //Person //{ // NSString *name; // int age; //} //@interface: 定义类的关键字 //@end: 表示结束 //Student : 类名(类名的首字母要大写) //系统类的命名 NS+每个单词的首字母大写 //NSObject //Next Step //NSObject //NSString //NSArray //NSData //NSNumber //NSMutableArray @interface Student : NSObject //NSObject类是一个根类(基类) { NSString *_name;//实例变量的命名通常用_开头(习惯使然),以后每个单词的首字母大写; int _age; } //构造(初始化)方法 //- 表示对象(实例)方法,给类的对象调用 + 表示类方法,给当前类调用,通常用类名来调用 //id : 泛型对象指针 类似void * //无形式参数, 返回值为 id类型 方法名: init - (id)init; //有一个形式参数 name , 返回值为 id类型 方法名: initWithName: - (id)initWithName:(NSString *)name; //有两个形式参数 name age, 返回值为 id 类型 方法名: initWithName:andAge: - (id)initWithName:(NSString *)name andAge:(int)age; //OC中的命名规范:第一个单词的首字母小写,以后每个单词的首字母大写 "驼峰规则" //匿名方法, 方法名: initWithName:: //- (id)initWithName:(NSString *)name :(int)age; //getter方法 //读取实例变量的方法 - (NSString *)getName; - (int)getAge; //setter方法 //修改实例变量的方法 - (void)setName:(NSString *)name; - (void)setAge:(int)age; - (void)setName:(NSString *)name andAge:(int)age; //类方法 //给当前类调用, 通过类名调用 + (void)testStudent; @end //@implementation + 类名 //实现类的关键字 @implementation Student //initWithXXX - (id)initWithName:(NSString *)name andAge:(int)age { self = [super init];//super是调用父类方法的关键字(编译器符号) //先用父类的构造初始化自己, 然后再初始化自定义的实例变量 //self 指向调用者的对象指针 if (self) { _name = name; _age = age; } return self; } //getter方法实现 - (int)getAge { return _age; } - (NSString *)getName { return _name; } //setter方法的实现 - (void)setName:(NSString *)name { _name = name; } - (void)setAge:(int)age { _age = age; } - (void)setName:(NSString *)name andAge:(int)age { _name = name; _age = age; } //测试当前类是否可用 + (void)testStudent { Student *xiaoHua = [Student alloc];//alloc 类方法 创建对象 xiaoHua = [xiaoHua initWithName:@"小华" andAge:12]; NSLog(@"name = %@, age = %i", [xiaoHua getName], [xiaoHua getAge]); Student *xiaoFei = [[Student alloc] initWithName:@"小飞" andAge:20]; [xiaoFei setName:@"小小飞" andAge:22]; NSLog(@"name = %@, age = %d",[xiaoFei getName], [xiaoFei getAge]); } @end int main(int argc, const char * argv[]) { @autoreleasepool { [Student testStudent]; } return 0; }
时间: 2024-10-08 05:04:39