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 = ;
wangcai->_speed = ;
wangcai->_weight = ;
wangcai->_color = ; NSLog(@"wangcaiiiiiii ---> %p",wangcai);
[wangcai bark];
zhangsan->_dog =wangcai;
[zhangsan walkDog]; }
return ;
} 栈区是变量名是对象地址,堆区是对象内存,调用方法的时候是根据方法的地址找的方法。
/**
对象和对象之间的关系
1.组合关系
1台计算机对象由:硬盘对象,内存对象,CPU对象,主板对象,显示器对象等等.
汽车和轮胎 -- 组合关系
体现:整体---局部 2.依赖关系
女孩用手机打电话,是女孩依赖手机.
1个对象作为另外1个对象的方法的参数. 3.关联关系
1个对象作为另外1个对象的成员变量,他们之间不是组合关系.也就是不是整体和部分的关系. 总结:组合关系和关联关系,用法是一样:1个对象作为另外1个对象的成员变量.
组合:整体---局部
关联:不存在必然的关系.
依赖:1个对象作为另外1个对象的方法参数.
*/

oc-13-多文件的更多相关文章

  1. OC方法和文件编译

    OC方法和文件编译 一.OC方法 (一)对象方法 (1)对象方法以-开头如 -(void)xx; (2)对象方法只能又对象来调用 (3)对象方法中可以访问当前对象的成员变量 (4)调用格式   [对象 ...

  2. swift -- 如何在swift下,使用类似oc的pch文件功能

    以前在做oc下的项目的时候,pch文件是必创建的,因为实在是太方便了,只要在build setting里面把pch的路径换成绝对路径,那么剩下的,想干什么就在里面干什么,但是swift下,可以实现这种 ...

  3. [实战]MVC5+EF6+MySql企业网盘实战(13)——编辑文件夹

    写在前面 上篇文章实现了,新建文件夹以及与之前的上传文件的逻辑做了集成,本篇文章将实现编辑文件夹名称,其实这个也有难点,就是编辑文件夹名称时,要考虑文件夹中存在文件或者子文件夹的情况,因为他们的路径已 ...

  4. django 学习-13 Django文件上传

    1..vim blog/views.py from django  import  formsfrom django.http  import HttpResponse  1   2 from dja ...

  5. OC - 13.数据解析(JSON与XML)

    ##数据交互格式 服务器返回给用户的数据,通常是以下两种方式: JSON XML JSON 一种轻量级的数据数据格式,体积比XML小,是服务器返回给移动端通常采用的格式 用使用JSON文件中的数据,需 ...

  6. OC学习15——文件I/O体系

    OC提供了丰富的I/O相关API,如果只是管理文件和目录,程序可以使用NSFileManager进行管理,包括创建.删除.移动和复制文件等:如果程序需要读取文件内容,则可通过NSFileHandle进 ...

  7. python菜鸟教程学习13:文件操作

    读和写文件 open() 将会返回一个 file 对象 open(filename, mode) 不同模式打开文件的完全列表:https://www.runoob.com/python3/python ...

  8. Java 基础【13】 文件(文件夹) 创建和删除

    使用 java.io.file 创建文件(文件夹),算是 java 最基础的知识,但实战项目中还是需要知晓细节. 比如 File 类中的 mkdir() 和 mkdirs() 的区别. JDK API ...

  9. iOS开发 - OC - PCH文件使用

    一. PCH文件的作用 Xcode中,PCH文件在程序编译的时候会自动包含进去.也就是说PCH中的内容是全局的,可以使用在程序的任何地方,通过这个特性,我们可以概括到PCH的作用有以下几个方面: (1 ...

  10. 【C语言学习】《C Primer Plus》第13章 文件输入/输出

    学习总结 1.文件函数原型1: FILE* fopen(char *filename, char *openmode);  //打开文件,返回文件指针 filename:文件名,更确切地说,是包含文件 ...

随机推荐

  1. 调用openoffice Com组件转换成PDF

    //例子 OpenOfficeExportToPDF('file:///C:/SourceFile.odt', 'file:///C:/TargetFile.pdf');   必须为URL格式的路径 ...

  2. 两个实用的Python的装饰器

    两个实用的Python的装饰器 超时函数 这个函数的作用在于可以给任意可能会hang住的函数添加超时功能,这个功能在编写外部API调用 .网络爬虫.数据库查询的时候特别有用 timeout装饰器的代码 ...

  3. ruby 安装更新

    wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz tar xfvz ruby-2.2.2.tar.gz cd ruby-2. ...

  4. HDU ACM 3177 Crixalis's Equipment

    Crixalis's Equipment Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  5. jq 弹出窗口

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. MEF(Managed Extensibility Framework)依赖注入学习

    MSDN官方资料,并且微软还提供了SimpleCalculator sample学习样例 http://msdn.microsoft.com/en-us/library/dd460648(v=vs.1 ...

  7. POJ1463 Strategic game (最小点覆盖 or 树dp)

    题目链接:http://poj.org/problem?id=1463 给你一棵树形图,问最少多少个点覆盖所有的边. 可以用树形dp做,任选一点,自底向上回溯更新. dp[i][0] 表示不选i点 覆 ...

  8. DataTable添加行和列

    tablenullobjectdatasetc#c 手动插入一行数据 DataSet ds = tTalent.GetAllInfo();         DataRow dr = ds.Tables ...

  9. 7. 泛化(Generalization)

    什么是泛化关系?用一个例子简单的说:假设A是B和C的父类,B.C具有公共类(父类)A,说明A是B.C的一般化(概括,也称泛化),B.C是A的特殊化. 在编程上,泛化关系(Generalization) ...

  10. jquery 选择器中含有空格注意

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...