键盘类

#import <Foundation/Foundation.h>

@interface Keyboard : NSObject

@property(strong,nonatomic)NSString *brand;

@end

#import "Keyboard.h"

@implementation Keyboard

- (NSString *)description

{

return [NSString stringWithFormat:@"%@", _brand];

}

@end


鼠标类

#import <Foundation/Foundation.h>

@interface Mouse : NSObject

@property(strong,nonatomic)NSString *brand;

@end

#import "Mouse.h"

@implementation Mouse

- (NSString *)description

{

return [NSString stringWithFormat:@"%@", _brand];

}

@end


显示屏类

#import <Foundation/Foundation.h>

@interface Displayer : NSObject

@property(strong,nonatomic)NSString *brand;

@end

#import <Foundation/Foundation.h>

@interface Displayer : NSObject

@property(strong,nonatomic)NSString *brand;

@end


机箱类

#import <Foundation/Foundation.h>

@interface Engine : NSObject

@property(strong,nonatomic)NSString *brand;

@end

#import "Engine.h"

@implementation Engine

- (NSString *)description

{

return [NSString stringWithFormat:@"%@", _brand];

}

@end


电脑类

#import <Foundation/Foundation.h>

#import "Keyboard.h"

#import "Mouse.h"

#import "Displayer.h"

#import "Engine.h"

@interface Computer : NSObject

@property(strong,nonatomic)Mouse *mouse;

@property(strong,nonatomic)Keyboard *keyboard;

@property(strong,nonatomic)Displayer *displayer;

@property(strong,nonatomic)Engine *engline;

-(void)run;

@end

#import "Computer.h"

#import "Keyboard.h"

#import "Mouse.h"

#import "Displayer.h"

#import "Engine.h"

@implementation Computer

- (instancetype)init

{

self = [super init];

if (self) {

Mouse *mouse= [[Mouse alloc] init];

mouse.brand=@"BENQ";

self.mouse=mouse;

Keyboard *keyboard=[Keyboard new];

keyboard.brand=@"BENQ";

self.keyboard=keyboard;

Displayer *displayer=[Displayer new];

displayer.brand=@"SUMSUN";

self.displayer=displayer;

Engine *engline=[Engine new];

engline.brand=@"Mac mini";

self.engline=engline;

}

return self;

}

-(void)run

{

NSLog(@"%@",[_mouse description]);

NSLog(@"%@",[_keyboard description]);

NSLog(@"%@",[_displayer description]);

NSLog(@"%@",[_engline description]);

}

@end


main 函数

#import <Foundation/Foundation.h>

#import "Computer.h"

int main(int argc, const char * argv[]) {

@autoreleasepool {

Computer *computer=[[Computer alloc] init];

//        Keyboard *keyboard=[[Keyboard alloc] init];

//        Mouse *mouse=[[Mouse alloc] init];

//        Engine *engline=[[Engine alloc] init];

//        Displayer *displary=[[Displayer alloc] init];

//

//        computer.mouse=mouse;

//        computer.keyboard=keyboard;

//        computer.engline=engline;

//        computer.displayer=displary;

//        mouse.brand=@"BENQ";

//        keyboard.brand=@"BENQ";

//        displary.brand=@"SUMSUN";

//        engline.brand=@"Mac mini";

[computer run];

}

return 0;

}


运行结果

OC 复合 组装电脑的更多相关文章

  1. intel和AMD CPU性能对比(2016年CPU天梯图)组装电脑必读!

    http://www.365pcbuy.com/article-411.html 特别提示:此文已经于2016年10月12日更新!内容变动较大,请细细品鉴! 如何为客户推荐高性价比机型是我站的重要工作 ...

  2. 建造者模式(Builder)——从组装电脑开始

    建造者模式(Builder)--从组装电脑开始 建造者模式概括起来就是将不同独立的组件按照一定的条件组合起来构成一个相对业务完整的对象.调用者无需知道构造的过程. 我们从组装电脑开始 让我们从买组装电 ...

  3. LA3971组装电脑

    题意:       你有b块钱,想要组装一台电脑,给你提供一些零件,每种零件提供一个或几个,组装电脑的前提是每种零件只能也必须选择一个,每种零件都有自己的种类,名字,价格,还有品质,要求是在能配成电脑 ...

  4. LA 3971 组装电脑(二分)

    https://vjudge.net/problem/UVALive-3971 题意:你有b块钱,想要组装一台电脑.给出n个配件各自的种类.品质因子和价格,要求每种类型的配件各买一个,总价格不超过b, ...

  5. 【二分答案】 【POJ3497】 【Northwestern Europe 2007】 Assemble 组装电脑

    Assemble Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3171   Accepted: 1013 Descript ...

  6. LA3971 组装电脑

    思路:二分,就是在不超过b的预算下,使得品质的最小值最大化.关键还是判断函数吧. 假设答案为x,判断函数,就是每一个种类的配件的品质最基本的品质要大于x,然后找出最小的值.这样的配件品质之和的价格要小 ...

  7. OC 复合

    在Objective-C中复合是通过包含作为实例变量的对象指针实现的 严格来说,只有对象间的组合才叫复合 --------------------Car.h---------------------- ...

  8. UVALive 3971 组装电脑

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  9. Uva 组装电脑 12124 - Assemble

    主要运用二分法查找最优解 #include<iostream> #include<string> #include<vector> #include<map& ...

随机推荐

  1. android 中targetSdkVersion和与target属性的区别

    AndroidMenifest.xml中targetSdkVersion和project.properties中的target属性的区别      在AndroidMenifest.xml中,常常会有 ...

  2. Windows Phone后台音乐播放本地代理实现讨论

    前一篇文章讨论的wp平台音乐播放的一些遇到的问题,经过苦思冥想和多方参考安卓实现:发现我们可以考虑一种本地代理的思想来完成我们的边听边存,并且流畅拖动进度条.希望大家一起讨论.可以下载我的代码一同研究 ...

  3. python函数式编程

    函数式编程是使用一系列函数去解决问题,按照一般编程思维,面对问题时我们的思考方式是“怎么干”,而函数函数式编程的思考方式是我要“干什么”. 至于函数式编程的特点暂不总结,我们直接拿例子来体会什么是函数 ...

  4. Breach - HTML5 时代,基于 JS 编写的浏览器

    Breach 是一款属于 HTML5 时代的开源浏览器项目,,完全用 Javascript 编写的.免费.模块化.易于扩展.这个浏览器中的一切都是模块,Web 应用程序在其自己的进程运行.通过选择合适 ...

  5. 读Java Concurrency in Practice. 第六章.

    这一章开讲任务执行.绝大多数并发程序的工作都可以分解为抽象的.互不相关的工作单元,称之为任务(Task). 使用java线程来执行任务 以web服务器的实现举例, 此时将用户的一次连接,当做一个独立的 ...

  6. P6 EPPM 16 R1 文档和帮助系统

    P6 EPPM 16 R1 文档和帮助系统 https://docs.oracle.com/cd/E74894_01/ http://docs.oracle.com/cd/E68202_01/clie ...

  7. PHP限制HTML内容中图片必须是本站的方法

    本文实例讲述了PHP限制HTML内容中图片必须是本站的方法.分享给大家供大家参考.具体实现方法如下: 1. PHP代码如下: <?php $dom = new DOMDocument; $dom ...

  8. 继续转 [转]php版本的cron定时任务执行器

    由于服务器crontab只能精确到分钟,那程序的起点也是分钟. 一共包括但部分: 一.配置文件: 配置文件是用来返回要执行的定时任务文件,注意一下*的使用就行了,有两个模式,就是 Y-m-d H:i ...

  9. 在一个未知的CentOS服务器中如何加上PHP的openssl扩展

    1. 服务器是定制过的,不知对应的centos版本: 2. PHP是自己编译的,而且服务器上没有保留对应版本的源代码,通过/pathto/php -v 找出php版本号,然后wget去下载对应的php ...

  10. 南昌PHP程序员的工资水平据说可达到8000了

    有兄弟说南昌PHP程序工资水平可以达到8k,带团队可以达到10k 好消息啊!