美文网首页
组合与聚合

组合与聚合

作者: 我不白先生 | 来源:发表于2020-09-15 18:50 被阅读0次

1类与对象(续)
1.1dealloc方法
1.1.1该方法是从NSObject类中欧诺个继承的
1.1.2该方法在对象的堆空间被释放之前由ARC调用
2.组合与聚合
2.1是指两个(或以上)类之间的一种关系
2.2是(一个)整体类与(多个)部分类之间的关系
2.3组合是强关系,即同生共死

2.3聚合是弱关系,非同生共死
习题
TRAnimal.h

#import <Foundation/Foundation.h>
#import "TRHead.h"
#import "TRLimb.h"
#import "TRTrunk.h"
NS_ASSUME_NONNULL_BEGIN
@interface TRAnimal : NSObject
{
    TRHead *_head;
    TRLimb *_limb;
    TRTrunk *_trunk;
}
@end

TRAnimal.m

#import "TRAnimal.h"

@implementation TRAnimal
-(instancetype)init
{
    self = [super init];
    if(self)
    {
        NSLog(@"动物诞生了");
        _head = [[TRHead alloc] init];
        _limb = [[TRLimb alloc] init];
        _trunk =[[TRTrunk alloc]init];
    }
    return self;
}
-(void)dealloc
{
    NSLog(@"动物死亡了");
}
@end

ViewController.m

#import "ViewController.h"
#import "TRAnimal.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    TRAnimal *a = [[TRAnimal alloc] init];
    NSLog(@"--------");
}

2.4聚合是弱关系,非同生共死
TRAnimal.h

#import <Foundation/Foundation.h>
#import "TRHead.h"
#import "TRLimb.h"
#import "TRTrunk.h"
NS_ASSUME_NONNULL_BEGIN

@interface TRAnimal : NSObject

@property TRHead *head;
@property TRLimb *limb;
@property TRTrunk *trunk;
    

@end

TRAnimal.m

#import "TRAnimal.h"

@implementation TRAnimal
-(instancetype)init
{
    self = [super init];
    if(self)
    {
        NSLog(@"动物诞生了");

    }
    return self;
}
-(void)dealloc
{
    NSLog(@"动物死亡了");
}
@end

ViewController.m

#import "ViewController.h"
#import "TRAnimal.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    TRHead *h = [[TRHead alloc] init];
    TRLimb *l = [[TRLimb alloc] init];
    TRTrunk *t = [[TRTrunk alloc] init];
    NSLog(@"------");
    {
        TRAnimal *a = [[TRAnimal alloc] init];
        a.head = h;
        a.limb = l;
        a.trunk = t;
    }
    NSLog(@"=======");
}

相关文章

  • 组合与聚合

    1类与对象(续)1.1dealloc方法1.1.1该方法是从NSObject类中欧诺个继承的1.1.2该方法在对象...

  • java 中关于依赖,关联,聚合,组合之前的区别理解

    依赖 --- 局部变量,方法的形参,静态方法 关联 ,聚合,组合--- 成员变量聚合和组合都是关联的一种聚合和组合...

  • 五分钟看懂UML图

    一个完整的案例 聚合关系 组合关系 组合关系与聚合关系见得最大不同在于:这里的“部分”脱离了“整体”便不复存在。比...

  • 组合,聚合,继承,依赖

    组合 聚合 继承 依赖

  • 聚合与组合的关系

    一、概述 UML类图中的关系主要是(按照耦合度递增的顺序): 依赖 关联 聚合 组合 继承 聚合和组合从本质上讲都...

  • 聚合轴与组合轴

    这是雅柯布森在20世纪50年代提出的概念。 聚合轴,相当于构成全文本可供选择的各种元素,故又称“选择轴”;组合轴,...

  • 七个原则7-合成(组合)/聚合复用原则

    七个原则7-合成(组合)/聚合复用原则 定义:尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的 聚合 ha...

  • 组合模式(Composite)

    在探讨Java组合模式之前,先要明白几个概念的区别:继承、组合和聚合。 继承是is-a的关系。组合和聚合有点像,有...

  • UML(unified modeling language)常用

    继承 实现 关联 依赖 组合 聚合 是醉常用的统一建模语言常用的类关系个人理解:聚合和组合属于关联的子类,聚合和组...

  • RAC组合

    concat then merge zipWith 组合和聚合

网友评论

      本文标题:组合与聚合

      本文链接:https://www.haomeiwen.com/subject/waaxyktx.html