复合类

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. 各类JavaScript插件

    ZeroClipboard复制内容到剪切板(支持IE.FF.Chrome) ZeroClipboard.js ZeroClipboard.swf hotkeys键盘监听 jquery.hotkeys. ...

  2. MVC Razor 语法(转)

    http://blog.csdn.net/pasic/article/details/7072340 原文地址:MVC Razor 语法(转)作者:panzhaowen_jacki 语法名称 Razo ...

  3. windows串口通信的一个活动图

    1,打开串口的活动图: 2,关闭串口的活动图:

  4. hdu5773--The All-purpose Zero(LIS变形)

    题意:给一个非负整数的数列,其中0可以变成任意整数,包括负数,求最长上升子序列的长度. 题解:LIS是最简单的DP了,但是变形之后T^T真的没想到.数据范围是10^5,只能O(nlogn)的做法,所以 ...

  5. 【C语言】-循环结构-for语句

    for语句: for (表达式1;表达式2;表达式3) { 循环语句 } 表达式1 给循环变量赋初值 表达式2 为循环条件 表达式3 用来修改循环变量的值,称为循环步长. for语句的执行流程: 例: ...

  6. spring利用javamail,quartz定时发送邮件 <转>

    原文地址:spring利用javamail,quartz定时发送邮件 <转>作者:物是人非 spring提供的定时发送邮件功能,下面是一个简单的例子以供大家参考,首先从spring配置文件 ...

  7. hdu 1392凸包周长

    //用的自己的计算几何模板,不过比较慢嘿嘿 //要注意只有一个点和两个点 //Computational Geometry //by kevin_samuel(fenice) Soochow Univ ...

  8. 08重编终极版《东邪西毒:终极版》DVD粤语中字

    1.东邪西毒].Ashes.of.Time.1994.384p.DVDRip.x264.ac3-DTMM.mkv 这个版本最清晰 ,可惜删减了,只有87分钟,粤语,1.4G. 2.东邪西毒(初始版). ...

  9. js 如何将无限级分类展示出来

    这个需要运用递归. 案例:将数据以 ul li ul li形式展现在div中. <div id="div"></div> 数据格式为json: var da ...

  10. SQL Sever——无法连接到(local)。“未配置远程连接”和“请求失败或服务未及时响应”

       攻克了上篇博客提到的"远程过程调用失败(0x800706be)"的问题. 新的问题接踵而至. . . 一.       watermark/2/text/aHR0cDovL2 ...