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& ...
随机推荐
- facebook-开发
https://developers.facebook.com/docs/ios/getting-started?locale=zh_CN#prerequisites
- windows下远程连接ubantu
要实现windows下连接ubantu需要安装以下软件: 1. windows下安装winSCP 2. Ubantu下安装OpenSSH Server 可以使用命令行安装openSSH Server: ...
- fzu 2107 Hua Rong Dao(状态压缩)
Problem 2107 Hua Rong Dao Accept: 106 Submit: 197 Time Limit: 1000 mSec Memory Limit : 32768 K ...
- 15套帮助你展示 App 设计的透视屏幕原型素材
Dribbble 和 Behance 是最好两个展示你的设计作品的地方.现在流行使用透视屏幕来展示应用程序设计效果,尤其是在 Dribbble 上面,有众多高品质的免费资源和设计素材. 这篇文章汇集了 ...
- Java向前引用容易出错的地方
所谓向前引用,就是在定义类.接口.方法.变量之前使用它们,例如, class MyClass { void method() { System.out.println(myvar); } String ...
- ASP.NET MVC5利用EF,反向自动生成数据库
1.在Model类里面,写好相应的属性. using System; using System.Collections.Generic; using System.Linq; using System ...
- [爬虫学习笔记]用于提取网页中所有链接的 Extractor 模块
Extractor的工作是从下载的网页中将它包含的所有URL提取出来.这是个细致的工作,你需要考虑到所有可能的url的样式,比如网页中常常会包含相对路径的url,提取的时候需要将它转换 ...
- 有关C#标签Attribute的熟悉
Attribute 简单用法: 最近用到了,所以静下心来找些资料看了一下,终于把这东西搞清楚了. 一.什么是Attribute 先看下面的三段代码: 1.自定义Attribute类:VersionAt ...
- Azure开发者任务之四:在Azure SDK 1.3中挂载调试器的错误
我安装了Windows Azure SDK的1.3版本.我试着创建了一个Azure的“Hello World”应用程序. 我按了“F5”,然后我得到了下面这个错误: 我尝试了“Ctrl+F5”:不使用 ...
- FreeBSD的新一代包管理工具Pkg 1.3.0 发布
Pkg 是 FreeBSD 下一代的打包管理工具,用来替代原来的 pkg_info/pkg_create/pkg_add 工具,可以本地打包,也提供远程打包,主要是为了方便远程二进制包升级. Pkg ...