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& ...
随机推荐
- 菜鸟学Windows Phone 8开发(1)——创建第一个应用程序
本系列文章来源MSDN的 面向完全新手的 Windows Phone 8 开发 主要是想通过翻译本系列文章来巩固下基础知识顺带学习下英语和练习下自己的毅力(因为打算每天翻译一篇,但是发现翻译这篇花费了 ...
- eclipse luna 安装 Hadoop 1.2.1 eclipse-plugin
博主最近学习Hadoop 1.2.1,从多个搜索引擎的搜索结果当中汇合得出本文Hadoop 1.2.1 Eclipse-plugin安装过程介绍,如果你是从网上下载hadoop-eclipse-plu ...
- Android 学习笔记之AndBase框架学习(六) PullToRefrech 下拉刷新的实现
PS:Struggle for a better future 学习内容: 1.PullToRefrech下拉刷新的实现... 不得不说AndBase这个开源框架确实是非常的强大..把大部分的东西 ...
- Activating Browser Modes with Doctype
原文地址:https://hsivonen.fi/doctype/ In order to deal both with content written according to Web standa ...
- BZOJ1003 物流运输 最短路+DP
1003: [ZJOI2006]物流运输 Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条 ...
- 安装percona-xtrabackup一直提示依赖冲突的一个解决办法
我的Mysql是5.6版本,通过自己下载的rpm包执行安装: yum instal percona-xtrabackup-2.1.7-721.rhel6.x86_64.rpm 会出现如下的安装错误提示 ...
- Gradle学习系列之一——Gradle快速入门
这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...
- RCU-数据库初始化参数
C:\Windows\System32>sqlplus sys/As123456 as sysdba SQL> show parameter processes; SQL> shut ...
- .Net配置文件——反射+配置文件存储类型实例
配置文件+反射确实去除了选择语句的繁琐,带来了优美的赶脚! 首先改进了一下类(接上文): ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...
- C#-Windows服務以LocalSystem賬戶安裝的話無法獲取我的文檔路徑
如圖,如果Window服務以上圖 Account安裝運行,則無法獲取到 以下路徑: System.Environment.GetFolderPath(Environment.SpecialFolder ...