Objective-C中对象与对象之间的关系

news/2024/7/20 22:14:36 标签: ios, objective-c, 开发语言

1. 聚合关系(Aggregation)

聚合关系是一种强关联但具有独立生命周期的关系。在聚合关系中,一个对象(容器对象)可以

包含其他对象(成员对象),但成员对象可以独立存在,不依赖于容器对象的存在。这种关系通

常用于表示"拥有"的关系。

@interface Person : NSObject
// Person类包含一个Car对象
@property (nonatomic, strong) Car *car;
@end

2. 组合关系(Composition)

组合关系也是一种强关联关系,但与聚合关系不同,成员对象的生命周期依赖于容器对象的存

在。容器对象创建成员对象,并负责管理和销毁成员对象。这种关系通常用于表示"整体与部

分"的关系。

@interface Computer : NSObject
// Computer类包含一个Keyboard对象和一个Monitor对象
@property (nonatomic, strong) Keyboard *keyboard;
@property (nonatomic, strong) Monitor *monitor;
@end

3. 继承关系(Inheritance)

继承关系是面向对象编程中最基本的关系之一。通过继承,一个类可以继承另一个类的属性和方

法,并在其基础上进行扩展和修改。子类(派生类)继承了父类(基类)的特征和行为。子类可

以添加新的属性和方法,并重写父类的方法。示例:

@interface Animal : NSObject
@property (nonatomic, copy) NSString *name;
- (void)eat;
@end

@interface Dog : Animal
- (void)bark;
@end

4. 关联关系(Association)

关联关系表示两个对象之间的关联,但它们之间没有拥有关系。这种关系是一种松散的、临时的

关系。一个对象可以使用另一个对象提供的功能,但它们的生命周期和责任是独立的。

@interface Teacher : NSObject
// Teacher类中关联了一个Student对象
@property (nonatomic, weak) Student *student;
@end

5. 依赖关系(Dependency)

依赖关系表示一个对象在某些方面依赖于另一个对象,但它们之间的关系比较简单和短暂。一个

对象使用另一个对象提供的服务或者调用其方法,但并不拥有对方。

@interface Calculator : NSObject
// Calculator类依赖于一个MathUtils对象
@property (nonatomic, strong) MathUtils *mathUtils;
@end

http://www.niftyadmin.cn/n/5367250.html

相关文章

什么是边缘计算?

今天,我们探讨一个充满机遇和挑战的领域——边缘计算。 首先,让我们一起探讨一下什么是边缘计算。简单来说,边缘计算是指在网络的边缘,即数据生成的位置进行计算的一种模式。这与传统的云计算模式形成了鲜明对比,在云…

基于Redis实现短信登录

首先我们要思考一下利用redis来存储数据,那么到底使用哪种结构呢?由于存入的数据比较简单,我们可以考虑使用String,或者是使用哈希,如下图,如果使用String,同学们注意他的value,用多…

[UI5 常用控件] 06.Splitter,ResponsiveSplitter

文章目录 前言1. Splitter1.1 属性 2. ResponsiveSplitter 前言 本章节记录常用控件Splitter,ResponsiveSplitter。主要功能是分割画面布局。 其路径分别是: sap.ui.layout.Splittersap.ui.layout.ResponsiveSplitter 1. Splitter 1.1 属性 orientation &#x…

NLP_循环神经网络(RNN)

文章目录 RNN结构RNN实战RNN小结 RNN结构 NPLM 在处理长序列时会面临一些挑战。首先,由于它仍然是基于词的模型,因此在处理稀有词汇或者词汇表外的词汇时效果不佳。其次,NPLM不能很好地处理长距离依赖关系。而上面这两个局限,恰恰…

【数据结构和算法】--- 基于c语言排序算法的实现(1)

目录 一、排序的概念及其应用1.1排序的概念1.2 排序的应用1.3 常见的排序算法 二、插入排序2.1直接插入排序2.2 希尔排序2.2.1 预排序2.2.2 缩小gap2.2.3 小结 三、选择排序3.1 直接选择排序3.2 堆排序 一、排序的概念及其应用 1.1排序的概念 排序: 所谓排序&…

uniapp顶部导航栏高度适配

为了实现好看又实用的顶部导航栏,不得不自己定义导航栏样式。而自己定义的导航栏高度会因为手机的型号不同所展示的效果也就不同,所以只能通过适配高度来达到预期的效果 1.需要在page.json文件中对需要自定义导航栏文件进行配置 "navigationStyle…

网络编程面试系列-01

1. 应用层中常见的协议都有哪些? 应用层协议(application layer protocol)定义了运行在不同端系统上的应用程序进程如何相互传递报文。 应用层协议 1)DNS:一种用以将域名转换为IP地址的Internet服务,域名系统DNS是因特网使用的命名系统,用来把便于人们使用的机器名字…

c#cad 创建-点(六)

运行环境 vs2022 c# cad2016 调试成功 一、代码说明 创建一个点的命令方法。代码的主要功能是在当前活动文档中创建一个点,并将其添加到模型空间块表记录中。 代码的主要步骤如下: 获取当前活动文档、数据库和编辑器对象。使用事务开始创建点的过程…