OC面向对象的三大特征(封装 继承 多态)习题2 复合
来源:互联网 发布:股票网上开户软件 编辑:程序博客网 时间:2024/05/16 02:19
复合:一个类中有一个成员变量是另外一个类的对象。
Tire.h
Tire.m
比如我现在要制作一台电脑,电脑需要CPU,显示器,鼠标和键盘等。这些东西的研发都是很复杂的过程。如果现在有成型的CPU等组件,就可以直接用这些组件攒一台电脑。复合模式就是这样。
习题2
汽车安装发动机和4个轮胎。
(1)定义三个类:汽车类。
(2)定义发动机类,实例变量(品牌、价格)
(3)定义轮胎类,实例变量(品牌、价格、安装位置)。方法:添加防滑链。
(4)给汽车类添加一个实例变量发动机,添加一个数组(使用Tire * tires[4])管理汽车的4个轮胎。
(5)汽车安装发动机和4个轮胎。
工程解析(@public 懒得写set get方法,主要看复合过程)
Engine.h
#import <Foundation/Foundation.h>@interface Engine : NSObject{ @public NSString *_Brand; int _Price;}-(void)Run;@end
Engine.m
#import "Engine.h"@implementation Engine-(void)Run{ NSLog(@"发动机(品牌%@,价格%d)启动了",_Brand,_Price);}@end
Tire.h
#import <Foundation/Foundation.h>@interface Tire : NSObject{ @public NSString *_Brand; int _Price; int _Location;}-(void)install;-(void)Run;@end
Tire.m
#import "Tire.h"@implementation Tire-(void)install{ NSLog(@"在%d上安装防滑链",_Location);}-(void)Run{ NSLog(@"位置%d,品牌%@,价格%d的轮胎转动",_Location,_Brand,_Price);}@end
Car.h
#import <Foundation/Foundation.h>#import "Engine.h"#import "Tire.h"@interface Car : NSObject{ @public NSString *_Brand; int _Price; Engine *_engine; Tire *tires[4];}-(void)setEngine:(Engine *)Engine;-(Engine *)Engine;//因为是一个数组,set get 写法有变化-(void)setTire:(Tire *)tire atIndex:(int)index;-(Tire *)tireAtIndex:(int)index;-(void)start;//汽车启动@end
Car.m
#import "Car.h"@implementation Car-(void)setEngine:(Engine *)Engine{ _engine=Engine;}-(Engine *)Engine{ return _engine;}-(void)setTire:(Tire *)tire atIndex:(int)index{ tires[index]=tire;}-(Tire *)tireAtIndex:(int)index{ return tires[index];}-(void)start{ NSLog(@"汽车(品牌%@,价格%d)启动",_Brand,_Price); [_engine Run]; for (int i=0; i<4; i++) { [tires[i] Run]; [tires[i] install]; } }@end
main.m
#import <Foundation/Foundation.h>#import "Car.h"#import "Engine.h"#import "Tire.h"int main(int argc, const char * argv[]) { @autoreleasepool { Car *p=[[Car alloc]init]; p->_Brand=@"Audi"; p->_Price=600000; Engine *p1=[[Engine alloc]init]; p1->_Brand=@"丰田4Y"; p1->_Price=2000; Tire *tires[4]; for (int i=0; i<4; i++) { tires[i]=[[Tire alloc]init]; tires[i]->_Brand=@"固特异"; tires[i]->_Price=500; tires[i]->_Location=i+1; [p setTire:tires[i] atIndex:i]; } [p setEngine:p1]; [p start]; } return 0;}
0 0
- OC面向对象的三大特征(封装 继承 多态)习题2 复合
- OC面向对象的三大特征(封装 继承 多态)习题3 多态
- OC面向对象的三大特征(封装 继承 多态)习题1
- OC面向对象的三大特征 封装 ,继承,多态
- 黑马程序员--OC面向对象的三大特征——封装、继承、多态
- OC面向对象的三大特征——封装、继承、多态
- OC—面向对象的三大特征 封装、继承、多态
- java、面向对象的三大特征封装、继承、多态
- 面向对象的三大特征-封装,继承,多态
- java面向对象的三大特征:封装,继承,多态
- 面向对象的三大特征:封装、继承、多态
- 面向对象的三大特征--封装/继承/多态
- 面向对象的三大特征:封装、继承、多态。
- 面向对象的三大特征:继承、封装、多态
- 面向对象的三大特征:封装,继承,多态
- java面向对象的三大特征:封装-继承-多态
- 面向对象的三大特征:继承,封装,多态
- PHP面向对象的三大特征: 继承,封装,多态
- js----数组处理之splice(有js原始addClass方法哦)
- vi编辑器中字符串的查找与替代
- [Android] ImageView.ScaleType设置图解
- Php Socket
- grep的常用法
- OC面向对象的三大特征(封装 继承 多态)习题2 复合
- IOS - UITextField输入长度限制
- [Leetcode] Add Two Numbers
- Partition List
- FreeMarker 自定义指令(三)
- 事务机制与锁机制
- 记activity之间的跳转动画
- Launcher3实现壁纸居中
- 写脚本程序的前序工作