黑马程序员-OC语言-多态、代理

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

  • 开场白:多态是C语言的概念,代理是OC的概念,多态作为面向对象三大特性之一,重要性可见一斑,代理也更不可小视。

  • 为什么要把它们放到一起来说?因为我对它们在概念性和功能性上有点混淆。今天就把要它们说清楚了,解决这场纠纷!


多态:不同的对象以不同的方式响应相同名称方法的能力称为多态 (也就是一个方法有多种状态,多种状态体现在子类对父类方法重写中)


话说:有一个消防员(Fireman)类、一个医生(Doctor)类,都继承自人类(Person)

消防员类:save方法(灭火)
医生类:save方法(输液)
人类:在这代表上帝

@interface Person:NSObject
@end
@implementation Person
@end
@interface Fireman:Perosn
@end
@implementation Fireman
-(void) save;
@end
@interface Doctor:Person
@end
@implementation Doctor
-(void) save;
@end
Person *p1=[Doctor new];//Doctor是Person的子类
person *p2=[Fireman new];//Fireman是Person的子类
[(Doctor *)p1 save];
[(Fireman *)p2 save];
  • 编译时,编译器会检查指针p1、p2的类型(Person)有没有这个方法,如果有,不报错;如果没有,报错。(强制类型转换会避过这一步)
  • 运行时,会检查p1\p2指针的真正类型(Doctor、Fireman)有没有这个方法,如果有,不报错;如果没有,报错。
  • 所有的强制类型转换都是临时的。

多态存在的意义:

  1. 简化了编程接口。类和类之间可以重用一些习惯性的命名。这样,编程接口就是一些抽象的行为的集合
  2. 代码扩展性和复用性更好。
  3. 方法多样性
  4. 高聚合性和低耦合性

代理:让别人代替你去做事,代替你完成任务的对象,就是你的代理。

协议:

@protocol LaunchProtocol <NSObject>
-(void) shoot;
@end

人类:


@interface Person : NSObject
@property(nonatomic,strong) id<LaunchProtocol> delegate;
-(void) launch;
@end

@implementation Person
{
    NSLog(@"扣动扳机~~~");
    if (self.delegate!=nil) 
    {
        [self.delegate shoot];
    }
}
@end

枪类:(遵守LaunchProtocol协议)

@interface cf : NSObject<LaunchProtocol>
@end

@implementation Gun
-(void) shoot
{
    NSLog(@"biu  biu   11biu");
}
@end

main函数

Person *p=[Person new];
Gun *gun=[Gun new];
p.delegate=gun;
[p launch];//person类只有扣动扳机的方法,没有发射的方法,发射的方法就找到了枪去做。

代理存在的意义:

1.拓展了功能和方法
2.高聚合性和低耦合性


自己的一些思考:代理没有继承关系,通常A知道什么是什么时候做事,但不知道怎么做,而B知道怎么做却不知道什么时候做,让AB合作,在正确的时间做正确的事。
多态是多个子类相应一个方法,主要作用是:简化编程接口,提高代码扩展性。
都实现高聚合低耦合。

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

通过短时倒谱(Cepstrogram)计算进行时-倒频分析研究(Matlab代码实现)内容概要:本文主要介绍了一项关于短时倒谱(Cepstrogram)计算在时-倒频分析中的研究,并提供了相应的Matlab代码实现。通过短时倒谱分析方法,能够有效提取信号在时间与倒频率域的特征,适用于语音、机械振动、生物医学等领域的信号处理与故障诊断。文中阐述了倒谱分析的基本原理、短时倒谱的计算流程及其在实际工程中的应用价值,展示了如何利用Matlab进行时-倒频图的可视化与分析,帮助研究人员深入理解非平稳信号的周期性成分与谐波结构。; 适合人群:具备一定信号处理基础,熟悉Matlab编程,从事电子信息、机械工程、生物医学或通信等相关领域科研工作的研究生、工程师及科研人员。; 使用场景及目标:①掌握倒谱分析与短时倒谱的基本理论及其与傅里叶变换的关系;②学习如何用Matlab实现Cepstrogram并应用于实际信号的周期性特征提取与故障诊断;③为语音识别、机械设备状态监测、振动信号分析等研究提供技术支持与方法参考; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,先理解倒谱的基本概念再逐步实现短时倒谱分析,注意参数设置如窗长、重叠率等对结果的影响,同时可将该方法与其他时频分析方法(如STFT、小波变换)进行对比,以提升对信号特征的理解能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值