ios学习之旅--oc对象的关系

1.匿名对象:就是没有名字对象
    1、匿名对象仅用一次
    使用场景:
    1、当我们只要调用一个对象的某个方法一次的时候可以使用匿名对象

    2、匿名对象可以作为函数的实际参数

#import <Foundation/Foundation.h>
#import "CZPerson.h"
#import "CZBook.h"

@interface CZBook : NSObject

@end

@implementation CZBook

@end

@interface CZPerson : NSObject
{
    int _age;//年龄
    NSString *_name;//名字
}
//写方法 setter
- (void) setAge:(int) age;
//读方法 getter
- (int) age;

- (void) setName:(NSString *) name;
- (NSString *) name;
- (void) readBook:(CZBook *) book;

@end

@implementation CZPerson

//写方法 setter
- (void) setAge:(int) age
{
    _age = age;
}
//读方法 getter
- (int) age
{
    return _age;
}
- (void) setName:(NSString *) name
{
    _name = name;
}
- (NSString *) name
{
    return _name;
}
- (void) readBook:(CZBook *) book
{
    
}
@end
int main(int argc, const char * argv[]) {

    [[CZPerson new] setAge:10];
    /*
      1、首先创建一个匿名人对象
      2、调用刚创建出来的人对象的 readBook方法
      3、传入一个匿名的CZBook对象
       [CZPerson new] 创建一个匿名的人对象
       [CZBook new] 创建一个匿名的Book对象
     */   
    [[CZPerson new] readBook:[CZBook new]];    
    NSLog(@"%d",[[CZPerson new] age]);    
    
    return 0;
}
2.依赖关系:
   A对象作为B对象的局部变量或是方法形参的,B依赖与A,这时候我们称A与B之间存在一种依赖关系
  面向对象设计中:
  耦合度:当修改一个对象的时候,对另外一个对象的影响程度
  低耦合: 当修改一个对象的对其他对象影响比较小
  高内聚:一个对象仅仅做自己相关的事情
  面向对象设计原则:单一职责原则

#import <Foundation/Foundation.h>
@interface CZBeauty : NSObject
{
    NSString * _name;//姓名
}
- (void) setName:(NSString *) name;
- (NSString *) name;
/**
 *  给土豪打电话
 */
- (void) callTuHaoWithPhone:(CZPhone *) phone;
- (void) sendMessageToDiaoSi;

@end

@implementation CZBeauty

- (void) setName:(NSString *) name
{
    _name = name;
}

- (NSString *) name
{
    return _name;
}
/**
 *  给土豪打电话、
    对象作为形式参数
 */
- (void) callTuHaoWithPhone:(CZPhone *) phone
{
    NSLog(@"给土豪打电话了");
    [phone call:@"土豪的电话号码"];
}
- (void) sendMessageToDiaoSi
{
    NSLog(@"给屌丝发送短信了");
//  对象作为另外一个类的局部变量
    CZPhone *phone = [CZPhone new];   
    [phone sendMessage:@"呵呵,要请我看电影吗?"];
}

@end

@interface CZPhone : NSObject
/**
 *  发短信
 *
 *  @param message 信息内容
 */
- (void) sendMessage:(NSString *) message;
/**
 *  打电话
 */
- (void) call:(NSString *) phoneNum;

@end

@implementation CZPhone

/**
 *  发短信
 *
 *  @param message 信息内容
 */
- (void) sendMessage:(NSString *) message
{
    NSLog(@"发送一条 %@ 短信",message);
}
/**
 *  打电话
 */
- (void) call:(NSString *) phoneNum
{
    NSLog(@"给电话号码为 %@ 的人打电话",phoneNum);
}

@end

int main(int argc, const char * argv[]) {
//  创建一个美女
    CZBeauty *beauty = [CZBeauty new];
//  创建一个电话
    CZPhone *phone = [CZPhone new];
    
    [beauty setName:@"fbb"];
 
    [beauty callTuHaoWithPhone:phone];
    
    [beauty sendMessageToDiaoSi];
    
    return 0;
}

3.关联关系(多文件)
           HasA关系:当一个对象拥有另外一个对象的时候,
          当A对象为B对象的成员变量的时候,
          A对象与B对象之间存在一种关联关系
 
 
 关联关系是面向对象中最常用一种关系
 ---------------------------------------------------以下了解
 关联关系的耦合度要高于依赖关系
 
 一对一 :单方依赖,双边依赖
 一对多关系 :  班级与学生,一个班级可以有多个学生
 多对多关系 : 学生与课程,一个学生可以学习多门课程,一个门课程被多个学生学习


#import <Foundation/Foundation.h>
#import "CZBeauty.h"
#import "CZNewBeauty.h"

int main(int argc, const char * argv[]) {  
    CZBeauty *beauty =  [CZBeauty new];
    CZIPad *ipad = [CZIPad new];    
    CZNewBeauty *newBeauty = [CZNewBeauty new];
    [newBeauty setIPad:ipad];    
    [newBeauty lookAtMovie];
    [newBeauty listenToMusic];
    [newBeauty playGame];
    [newBeauty takeSelfPhoto];
    
    return 0;
}

#import <Foundation/Foundation.h>
#import "CZIPad.h"
/*
   当我们在一类中总是使用某个对象,作为形式参数,那么我们就把这个参数提取成员变量 
 */
@interface CZBeauty : NSObject
//使用iPad看电影
- (void) lookAtMovieWithIPad:(CZIPad *) ipad;
//使用IPad听音乐
- (void) listenToMusicWithIPad:(CZIPad *) ipad;
/**
 * 美女玩游戏
 */
- (void) playGameWithIPad:(CZIPad *) ipad;
/**
 *  美女自拍
 */
- (void) takeSelfPhotoWithIPad:(CZIPad *) ipad;
@end

#import "CZBeauty.h"
@implementation CZBeauty
//使用iPad看电影
- (void) lookAtMovieWithIPad:(CZIPad *) ipad
{
     NSLog(@"美女要看电影了!");
     [ipad playMovie];
}
//使用IPad听音乐
- (void) listenToMusicWithIPad:(CZIPad *) ipad
{
    NSLog(@"美女要听音乐了!");
    [ipad playMusic];
}
/**
 * 美女玩游戏
 */
- (void) playGameWithIPad:(CZIPad *) ipad
{
    NSLog(@"美女要玩游戏了!");
    [ipad playGame];
}
/**
 *  美女自拍
 */
- (void) takeSelfPhotoWithIPad:(CZIPad *) ipad
{
    NSLog(@"美女要自拍了!");
    [ipad takePhoto];
}

@end

#import <Foundation/Foundation.h>
@interface CZIPad : NSObject
//播放电影
- (void) playMovie;
//播放音乐
- (void) playMusic;
//玩游戏
- (void) playGame;
//拍照
- (void) takePhoto;

@end

#import "CZIPad.h"
@implementation CZIPad
//播放电影
- (void) playMovie
{
    NSLog(@"iPad播放电影");
}
//播放音乐
- (void) playMusic
{
    NSLog(@"iPad播放音乐");
}
//玩游戏
- (void) playGame
{
    NSLog(@"iPad玩游戏");
}
//拍照
- (void) takePhoto
{
    NSLog(@"iPad自拍");
}

@end

#import <Foundation/Foundation.h>
#import "CZIPad.h"
@interface CZNewBeauty : NSObject
{
//  让美女拥有一个IPad
    CZIPad * _iPad;
}
//写方法,买一个IPad
- (void) setIPad:(CZIPad *) iPad;
//看电影
- (void) lookAtMovie;
//听音乐
- (void) listenToMusic;
/**
 * 美女玩游戏
 */
- (void) playGame;
/**
 *  美女自拍
 */
- (void) takeSelfPhoto;

@end

#import "CZNewBeauty.h"
@implementation CZNewBeauty
//写方法,买一个IPad
- (void) setIPad:(CZIPad *) iPad
{
    _iPad = iPad;
}
//看电影
- (void) lookAtMovie
{
    NSLog(@"美女看电影");
    [_iPad playMovie];
}
//听音乐
- (void) listenToMusic
{
    NSLog(@"美女听音乐");
    [_iPad playMusic];
}
/**
 * 美女玩游戏
 */
- (void) playGame
{
    NSLog(@"美女玩游戏");
    [_iPad playGame];
}
/**
 *  美女自拍
 */
- (void) takeSelfPhoto
{
    NSLog(@"美女自拍");
    [_iPad takePhoto];
}

@end

学习心得:

通过各自对应的例子,熟练掌握面向对象,为以后的学习打好基础

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值