文档章节

2015-10-13 OC语言中的复合

尘埃眠于光年yr
 尘埃眠于光年yr
发布于 2015/10/13 16:41
字数 479
阅读 5
收藏 0
点赞 0
评论 0

复合,就是对象之间的组合,它不限制对象的个数,但至少有两个对象。

复合时,将要复合的对象(类实例化)的头文件导入被复合的类的头文件中,并在接口中定义复合对象的对象类型和设置方法的声明。

具体细节用实例说明;

如 现在有一个汽车,它由轮胎和引擎组成

main.m

#import <Foundation/Foundation.h>

#import "Car.h"

#import "Engine.h"

#import "Tire.h"


int main() {

   

    //实例化一个Car对象

    Car *car = [[Car alloc]init];

    

    //实例化一个Engine对象

    Engine *engine = [[Engine alloc]init];

    

    // 实例化一个Tire对象

    Tire *tire = [[Tire alloc]init];

    

    //给汽车设置发动机

    [car setEngine:engine];

    //给汽车设置轮胎

    [car setTire:tire];

    

    //汽车调用自身接口里面的方法

    [car describeCar];

        

}


Engine.h:

#import <Foundation/Foundation.h>


@interface Engine : NSObject


 //engine的方法声明

-(NSString *) describeI;


@end


Engine.m:

#import "Engine.h"


@implementation Engine


//engine 的方法的实现

-(NSString *)describeI

{

    return @"发动机";

}


@end


Tire.h

#import <Foundation/Foundation.h>


@interface Tire : NSObject


//tired的方法声明

-(NSString *) describeII;



@end


Tire.m:

#import "Tire.h"


@implementation Tire


//tire的方法实现

-(NSString *)describeII

{

   return @"轮胎";

    // 也可以返回一句话

    //return @"我是一个轮胎";

}


@end


Car.h:

#import <Foundation/Foundation.h>

// 头文件中导入enginetire

#import "Engine.h"

#import "Tire.h"


@interface Car : NSObject

{

    //Car类里面设置以类为返回类型的类属性,之前的一般是基本的几种数据类型,规则和之前设置类属性时一样。

    Engine * _engine;

    Tire * _tire;

}


// 设置引擎方法的声明

-(void) setEngine : (Engine *) engine;

-(Engine *) engine;


//设置轮胎方法的声明

-(void) setTire : (Tire *) tire;

-(Tire *) tire;


//设置汽车对象的方法声明

-(void) describeCar;

@end


Car.m:

#import "Car.h"


@implementation Car


//引擎方法的实现

-(void)setEngine:(Engine *)engine

{

    _engine = engine;

}


-(Engine *)engine

{

    return _engine;

}


//轮胎方法的实现

-(void)setTire:(Tire *)tire

{

    _tire = tire;

}


-(Tire *)tire

{

    return  _tire;

}


//汽车对象方法的实现

-(void) describeCar

{

    NSLog(@"我是一辆车,我有%@%@.",[_engine describeI],[_tire describeII]);

}

@end





© 著作权归作者所有

共有 人打赏支持
尘埃眠于光年yr
粉丝 0
博文 15
码字总数 13635
作品 0
西安
【IOS开发笔记02】学生管理系统

端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品、native、前端、服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端...

范大脚脚
2017/11/17
0
0
如何实现iOS热更新

如何实现iOS热更新 字数803 阅读7169 评论19 喜欢42 最近被苹果审核整怕了,每次提交版本都得等待一周到两周的审核时间,我是受不了这种速度了,于是决定研究有没有其他的方法跳过提交版本这...

法斗斗
2016/08/15
9
0
iOS 单例模式全面解析

我先列举一个苹果官方文档中的写法。 static AccountManager *DefaultManager = nil; + (AccountManager *)defaultManager { if (!DefaultManager) DefaultManager = [[self allocWithZone:N......

coderHan
2015/12/13
27
0
2015 年开源中国新增 6000 款软件盘点

刚刚过去的2015年,开源中国总共新增收录软件 5977款,这些软件主要来自作者、用户的投递,以及我们在国内外网站发现的有价值的开源软件。根据这批新增软件所使用的编程语言、功能分类等方面...

oschina
2016/01/14
5.5K
23
简述如何从Objective-C到Swift过渡

本篇文章简述了如何从Objective-C向Swift过渡。话不多说,开门见山。 注意:本文讨论的开发环境为Xcode 6 beta 2版本。 单一文件结构 VS 接口-实现 最值得一提的一大改动便是在Objective-C中...

牵着蜗牛去西藏
2014/11/04
170
0
iOS 框架--MJExtension-Swift

1.这个框架是做什么的? .这个框架可以理解为MJExtension的Swift版本,主要是实现类反射,并在实现反射功能的基础上实现字典-模型一键互转! MJExtension(OC): https://github.com/CoderMJL...

nsdictionary
2015/07/13
2.2K
2
"数据结构翻转课堂"答疑实录——顺序表

【说明】 本文是《数据结构》翻转课堂在线答疑的实录,由云班课的“答疑/讨论”功能中导出数据整理而成。。 【重要提示】 下面的内容,按时间从后往前的顺序提供,请直接到文章末尾,倒着看更...

贺利坚
2015/10/01
0
0
清华大学视频课件:基于Linux的C++(自主模式)

基于Linux的C++(自主模式) 课程简介 Linux操作系统开源的特性使得其获得越来越重要的地位,而Linux系统编程也向C++程序设计者提出了更高的要求。本课程由C/C++语言的共性与特性出发,在深入...

dragonscroll
2017/11/20
0
0
iOS中常见的一些宏

1.处理NSLog事件(开发者模式打印,发布者模式不打印) 1 2 3 4 5 2.在OC语言的情况下导入某些头文件 1 2 3 3.处理循环引用问题(处理当前类对象) 1 4.获取屏幕宽高 1 2 5.判断iOS8或更高系统版本...

秦无炎
2016/09/13
1
0
初探swift语言的学习笔记七(swift 的关健词)

初探swift语言的学习笔记七(swift 的关健词) 原文地址:http://blog.csdn.net/fengsh998/article/details/32133809 转载请注明出处 每一种语言都有相应的关键词,每个关键词都有他独特的作用...

法斗斗
2016/03/03
16
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Git GUI Client

Git GUI Client   这里我们为大家收藏了众多Git的GUI客户端,下载请点击这里

qwfys
7分钟前
0
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
11分钟前
2
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
17分钟前
1
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
31分钟前
1
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 #!/usr/bin/expectset passwd "123456"spawn rsync -av root@192.168.133.132:/tmp/12.txt /tmp/expect {"yes...

lyy549745
32分钟前
0
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
40分钟前
0
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
44分钟前
1
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
0
0
nginx负载均衡

一、nginx 负载均衡 拓扑图: 主机信息: 1、负载均衡器1(lb1):192.168.10.205 RHEL7.5 2、负载均衡器2(lb2):192.168.10.206 RHEL7.5 3、web服务器1(web01):192.168.10.207 Centos...

人在艹木中
昨天
0
0
做了一个小网站

做了一个小网站 www.kanxs123.com

叶落花开
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部