您的位置:首页 > 移动开发 > Objective-C

基于Objective-C的面向对象编程入门

2015-09-22 00:02 435 查看
本文中介绍到得概念有:

对象(Object)的概念
继承(inheritance)
MVC(Model-View-Controller是一种软件设计典范)
(之后的OC都指代Objective-C)

一、 对象的概念

对象指的是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可以看做对象,它不仅能代表具体的事物,也可以表示抽象的规则、计划或事件。
比如交通工具(Vehicle)是一个类,它具有一些属性,包括轮子、商标、出产日期等。还具有一些方法,比如,向前,向后,拐弯等。在面向对象编程中,我们就可以通过继承的方法,生成交通工具的子类比如自行车、摩托车和轿车。交通工具就是自行车的父类,父类可以将自身的方法传递给子类。子类也可以通过重写父类的方法来实现自身的功能,还可以增加自身的特有的方法。比如轿车可以添加别的属性,比如引擎、多少个侧门、后备箱等,也可以增加一些方法,比如鸣笛、打灯等等。在轿车的基础上,你还可以再产生新的子类。
对象则是上面提到的类的一个实例。面向对象有很好地可维护性、可扩展性、可重用性。
在OC中对象拥有属性(properties)以及方法(method)

创建一个Vehicle类

在Vehicle.h文件中添加以下属性

@interface Vehicle : NSObject

@property (nonatomic, assign) NSInteger numberOfWheels;	//轮子的个数
@property (nonatomic, assign) NSInteger modelYear;		//出产日期
@property (nonatomic, copy) NSString *brandName;		//商标

+ (instancetype)vehicleWithBrandName:(NSString *)brandName modelYear:(NSInteger)modelYear wheels:(NSInteger)numberOfWheels;
- (NSString *)goForward;
- (NSString *)goBackward;
- (NSString *)stopMoving;

@end


其中以-开头的是实例方法,只有对象才可以调用。

+开头的是类方法,对象是不可以调用的,只有类才可以调用,一般都是用来实现初始化的

然后在Vehicle.m中实现方法,把代码放在@implementation下面。

- (NSString *)goForward
{
return nil;
}

- (NSString *)goBackward
{
return nil;
}

- (NSString *)stopMoving
{
return nil;
}

+ (instancetype)vehicleWithBrandName:(NSString *)brandName modelYear:(NSInteger)modelYear wheels:(NSInteger)numberOfWheels
{
Vehicle *newVehicle = [[self alloc] init];

//设置实例变量
newVehicle.brandName = brandName;
newVehicle.modelYear = modelYear;
newVehicle.numberOfWheels = numberOfWheels;

//返回对象
return newVehicle;
}


二、继承

我们通过继承Vehicle类来生成一个新的类Car

新建一个Class命名为Car,继承自Vehicle。通过这个操作,我们的Car类继承了所有Vehicle在头文件中命名的属性和方法,(类似于继承了C++中public下的一些变量和方法)
在Car.m下添加初始化方法在@implementation下方

- (id)init
{
if (self = [super init]) {
//Since all cars have four wheels, we can safely set this for every initialized instance of a car.

self.numberOfWheels = 4;
}

return self;
}


其中 self = [super init] 是用父类的init方法进行初始化后,如果初始化成功则执行if(){}中的语句。然后return self。

如果初始化失败,则self = nil,那就不会进入if中的语句,直接return一个nil。

3.  在Car.h中可以添加Car独有的一些属性,像(一)中所说的比如侧门的数量,是否有后备箱等。还可以重写(override)Vehicle类中的goForward等方法。也可以添加自身独有的方法。

//重写父类的方法
- (NSString *)goForward
{
return [NSString stringWithFormat:@"%@ %@ Then depress gas pedal.", [self start], [self changeGears:@"Forward"]];
}

- (NSString *)goBackward
{
return [NSString stringWithFormat:@"%@ %@ Check your rear view mirror. Then depress gas pedal.", [self start], [self changeGears:@"Reverse"]];
}

- (NSString *)stopMoving
{
return [NSString stringWithFormat:@"Depress brake pedal. %@", [self changeGears:@"Park"]];
}

//添加自身的方法
- (NSString *)makeNoise
{
return @"Beep beep!";
}


三、MVC设计模式

Model模型:负责数据的存储

View视图:负责数据的展示

Controller控制器:协调模型和视图之间数据调度和请求响应等。

在iOS开发中,比如生成项目后会产生storyboard文件和ViewController文件

其中storyboard属于视图,ViewController属于控制器,负责将数据展示在视图上。

模型则需要自己来创建,比如(一)(二)中的Vehicle和Car类。

我们可以创建一个VehicleList类来保存Vehicle或者Car的对象。那么这个VehicleList就是所谓的模型了。

当我们需要添加更多地车辆信息,我们只需要在VehicleList中添加实例即可,就可以不需要去修改视图或者控制器文件。

这样在大型的app工程下就可以使工程更容易维护。

参考链接:
http://www.raywenderlich.com/45940/intro-object-oriented-design-part-1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息