星空网 > 软件开发 > 操作系统

用1 + 2 = 3诠释面向对象思想

  • 写一个计算的方法,计算1 + 2 。
  • 面向对象,诠释万物皆对象思想。

思路:

  1. 写一个YGInteger主类,里面有一个integer属性,顺便配上description方法。
  2. 添加一个分类 ·YGInit· 重写一个初始化构造方法。
  3. 添加一个分类 ·YGMath· 有加、减、乘、除的四个方法。
  4. 最后添加一个扩展,把数字转换成字符串类型的方法。

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 = 3诠释面向对象思想

关键词:面向对象

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

1000多件货物被亚马逊弄丢!怎么办?:https://www.ikjzd.com/articles/1564453543610269698
小家电出口美国FCC认证科普:https://www.ikjzd.com/articles/1564486591445843970
Shopee引流款和利润款如何定位?:https://www.ikjzd.com/articles/1564499176299806722
Lazada订单发货 如何维护关键指标?:https://www.ikjzd.com/articles/1564500648018165762
电子邮件营销遭到出海品牌的集体嫌弃?:https://www.ikjzd.com/articles/1564512069456084994
沃尔玛放宽入驻审批要求,新卖家数量一周增长四倍!:https://www.ikjzd.com/articles/1564528598933905410
最新消息:推进涉“字节剥离TikTok”新法案将再投票:https://www.goluckyvip.com/news/220214.html
家禽喂食器专利,案件号:24-cv-2773,DRAFT TOP 开瓶器,案件号:24-cv-1889,24-cv-2620等:https://www.kjdsnews.com/a/1842233.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流