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& ...
随机推荐
- [转]SpringMVC Controller&View数据传递
Spring MVC3在controller和视图之间传递参数的方法: 一, 从controller往视图传递值, controller---->视图 1)简单类型,如int, Stri ...
- Knockout 新版应用开发教程之"visible"绑定
"visible" 绑定 用途 DOM元素的显示或者隐藏是根据绑定的值来的,前提是将visible绑定给该元素 例子 <div data-bind="visible ...
- epoll源码实现分析[整理]
epoll用法回顾 先简单回顾下如何使用C库封装的3个epoll相关的系统调用.更详细的用法参见http://www.cnblogs.com/apprentice89/archive/2013/05/ ...
- ubuntu14.04使用IceGridAdmin图形界面
打开网页: http://www.rpmfind.net/linux/RPM/index.html输入搜索: icegrid-gui下载文件: icegrid-gui-3.5.1-2.mga4.x86 ...
- 通过组策略实现IE自动以当前域账号登录某站点
SharePoint基于windows验证的如何通过组策略实现IE自动以当前域账号登录某站点 1. 在运行中运行MMC,启动“组策略对象编辑器”. 如下图: 2.找到组策略,如下图: 3.找到对应的域 ...
- vs2015 Android SDK
It was not possible to complete an automatic installation. This might be due to a problem with your ...
- 【分享】深入浅出WPF全系列教程及源代码
来源:http://blog.csdn.net/yishuaijun/article/details/21345893 本来想一篇一篇复制的.但是考虑到别人已经做过了,就没有必要了吧,就给大家一个目录 ...
- [爬虫学习笔记]用于提取网页中所有链接的 Extractor 模块
Extractor的工作是从下载的网页中将它包含的所有URL提取出来.这是个细致的工作,你需要考虑到所有可能的url的样式,比如网页中常常会包含相对路径的url,提取的时候需要将它转换 ...
- 在SQL存储过程中给条件变量加上单引号
在SQL存储过程中给条件变量加上单引号,不加语句就会出问题,以下就是在存储过程中将条件where设置成了动态变化的,给where赋完值再和前面的语句拼接,再execute(SQL) ), )), )+ ...
- 重温html5的新增的标签和废除的标签
HTML5已经盛行有段时间了,对于标签的使用,按照规范,哪些该用,哪些不该用,你是否都掌握了呢.今天我在这里详细列举下: 新增的结构标签 section元素 表示页面中的一个内容区 块,比如章节.页眉 ...