OOA 面向对象分析
OOD 面向对象设计
OOP 面向对象语言 如java
对象:
类的实例化,所有具体的事物都可以称之为对象。
包含相应的属性和相应的方法(行为)。
类:
对象的抽象化,所有具有相同属性和方法的对象的集合。
OC类的定义:
#import:类似C中的#include,但是#import能避免头文件被重复包含(重发导入编译);
#import<…>导入系统自带的类
#import”…”导入自定义的类
实例化方法(减号方法):
需要实例化对象之后通过对象来进行调用;
实例化方法允许调用实例方法和实例变量。
类方法(静态方法,加号方法):
不需要实例化对象,直接使用类调用;
可以调用类方法;
不可以调用实例化方法,可通过实例化对象进行调用;
不可使用实例变量,可使用self(self不是实例化变量);
类方法作为消息,可以被发送到类里面去,不能发送到对象里面去(可以通过类,但是不能通过对象调用类方法)。
对象初始化:
类名 * 对象名 = [[类名 alloc] init];
类名 * 对象名 = [类名 new];
重写父类init方法:
-(id)init
{
if(self = [super init])
{
name = @”lucy”;
age = 20;
}
return self;
}
便利初始化方法:
-(id)initWithName:(NSString *)aName andAge:(int)anAge
{
if(self = [super init])
{
name = [aName copy];
age = anAge;
}
return self;
}
便利构造器:
+(id)studentWithName:(NSString*)aName andAge:(int)anAge
{
//实例化对象调用便利初始化方法
Student *student = [[Student alloc] initWithName;aName andAge:anAge];
[student autorelease];//自带释放,即不用进行内存管理
return student;
}
实例变量:
@interface Student : NSObject
{//需要在括号定义实例变量
@pubilc //公开的
NSString *name;
int age;
@private//私有的
NSString * nickname;
double weight;
@protected//受保护的
NSString *familyName;
double height;
}
设置器,访问器:
-(NSString *)getName
{
return name;
}
-(void)setName:(NSString *)newName
{
name = newName;
}
属性:
@property (nonatomic,copy) NSString *name;
属性的实现:
@synthesize name, age;//可以省略实现部分(不用实现,即系统默认)
封装:
对内部实现进行隐藏,对外提供接口;
NSNumber:
//对基本数据(C)类型进行封装(转化为对象)
+(NSNumber *)numberWithChar:(char)value;
+(NSNumber *)numberWithInt:(int)value;
…
-(NSNumber *)numberWithChar:(char)value;
…