oc-13-多文件-阿里云开发者社区

开发者社区> 范大脚脚> 正文

oc-13-多文件

简介:
+关注继续查看
复制代码
Dog.h
#import <Foundation/Foundation.h>

@interface Dog : NSObject
{
@public
    NSString *_name;
    int _color;
    int _speed;
    int _sex;
    float _weight;
    
}

- (void)eat;
- (void)bark;
- (void)run;
- (BOOL)cmpColor:(Dog *)otherDog;
- (int)cmpSpeed:(Dog *)otherDog;
@end
复制代码
复制代码
Dog.m
#import "Dog.h"

@implementation Dog
- (void)eat{
    _weight +=0.5;
    NSLog(@" %@ 在吃 shi  吃完之后 体重为 %.2f",_name,_weight);
    
}

- (void)bark{
    NSLog(@" 汪  name = %@  ,颜色= %d ,速度 =%d , 体重 %.2f  性别 %d" ,_name,_color,_speed,_weight,_sex);
}

- (void)run{
    _weight -=0.5;
    NSLog(@" ssss ss  %@ ",_name);
    NSLog(@"speed = %d , 体重= %.2f",_speed,_weight);
}

- (BOOL)cmpColor:(Dog *)otherDog{
    if (_color == otherDog->_color) {
        return YES ;
    }else{
        return NO;
    }
}

- (int)cmpSpeed:(Dog *)otherDog{
    
    return _speed - otherDog->_speed;
}
@end
复制代码
复制代码
Person.h
#import <Foundation/Foundation.h>

#import "Dog.h"

@interface Person : NSObject
{
@public
    NSString *_name;//名字属性
    Dog * _dog;// 狗属性
}

- (void)feedDogWith:(NSString *)foodName;
- (void)walkDog;
@end
复制代码
复制代码
Person.m
#import "Person.h"

@implementation Person

- (void)feedDogWith:(NSString *)foodName{
    NSLog(@" %@ 在喂狗吃 %@ ",_name,foodName);
    [_dog eat];
}
//遛狗:每溜一次,狗就会执行“跑”这个行为
- (void)walkDog{
    NSLog(@" %@ 在遛狗 ",_name);
     NSLog(@" _dog ===%p ",_dog);
    [_dog run];
    
}
@end
复制代码
复制代码
main.m
#import <Foundation/Foundation.h>
//#import "Dog.h"
#import "Person.h"
/*
  多文件步骤 
   1. 把声明 放在 .h文件里面    把实现放在.m文件里面   文件名是类名
   2. 目的 提高程序的可读性.
 */

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        Person *zhangsan = [Person new];
        zhangsan->_name = @"张三";
      
        Dog *wangcai = [Dog new];
        wangcai->_name = @"旺财";
        wangcai->_sex = 1;
        wangcai->_speed = 90;
        wangcai->_weight = 500;
        wangcai->_color = 5 ;
        
        NSLog(@"wangcaiiiiiii ---> %p",wangcai);
        [wangcai bark];
        zhangsan->_dog =wangcai;
        [zhangsan walkDog];
        
    }
    return 0;
}

 栈区是变量名是对象地址,堆区是对象内存,调用方法的时候是根据方法的地址找的方法。
复制代码
复制代码
/**
 对象和对象之间的关系
 1.组合关系
 1台计算机对象由:硬盘对象,内存对象,CPU对象,主板对象,显示器对象等等.
 汽车和轮胎 -- 组合关系 
 体现:整体---局部
 
 2.依赖关系
 女孩用手机打电话,是女孩依赖手机.
 1个对象作为另外1个对象的方法的参数.
 
 3.关联关系
 1个对象作为另外1个对象的成员变量,他们之间不是组合关系.也就是不是整体和部分的关系.
 
 总结:组合关系和关联关系,用法是一样:1个对象作为另外1个对象的成员变量.
     组合:整体---局部
     关联:不存在必然的关系.
     依赖:1个对象作为另外1个对象的方法参数.
 */
复制代码

 



本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5308246.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10089 0
Linux下C编程入门(.h文件,.c文件,以及多文件调用的方式)
1、首先,以Ubuntu 64-bit操作系统下为例 图中的sudo su表示的是快速进入到root管理员下。这里的密码默认的是安装后的Ubunto操作系统中自定义的用户名的密码,此处以用户toto,密码:123456为例 2、在/demo目录下创建以下三个文件(看截图): 注意:其中add.c的内容如下(通过vi编辑器编辑add.c): 其中的add.h(用于声明同级
1118 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13893 0
基于HTTP的多文件上传问题
企业应用中会经常用到基于Http的文件上传,其中Multipart是多文件上传所使用的,在用JAVA开发时有时会用第三方类库来拼HTTP报文,有时则手动组装, 然后手动组装前先要了解一下报文的格式,如下是HTTP的报文头: POST /test/upload HTTP/1.
844 0
SpringBoot文件上传下载和多文件上传(图文详解)
最近在学习SpringBoot,以下是最近学习整理的实现文件上传下载的java代码: 1,开发环境: IDEA15 + Maven + JDK1.8 2,新建一个maven工程: 这里写图片描述 3,工程框架 这里写图片描述 4,pom.xml文件依赖项
9872 0
【C语言】学习笔记11——简单链表及多文件程序编译(windows下)
1. 在Windows下需要在一个工程project下才能进行多文件编译。用的IDE是Dev c++ 5.11   简单介绍:   .h 文件:主要是结构定义,函数签名, 每个 .h 文件必须有一个同名 .
838 0
C++第13周项目5——银行系统多文件组织+包含文件(v0.32)
课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 说明:此项目是为未学习数组的同学拟出的,目的是让他们对“工程”有所体验。一些实现并不是最佳的,请参考后续的题目 【项目5-银行系统】 (4)将程序用多文件组织  涉及密码、帐户的函数放在一个文件中,完成各项功能的函数放在另一个文件中,main函放也单独一个文件。这
1060 0
+关注
3656
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载