• 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个对象的方法参数.
     */
  • 相关阅读:
    CentOS6下OpenLDAP+PhpLdapAdmin基本安装及主从/主主高可用模式部署记录
    Curl运维命令
    kafka 基础知识梳理及集群环境部署记录
    RocketMQ 简单梳理 及 集群部署笔记
    Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)
    Redis+Keepalived高可用环境部署记录
    Centos下Nodejs+npm环境-部署记录
    基于Ping和Telnet/NC的监控脚本案例分析
    linux dig 命令使用方法
    dnsjava usage
  • 原文地址:https://www.cnblogs.com/yaowen/p/5308246.html
Copyright © 2020-2023  润新知