OC实例之汽车启动问题

1.Car.h文件

#import <Foundation/Foundation.h>

//如果A类.h引入B类的.h文件,B类.h文件又引入A类的头文件,就会导致头文件循环引入的错误

//解决方案:

//以后只有两种情况需要在.h里面引其他的头文件, 1是继承, 2是协议

//除此之外需要引头文件,全部到.m文件中引入     .h中如果要使用该类型,使用@class关键字,@class的作用是告诉编译器他是一个类型,并不会把该文件中的内容引入过来

@class Engine,Tire;                   //@class

@interface Car : NSObject

{           //定义汽车类实例变量

NSString * _brand;

NSString * _color;

CGFloat    _price;

Engine   * _engine;//引擎

Tire     * _tire;//轮胎

}

汽车设置器与访问器

- (void)setBrand:(NSString *)brand;

- (NSString *)brand;

- (void)setCplor:(NSString *)color;

- (NSString *)color;

- (void)setPrice:(CGFloat)price;

- (CGFloat)price;

//自定义初始化方法

- (id)initwithBrand:(NSString *)brand;

- (id)initwithColor:(NSString *)color;

- (id)initwithPrice:(CGFloat)price;

- (id)initwithBrand:(NSString *)brand

color:(NSString *)color;

- (id)initwithBrand:(NSString *)brand

price:(CGFloat)price;

- (id)initwithColor:(NSString *)color

price:(CGFloat)price;

- (id)initwithBrand:(NSString *)brand

color:(NSString *)color

price:(CGFloat)price;

//汽车启动方法

- (void)start;

- (void)setEngine:(Engine *)engine;//汽车发动机设置器与访问器

- (Engine *)engine;

- (void)setTire:(Tire *)tire;//轮胎设置器与访问器

- (Tire *)tire;

@end

2.Car.m文件

#import "Car.h"

#import "Engine.h"

#import "Tire.h"       //注意此处要引入头文件

@implementation Car

- (void)setBrand:(NSString *)brand

{

_brand = brand;

}

- (NSString *)brand

{

return _brand;

}

- (void)setCplor:(NSString *)color

{

_color = color;

}

- (NSString *)color

{

return _color;

}

- (void)setPrice:(CGFloat)price

{

_price = price;

}

- (CGFloat)price

{

return _price;

}

- (id)initwithBrand:(NSString *)brand

{

_brand = brand;

return self;

}

- (id)initwithColor:(NSString *)color

{

_color = color;

return self;

}

- (id)initwithPrice:(CGFloat)price

{

_price = price;

return self;

}

- (id)initwithBrand:(NSString *)brand

color:(NSString *)color

{

_brand = brand;

_color = color;

return self;

}

- (id)initwithBrand:(NSString *)brand

price:(CGFloat)price

{

_brand = brand;

_price = price;

return self;

}

- (id)initwithColor:(NSString *)color

price:(CGFloat)price

{

_color = color;

_price = price;

return self;

}

- (id)initwithBrand:(NSString *)brand

color:(NSString *)color

price:(CGFloat)price

{

_brand = brand;

_color = color;

_price = price;

return self;

}

- (void)setEngine:(Engine *)engine

{

_engine = engine;

}

- (Engine *)engine

{

return _engine;

}

- (void)setTire:(Tire *)tire

{

_tire = tire;

}

- (Tire *)tire

{

return _tire;

}

- (void)start

{

BOOL result = [_engine fire];    //调用发动机点火行为

//点火成功则轮胎转动

if (result) {                //result = 1则调用轮胎turn(转动)行为

[_tire turn];

}

else{

NSLog(@"请重试.....!");

}

}

@end

3.Tire.h

#import <Foundation/Foundation.h>

@interface Tire : NSObject

{

NSString * _brand;//品牌

CGFloat    _size;//尺寸

}

- (void)turn;//转动

- (void)setBrand:(NSString *)brand;

- (NSString *)brand;

- (void)setSize:(CGFloat)size;

- (CGFloat)size;

- (id)initwithBrand:(NSString *)brand

size:(CGFloat)size;

@end

4.Tire.m

#import "Tire.h"

@implementation Tire

- (void)setBrand:(NSString *)brand

{

_brand = brand;

}

- (NSString *)brand

{

return _brand;

}

- (void)setSize:(CGFloat)size

{

_size = size;

}

- (CGFloat)size

{

return _size;

}

- (id)initwithBrand:(NSString *)brand

size:(CGFloat)size

{

_brand = brand;

_size = size;

return self;

}

- (void)turn//转动

{

NSLog(@"轮胎转动");

}

@end

5.Engine.h

#import <Foundation/Foundation.h>

@interface Engine : NSObject

{

NSString * _brand;//品牌

CGFloat    _power;//功率

CGFloat    _displacement;//排量

}

- (BOOL)fire;

- (void)setBrand:(NSString *)brand;

- (NSString *)brand;

- (void)setPower:(CGFloat)power;

- (CGFloat)power;

- (void)setDisplacement:(CGFloat)displacement;

- (CGFloat)displacement;

- (id)initwithBrand:(NSString *)brand

power:(CGFloat)power

displacement:(CGFloat)displacement;

@end

6.Engine

#import "Engine.h"

@implementation Engine

- (BOOL)fire            //返回的是一个BOOL值

{

unsigned long n = arc4random() % 11;     //发动机行为的实现

if (n % 3 != 0) {

NSLog(@"点火成功");

return YES;

}

NSLog(@"点火失败");

return NO;

}

- (void)setBrand:(NSString *)brand

{

_brand = brand;

}

- (NSString *)brand

{

return _brand;

}

- (void)setPower:(CGFloat)power

{

_power = power;

}

- (CGFloat)power

{

return _power;

}

- (void)setDisplacement:(CGFloat)displacement

{

_displacement = displacement;

}

- (CGFloat)displacement

{

return _displacement;

}

- (id)initwithBrand:(NSString *)brand

power:(CGFloat)power

displacement:(CGFloat)displacement

{

_brand = brand;

_power = power;

_displacement = displacement;

return self;

}

@end

7.main.m

//创建一个引擎

Engine * engine = [[Engine alloc]initwithBrand:@"东风日产" power:130 displacement:1.8];

//创建一个轮胎

Tire * tire = [[Tire alloc]initwithBrand:@"米其林" size:100];

//创建一个车对象

Car * car = [[Car alloc]initwithBrand:@"奥迪A4" color:@"白色" price:300000];

//给汽车引擎类型的实例变量赋值(给车装上发动机)

[car setEngine:engine];

//装上轮胎

[car setTire:tire];

[car start];

时间: 2024-08-25 17:46:46

OC实例之汽车启动问题的相关文章

OC实例变量初始化方法

OC实例变量初始化方法1. 使用实例setter方法 默认初始化方法 + setName:xxx setAge:xxx2. 使用实例功能类方法,默认初始化方法 + setName:xxx age:xxx3.使用实例初始化方法 initWith开头的方法4.使用构造器 类名+With…以Person  Student两个类为例1. 使用实例 setter方法这是最麻烦的方法 @interface Person : NSObject { NSString *_name; NSString *_sex

Simulink混合仿真系统实例练习——汽车行驶控制系统

今天学习了Simulinl混合仿真系统,实际的系统常常是混合系统(即系统中有连续信号也有离散信号).在对这类系统进行仿真时必须考虑连续信号和离散信号采样时间之间的匹配问题.Simulink中的变步长连续求解器充分考虑了上述问题.所以在对混合系统进行仿真分析时,应该使用变步长连续求解器.现在通过一个实例来进行系统的总结一下.下面的例子来自教材<基于MATLAB7.x+SIMULINK_STATEFLOW系统仿真.分析及设计>. 例:汽车行驶控制系统是应用很广的控制系统之一,控制的目的是对汽车速度

OC 实例变量(Instance Var)和成员变量(member var)区别

摘要:  Objective-C  引入了“实例变量"的概念,但同时, 也经常出现 “成员变量”的声音. 到底什么是实例变量,什么是成员变量,二者的区别是什么呢? 今天查看apple 的官方文档时(如下).https://developer.apple.com/library/mac/referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/index.html 发现了一个新的名词: 成员变量(member variable).

MySQL多实例配置文件及启动文件

-----------mysql多实例配置文件 [[email protected]/]# cat /data/3307/my.cnf [client] port            = 3307  #<== 端口号 socket          = /data/3307/mysql.sock [mysql] no-auto-rehash [mysqld] user   = mysql   #<== 所属用户 port   = 3307   #<== 端口号 socket = /da

mysql 多实例关闭、启动、查看状态

一.my.cnf配置文件 [mysqld] ########basic settings######## #user = mysql #bind_address = #autocommit = 0 socket = /tmp/mysqld.sock character_set_server=utf8mb4 skip_name_resolve = 1 max_connections = 1000 max_connect_errors = 300 transaction_isolation = RE

多实例MySQL数据库启动问题

环境: 操作系统:CentOS release 6.5数据库1:版本:mysql5.6.37 basedir:/usr/local/mysql5637 配置文件位置:/data/mysql5637/my.cnf数据库2:版本:mysql5.7.19basedir:/usr/local/mysql5719配置文件位置:/data/mysql5719/my.cnf 问题摘要 今天把5.7.19的数据库给shutdown了,然后使用mysqld_safe --defaults-file=/data/m

直接关闭Linux,导致多实例MySQL无法启动的问题

[[email protected] ~]# /data/3308/mysql startStarting MySQL...[[email protected] ~]# ll /data/3308/总用量 72drwxr-xr-x 3 mysql root 4096 7月 24 10:38 data-rw-r--r-- 1 root root 1899 7月 20 16:01 my.cnf-rwx--x--x 1 mysql mysql 1307 7月 20 15:06 mysql-rw-rw-

实例:汽车(实现邮箱模样的删除功能)

实现邮箱模样的删除功能: 第一步:把汽车表的数据显示出来. 1.把基本数据和相关联的系列名称.厂商名称显示出来 2.把复选框做出来.<input type='checkbox' id='cb<%#Eval("")%>' name='cb' value='<%#Eval("Code")%>'> 第二步:做删除按钮 1.取出选中的汽车主键 string s = Request["cb"].ToString() st

Oc(实例变量可见度与方法)(InstanceVariableAndMethod)

main函数 // //  main.m //  2-3 LessionInstanceVariableAndMethod // //  Created by lanouhn on 15/2/3. //  Copyright (c) 2015年 lanouhn. All rights reserved. // #import <Foundation/Foundation.h> #import "Boy.h" #import "MobilePhone.h"