复合类

5.复合类
现实中,复杂的对象都是由较小和较为简单的对象构成;
由简单对象创建复杂对象的过程称作合成。
合成通常使用在有has-a关系的对象;
通常的基本数据类型可以满足构造简单和小的对象。
为了从小的对象创建复杂的对象,C++提供了复合类-将小的类作为复合类的成员变量
复合类的好处:
A)每个单独的类可以保持相对简单和直观,负责其自己的任务;
B)每个对象可以自包含,更易重用;
C)复合类使用简单的类完成复杂的工作,只需注重子类之间的数据流程。

 XYPoint类

XYPoint.h文件

#import <Foundation/Foundation.h>
 
@interface XYPoint : NSObject{
    int x;
    int y;
}
 
@property (nonatomic)int x,y;
-(void)setX:(int)_x andY:(int)_y;
 
 
@end
 XYPoint.m文件

#import "XYPoint.h"
 
@implementation XYPoint
@synthesize x,y;
-(void)setX:(int)_x andY:(int)_y{
    x=_x;
    y=_y;
}
 
@end
 
 Circle  类
Circle.h文件
#import <Foundation/Foundation.h>
@class XYPoint;
@interface Circle : NSObject{
    int radius;
    XYPoint* origin;
}
@property int radius;
-(XYPoint* )origin;
-(void)setOrigin:(XYPoint*)pt;
-(double)area;
-(double) perimeter;
-(void)print;
 
@end

Circle.m文件

#import "Circle.h"
 
@implementation Circle
@synthesize radius;
 
-(void)setOrigin:(XYPoint *)pt{
    origin=pt;
}
 
-(double)area{
    return (radius*radius);
}
 
-(double)perimeter{
    return 2*3.14*radius;
}
 
-(XYPoint*) origin{
    return origin;
}
 
-(void)print{
    
    NSLog(@"Area =%f, Perimeter = %f",[self area],[self perimeter]);
}
 
 
@end
main函数

main.h文件

#import <Foundation/Foundation.h>
#import  "XYPoint.h"
#import "Circle.h"
int main (int argc, const char * argv[])
{
 
    @autoreleasepool {
        
        
        
        NSLog(@"Hello, World!");
        XYPoint* point=[[XYPoint alloc] init];
        [point setX:2 andY:2];
        Circle* c=[[Circle alloc] init];
        c.radius=100;        
 
        [c setOrigin:point];
        c.origin=point;
        NSLog(@"origin at %d ,%d",c.origin.x,c.origin.y);
        NSLog(@"radius = %d",c.radius);
        NSLog(@"Area =%f, Perimeter = %f",[c area],[c perimeter]);
        [c print];
        [c release];
        [point release];
        
    }
    return 0;
}
 

Objective-C,复合类,Composition的更多相关文章

  1. OC7_复合类内存管理(setter方法)

    // // Person.h // OC7_复合类内存管理(setter方法) // // Created by zhangxueming on 15/6/18. // Copyright (c) 2 ...

  2. OC6_复合类的类存管理

    // // Person.h // OC6_复合类的类存管理 // // Created by zhangxueming on 15/6/18. // Copyright (c) 2015年 zhan ...

  3. OC5_复合类的内存管理

    // // Person.h // OC5_复合类的内存管理 // // Created by zhangxueming on 15/6/18. // Copyright (c) 2015年 zhan ...

  4. Objective - C - 添加类目 - NSDate

    1.类目为系统内部的类或者是没有源代码的类添加方法,不有添加实例变量 2.添加的方法会成为原类的一部分,子类照样可以使用 3.类目的文件名为原类名+文件名 4.既可以添加实例方法,也可以添加类方法 X ...

  5. 【《Objective-C基础教程 》笔记ch05】(六)OC中的复合机制Composition

     1.复合通过包括作为实例变量的的对象指针实现的.        @interface Unicycle : NSObject        {           Pedal*pedal;     ...

  6. CXF-02: 使用CXF处理JavaBean式的复合类型和List集合类型

    Cat.java: package com.war3.ws.domain; public class Cat { private Integer id; private String name; pr ...

  7. Selenium在定位的class含有空格的复合类的解决办法整理

    1.class属性唯一但是有空格,选择空格两边唯一的哪一个 <div id="tempConfigTable" class="dtb-style-1 table-d ...

  8. OC 类簇与复合

    OC 类簇与复合 类簇: 类簇是Foundation框架中广泛使用的设计模式.类簇将一些私有的.具体的子类组合在一个公共的.抽象的超类下面,以这种方法来组织类可以简化一个面向对象框架的公开架构,而又不 ...

  9. 关联,聚合和组合(复合)--Association, Aggregation and Composition

    概要 Association, Aggregation and Composition are terms that represent relationships among objects. Th ...

随机推荐

  1. 【打包成exe安装包文件发布你的程序】使用QT联系人管理系统的例子

    [前言]在 QT数据库使用案列[联系人]-- 使用sqlite和QStringListModel 中,我们写了这个程序,如何将它打包成安装文件发给其他小伙伴呢? 我们使用 nsis-2.46-setu ...

  2. js前端验证时间大小

    replace(/\-/g, "\/")是根据验证表达式把日期转化成长日期格式 function checkStartTimeAndEndTime(startTime, endTi ...

  3. 0R电阻作用

    0欧电阻的作用(网上收集整理的) 0欧的电阻大概有以下几个功能:  ①做为跳线使用.这样既美观,安装也方便.  ②在数字和模拟等混合电路中,往往要求两个地分开,并且单点连接.我们可以用一个0欧的电阻来 ...

  4. 深入理解Linux的系统调用【转】

    一. 什么是系统调用 在Linux的世界里,我们经常会遇到系统调用这一术语,所谓系统调用,就是内核提供的.功能十分强大的一系列的函数.这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一 ...

  5. 【poj2891】Strange Way to Express Integers

    题意: 给出n个模方程x=a(mod r) 求x的最小解 题解: 这就是个线性模方程组的模版题- - 但是有一些要注意的地方 extgcd算出来的解x可能负数  要让x=(x%mo+mo)%mo 而且 ...

  6. HDU-4691 Front compression 后缀数组

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4691 后缀数组模板题,求出Height数组后,对Height做RMQ,然后直接统计就可以了... // ...

  7. 使用Dropbox提高个人数据管理效率

    Dropbox 应该大家都不陌生,其在云存储阵营中独树一帜,通俗的说它是提供多终端和云之间的数据同步服务,而就其本质来说它无非是将数据的采集.存储和分发三个关节打通,整合成统一服务对外提供.这就好比只 ...

  8. Resharp非常实用的快捷键

    Alt+Home  定位到父类.父接口 Alt + End 定位到子类 Ctrl+T     快速在整个解决方案下搜索 类型.方法.文件夹 Alt+Ctrl+Spance  给出提示框 Shift+F ...

  9. 5-17 Hashing (25分)

    The task of this problem is simple: insert a sequence of distinct positive integers into a hash tabl ...

  10. [一位菜鸟的COCOS-2D编程之路]精灵表单的制作以及简易动画的生成

    1.第一步:使用Zwoptex 制作精灵表单 2.制作的表单的名称为 cocos2Dpng,cocos2D.plist: 3.精灵的动画效果 主要分为五部分. // on "init&quo ...