OC 复合 组装电脑
键盘类
#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 复合 组装电脑的更多相关文章
- intel和AMD CPU性能对比(2016年CPU天梯图)组装电脑必读!
http://www.365pcbuy.com/article-411.html 特别提示:此文已经于2016年10月12日更新!内容变动较大,请细细品鉴! 如何为客户推荐高性价比机型是我站的重要工作 ...
- 建造者模式(Builder)——从组装电脑开始
建造者模式(Builder)--从组装电脑开始 建造者模式概括起来就是将不同独立的组件按照一定的条件组合起来构成一个相对业务完整的对象.调用者无需知道构造的过程. 我们从组装电脑开始 让我们从买组装电 ...
- LA3971组装电脑
题意: 你有b块钱,想要组装一台电脑,给你提供一些零件,每种零件提供一个或几个,组装电脑的前提是每种零件只能也必须选择一个,每种零件都有自己的种类,名字,价格,还有品质,要求是在能配成电脑 ...
- LA 3971 组装电脑(二分)
https://vjudge.net/problem/UVALive-3971 题意:你有b块钱,想要组装一台电脑.给出n个配件各自的种类.品质因子和价格,要求每种类型的配件各买一个,总价格不超过b, ...
- 【二分答案】 【POJ3497】 【Northwestern Europe 2007】 Assemble 组装电脑
Assemble Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3171 Accepted: 1013 Descript ...
- LA3971 组装电脑
思路:二分,就是在不超过b的预算下,使得品质的最小值最大化.关键还是判断函数吧. 假设答案为x,判断函数,就是每一个种类的配件的品质最基本的品质要大于x,然后找出最小的值.这样的配件品质之和的价格要小 ...
- OC 复合
在Objective-C中复合是通过包含作为实例变量的对象指针实现的 严格来说,只有对象间的组合才叫复合 --------------------Car.h---------------------- ...
- UVALive 3971 组装电脑
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- Uva 组装电脑 12124 - Assemble
主要运用二分法查找最优解 #include<iostream> #include<string> #include<vector> #include<map& ...
随机推荐
- 基于CSS3和HTML5图片加工前后对比代码
分享一款CSS3和HTML5图片加工前后对比代码.这是一款通过CSS3和HTML5将图像转换为自动响应的元素:图像缩放和裁剪以适应容器.效果图如下: 在线预览 源码下载 实现的代码. html代码 ...
- C# 读取压缩文件方式及乱码处理
目前主流的压缩文件操作类,除了C#原生的.还有 1. ZIP-DotNetZip 网址:http://dotnetzip.codeplex.com/ 2 7Zip-SevenZipSharp 网址:h ...
- 获取当前 Python 版本
方法一 >>> from platform import python_version >>> print python_version() 2.7.8 方法二 & ...
- Pass云Docker介绍
1.Docker 简介 Docker是一个开源可以将任何应用包装在”LXC容器”中运行的工具.如果说VMware,KVM包装的虚拟机,Docker包装的是应用.是一个实至名归的PaaS. 当应用被打包 ...
- vs2013update4 vs-mda-remote cordova真机测试ios
1.升级vs2013到update4 2.下载安装vs_langpack-enu英语语言包 3.下载安装vs2013mda目前版本0.3.1 如果开发andorid,需要android sdk,ant ...
- 初探KMP算法
数据结构上老师也没讲这个,平常ACM比赛时我也没怎么理解,只是背会了代码--前天在博客园上看见了一篇介绍KMP的,不经意间就勾起了我的回忆,写下来吧,记得更牢. 一.理论准备 ...
- 让服务器apache/iis/nginx支持.apk/ipa文件下载
服务器iis支持.apk文件下载的设置 IIS服务器不能下载.apk文件的原因:iis的默认MIME类型中没有.apk文件,所以无法下载. IIS服务器不能下载.apk文件的解决办法:既然.apk无法 ...
- HT图形组件设计之道(二)
上一篇我们自定义CPU和内存的展示界面效果,这篇我们将继续采用HT完成一个新任务:实现一个能进行展开和合并切换动作的刀闸控件.对于电力SCADA和工业控制等领域的人机交互界面常需要预定义一堆的行业标准 ...
- GPUImage滤镜之锐化
应用锐化工具可以快速聚焦模糊边缘,提高图像中某一部位的清晰度或者焦距程度,使图像特定区域的色彩更加鲜明. 在应用锐化工具时,若勾选器选项栏中的“对所有图层取样”复选框,则可对所有可见图层中的图像进行锐 ...
- sprint演示Scrum 项目7.0
1.坚持所有的sprint都结束于演示. 团队的成果得到认可,会感觉很好. 其他人可以了解你的团队在做些什么,并得到重要反馈. 演示是一种社会活动,不同的团队可以在这里相互交流,讨论各自的工作.这很有 ...