你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> 用1 + 2 = 3诠釋面向對象思想

用1 + 2 = 3诠釋面向對象思想

編輯:IOS技巧綜合
[摘要]本文是對用1 + 2 = 3诠釋面向對象思想的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。
    寫一個計算的方法,計算1 + 2 。 面向對象,诠釋萬物皆對象思想。

思路:

寫一個YGInteger主類,裡面有一個integer屬性,順便配上description方法。
添加一個分類 ·YGInit· 重寫一個初始化構造方法。
添加一個分類 ·YGMath· 有加、減、乘、除的四個方法。
最後添加一個擴展,把數字轉換成字符串類型的方法。

YGInteger.h

#import <Foundation/Foundation.h>

@interface YGInteger : NSObject

@property(nonatomic,assign)NSInteger integer;

@end

YGInteger.m 中寫一個description方法,和 擴展中,將數字轉換成字符串的方法

#import "YGInteger.h"
#import "YGInteger_YGChangeValue.h"

@implementation YGInteger
- (NSString *)description
{
    return [NSString stringWithFormat:@"%ld",self.integer];
}

- (NSString *)changeValue
{
    return [NSString stringWithFormat:@"%@",self];
}

@end

YGInteger+YGInit.h 這是Integer的Init分類

#import "YGInteger.h"
#import "YGInteger.h"
@interface YGInteger (YGInit)
- (instancetype)initWithInteger:(NSInteger)integer;

+ (instancetype)integerWithInteger:(NSInteger)integer;
@end

YGInteger+YGInit.m 實現一下標配方法

#import "YGInteger+YGInit.h"

@implementation YGInteger (YGInit)
- (instancetype)initWithInteger:(NSInteger)integer
{
    if (self = [super init]) {
        self.integer = integer;
    }
    return self;
}

+ (instancetype)integerWithInteger:(NSInteger)integer
{
    __autoreleasing YGInteger *i = [[YGInteger alloc]initWithInteger:integer];
    return i;
}
@end

YGInteger+YGMath.h Integer的計算分類,裡面有加、減、乘、除 四個方法聲明。

#import "YGInteger.h"

@interface YGInteger (YGMath)
- (YGInteger *)add:(YGInteger *)i;
- (YGInteger *)minus:(YGInteger *)i;
- (YGInteger *)multiply:(YGInteger *)i;
- (YGInteger *)divide:(YGInteger *)i;

@end

YGInteger+YGMath.m 利用對象調用,充分體現面向對象編程。

#import "YGInteger+YGMath.h"

@implementation YGInteger (YGMath)
- (YGInteger *)add:(YGInteger *)i
{
    YGInteger *result = [[YGInteger alloc]init];
    result.integer = self.integer + i.integer;
    return result;
}

- (YGInteger *)minus:(YGInteger *)i
{
    YGInteger *result = [[YGInteger alloc]init];
    result.integer = self.integer - i.integer;
    return result;
}

- (YGInteger *)multiply:(YGInteger *)i
{
    YGInteger *result = [[YGInteger alloc]init];
    result.integer = self.integer * i.integer;
    return result;
}

- (YGInteger *)divide:(YGInteger *)i
{
    YGInteger *result =[[YGInteger alloc]init];
    result.integer = self.integer / i.integer;
    return result;
}
@end

YGInteger_YGChangeValue.h 最後,擴展方法中聲明一下,轉換的方法。

#import "YGInteger.h"

@interface YGInteger ()
- (NSString *)changeValue;
@end

先在storyBoard中先拖一個Label,用於顯示結果,寫一個show方法,用於把數據展示到模擬器中。

#import "ViewController.h"
#import "YGInteger+YGInit.h"
#import "YGInteger+YGMath.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *outputLabel;
- (void)show:(YGInteger *)i;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    YGInteger *int1 = [[YGInteger alloc]initWithInteger:1];
    YGInteger *int2 = [[YGInteger alloc]initWithInteger:2];
    YGInteger *int3 = [int1 add:int2];
    self.outputLabel.text = [NSString stringWithFormat:@"%@",int3];
//    [self show:[int1 add:int2]];
}


- (void)show:(YGInteger *)i
{
    self.outputLabel.text = [NSString stringWithFormat:@"%@",i];
}

@end
    用對象add對象。形象的體現出面向對象編程。這是一種思想的體現。思想固有化,兩個數相加,覺得這麼做很麻煩,為什麼不直接傳入兩個參數呢,還要用對象調用屬性,脫褲子放屁多此一舉。 因為,以後的需求不僅僅是單一的只做一件事,你用對象調用,你的選擇會很多,不會局限於一種思維。如果真的選擇了用單一化思維思考問題,那麼,以後就真的只能停留在1 + 2 = 3了。

僅此。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved