//
// PublicFile.h
// 汽车
//
// Created by 邱学伟 on 15/7/28.
// Copyright (c) 2015年 jerehedu. All rights reserved.
//
#ifndef ___PublicFile_h
#define ___PublicFile_h
enum _carModel{
microCar,
smallCar,
familyCar,
bigCar,
SUV,
MPV,
sportCar,
pickupCar
};
typedef enum _carModel CarModel;
typedef enum _color{
red,
white,
black,
blue,
grey,
yellow,
green
}Color;
typedef struct _carSize{
int length;
int width;
int high;
}CarSize;
typedef enum _gearbox{
selfmotion,
handmovement,
selfAndHandMovement,
}Gearbox;
typedef enum _configuration{
lowcon,
middlecon,
highcon
}Configuration;
typedef struct _time{
int year;
int month;
int day;
}Time;
typedef enum _navigationSize{
fiveInch,
sixInch,
sevenInch
}NavigationSize;
typedef enum _inputMode{
handWritten,
spell,
fastSpell,
handWrittenPen
}InputMode;
typedef struct _resolution{
int left;
int right;
}Resolution;
#endif
//
// Screen.h
// 汽车
//
// Created by 邱学伟 on 15/7/28.
// Copyright (c) 2015年 jerehedu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "PublicFile.h"
@interface Screen : NSObject
{
NSString *_screenBrand;
Resolution _resolution;
}
-(void)setScreenBrand:(NSString *)screenBrand;
-(NSString *)screenBrand;
-(void)resolution:(Resolution)resolution;
-(Resolution)resolution;
-(void)setScreenBrand:(NSString *)screenBrand andResolution:(Resolution)resolution;
+(instancetype)setScreenBrand:(NSString *)screenBrand andResolution:(Resolution)resolution;
-(void)printScreen;
@end
//
// Screen.m
// 汽车
//
// Created by 邱学伟 on 15/7/28.
// Copyright (c) 2015年 jerehedu. All rights reserved.
//
#import "Screen.h"
@implementation Screen
-(void)setScreenBrand:(NSString *)screenBrand{
_screenBrand=screenBrand;
}
-(NSString *)screenBrand{
return _screenBrand;
}
-(void)resolution:(Resolution)resolution{
_resolution=resolution;
}
-(Resolution)resolution{
return _resolution;
}
-(void)setScreenBrand:(NSString *)screenBrand andResolution:(Resolution)resolution{
_screenBrand=screenBrand;
_resolution=resolution;
}
+(instancetype)setScreenBrand:(NSString *)screenBrand andResolution:(Resolution)resolution{
Screen *screen = [Screen new];
[screen setScreenBrand:screenBrand andResolution:resolution];
return screen;
}
-(void)printScreen{
NSLog(@"屏幕的品牌是:%@,分辨率为%i*%i",_screenBrand,_resolution.left,_resolution.right);
}
@end
//
// Navigation.h
// 汽车
//
// Created by 邱学伟 on 15/7/28.
// Copyright (c) 2015年 jerehedu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "PublicFile.h"
#import "Screen.h"
@interface Navigation : NSObject
{
NSString *_brand;
float _price;
NavigationSize _navigationSize;
Color _navigationColor;
InputMode _inputMode;
int _memory;//内存
BOOL _backCarView;//倒车影像
@public Screen *_screen;//屏幕类
}
-(NSString*)brand;
-(float)price;
-(NavigationSize)navigationSize;
-(Color)navigationColor;
-(InputMode)inputMode;
-(int)memory;
-(BOOL)backCarView;
-(Screen*)screen;
-(void)setBrand:(NSString *)brand setPrice:(float)price setNavigationSize:(NavigationSize)navigationSize setNavigationColor:(Color)navigationColor setInputMode:(InputMode)inputMode setMemory:(int)memory setBackCarView:(BOOL)backCarView setScreen:(Screen*)screen;
+(instancetype)setBrand:(NSString *)brand setPrice:(float)price setNavigationSize:(NavigationSize)navigationSize setNavigationColor:(Color)navigationColor setInputMode:(InputMode)inputMode setMemory:(int)memory setBackCarView:(BOOL)backCarView setScreen:(Screen*)screen;
-(void)printNavigation;
-(NSString*)getNavigationSize:(NavigationSize)navigationSize;
-(NSString*)getNavigationColor:(Color)color;
-(NSString*)getInputMode:(InputMode)inputMode;
-(NSString*)getBackCarView:(BOOL)backCarView;
@end
//
// Navigation.m
// 汽车
//
// Created by 邱学伟 on 15/7/28.
// Copyright (c) 2015年 jerehedu. All rights reserved.
//
#import "Navigation.h"
@implementation Navigation
-(void)setBrand:(NSString *)brand setPrice:(float)price setNavigationSize:(NavigationSize)navigationSize setNavigationColor:(Color)navigationColor setInputMode:(InputMode)inputMode setMemory:(int)memory setBackCarView:(BOOL)backCarView setScreen:(Screen*)screen{
_brand=brand;
_price=price;
_navigationSize=navigationSize;
_navigationColor=navigationColor;
_inputMode=inputMode;
_memory=memory;
_backCarView=backCarView;
_screen=screen;
}
-(NSString*)brand{
return _brand;
}
-(float)price{
return _price;
}
-(NavigationSize)navigationSize{
return _navigationSize;
}
-(Color)navigationColor{
return _navigationColor;
}
-(InputMode)inputMode{
return _inputMode;
}
-(int)memory{
return _memory;
}
-(BOOL)backCarView{
return _backCarView;
}
-(Screen*)screen{
return _screen;
}
+(instancetype)setBrand:(NSString *)brand setPrice:(float)price setNavigationSize:(NavigationSize)navigationSize setNavigationColor:(Color)navigationColor setInputMode:(InputMode)inputMode setMemory:(int)memory setBackCarView:(BOOL)backCarView setScreen:(Screen*)screen{
Navigation *navigat = [Navigation new];
[navigat setBrand:brand setPrice:price setNavigationSize:navigationSize setNavigationColor:navigationColor setInputMode:
inputMode setMemory:memory setBackCarView:backCarView setScreen:screen];
return navigat;
}
-(void)printNavigation{
NSLog(@"导航器品牌是:%@,参考价格为:%f元,尺寸是:%@,颜色是:%@色,输入方式为:%@,内存是:%iG,倒车影像:%@,导航器屏幕信息:屏幕的品牌是:%@,分辨率为%i*%i",_brand,_price,[self getNavigationSize:_navigationSize],[self getNavigationColor:_navigationColor],[self getInputMode:_inputMode],_memory,[self getBackCarView:_backCarView],[_screen screenBrand],[_screen resolution].left,[_screen resolution].right);
}
-(NSString*)getNavigationSize:(NavigationSize)navigationSize{
NSString *str = [NSString new];
switch (navigationSize) {
case fiveInch:
[email protected]"5寸";
break;
case sixInch:
[email protected]"6寸";
break;
case sevenInch:
[email protected]"7寸";
break;
default:
break;
}
return str;
}
-(NSString*)getNavigationColor:(Color)color{
NSString *str = [[NSString alloc]init];
switch (color) {
case red:
[email protected]"红色";
break;
case white:
[email protected]"白色";
break;
case black:
[email protected]"黑色";
break;
case blue:
[email protected]"蓝色";
break;
case grey:
[email protected]"灰色";
break;
case yellow:
[email protected]"黄色";
break;
case green:
[email protected]"绿色";
break;
default:
break;
}
return str;
}
-(NSString*)getInputMode:(InputMode)inputMode{
NSString *str = [[NSString alloc]init];
switch (inputMode) {
case handWritten:
[email protected]"手写";
break;
case spell:
[email protected]"拼音";
break;
case fastSpell:
[email protected]"拼音查询";
break;
case handWrittenPen:
[email protected]"手写笔";
break;
default:
break;
}
return str;
}
-(NSString*)getBackCarView:(BOOL)backCarView{
NSString *str = [[NSString alloc]init];
switch (backCarView) {
case YES:
[email protected]"有";
break;
case NO:
[email protected]"没有";
break;
default:
break;
}
return str;
}
@end
//
// Car.h
// 汽车
//
// Created by 邱学伟 on 15/7/28.
// Copyright (c) 2015年 jerehedu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "PublicFile.h"
#import "Navigation.h"
#import "Screen.h"
@interface Car : NSObject
{
NSString *_brand;
CarModel _car;
Color _carColor;
float _peace;
CarSize _carSize;
Gearbox _gearbox;
Configuration _configuration;
Time _time;
int _allcoverTime;//质保年限
float _speed;//时速
float _oilwear;//油耗
BOOL _skylight;//天窗
float _oilmeter;//油表
Navigation *_navigation;//导航
}
-(float)firingCar;
-(void)stopCar;
-(float)addOil;
-(void)setBrand:(NSString*)brand setCar:(CarModel)car setCarColor:(Color)carColor setPeace:(float)peace setSize:(CarSize)carSize setGearbox:(Gearbox)gearbox setConfiguration:(Configuration)configuration setTime:(Time)time setAllcoverTime:(int)allcoverTime setSpeed:(float)speed setOilwear:(float)oilwear setSkylight:(BOOL)skylight setOilmeter:(float)oilmeter setNavigation:(Navigation *)navigation;
+(instancetype)setBrand:(NSString*)brand setCar:(CarModel)car setCarColor:(Color)carColor setPeace:(float)peace setSize:(CarSize)carSize setGearbox:(Gearbox)gearbox setConfiguration:(Configuration)configuration setTime:(Time)time setAllcoverTime:(int)allcoverTime setSpeed:(float)speed setOilwear:(float)oilwear setSkylight:(BOOL)skylight setOilmeter:(float)oilmeter setNavigation:(Navigation *)navigation;
-(void)printCar;
-(NSString*)getCar:(CarModel)car;//获取汽车类型
-(NSString*)getCarColor:(Color)color;//获取汽车颜色
-(NSString*)getGearbox:(Gearbox)gearbox;//获取变速箱类型
-(NSString*)getConfiguration:(Configuration)configuration;//获取配置
@end
//
// Car.m
// 汽车
//
// Created by 邱学伟 on 15/7/28.
// Copyright (c) 2015年 jerehedu. All rights reserved.
//
#import "Car.h"
@implementation Car
-(float)firingCar{
_oilmeter--;
return _oilmeter;
}
-(void)stopCar{
NSLog(@"汽车停止");
}
-(float)addOil{
_oilmeter++;
return _oilmeter;
}
-(void)setBrand:(NSString*)brand setCar:(CarModel)car setCarColor:(Color)carColor setPeace:(float)peace setSize:(CarSize)carSize setGearbox:(Gearbox)gearbox setConfiguration:(Configuration)configuration setTime:(Time)time setAllcoverTime:(int)allcoverTime setSpeed:(float)speed setOilwear:(float)oilwear setSkylight:(BOOL)skylight setOilmeter:(float)oilmeter setNavigation:(Navigation *)navigation{
_brand=brand;
_car=car;
_carColor=carColor;
_peace=peace;
_carSize=carSize;
_gearbox=gearbox;
_configuration=configuration;
_time=time;
_allcoverTime=allcoverTime;
_speed=speed;
_oilwear=oilwear;
_skylight=skylight;
_oilmeter=oilmeter;
_navigation=navigation;
}
+(instancetype)setBrand:(NSString*)brand setCar:(CarModel)car setCarColor:(Color)carColor setPeace:(float)peace setSize:(CarSize)carSize setGearbox:(Gearbox)gearbox setConfiguration:(Configuration)configuration setTime:(Time)time setAllcoverTime:(int)allcoverTime setSpeed:(float)speed setOilwear:(float)oilwear setSkylight:(BOOL)skylight setOilmeter:(float)oilmeter setNavigation:(Navigation *)navigation{
Car *car0=[[Car alloc]init];
[car0 setBrand:brand setCar:car setCarColor:carColor setPeace:peace setSize:carSize setGearbox:gearbox setConfiguration:configuration setTime:time setAllcoverTime:allcoverTime setSpeed:speed setOilwear:oilwear setSkylight:skylight setOilmeter:oilmeter setNavigation:navigation];
return car0;
}
-(void)printCar{
NSLog(@"汽车的品牌是:%@,车型是:%@,车的颜色是:%@色,汽车的参考价格为:%f元,汽车的尺寸为:%i*%i*%i ,变速箱是:%@的,该车配置是:%@的,上市日期是:%i年%i月%i日,质保年限是:%i年,时速:%f km/h, 油耗是:%f 个油,%@ 天窗,油表 %f L,该车导航器的信息是:导航器品牌是:%@,参考价格为:%f元,尺寸是:%@,颜色是:%@色,输入方式为:%@,内存是:%iG,倒车影像:%@,导航器屏幕信息:屏幕的品牌是:%@,分辨率为%i*%i",_brand,[self getCar:_car],[self getCarColor:_carColor],_peace,_carSize.length,_carSize.width,_carSize.high,[self getGearbox:_gearbox],[self getConfiguration:_configuration],_time.year,_time.month,_time.day,_allcoverTime,_speed,_oilwear,[self getSkylight:_skylight],_oilmeter,[_navigation brand],[_navigation price],[_navigation getNavigationSize:_navigation.navigationSize],[_navigation getNavigationColor:_navigation.navigationColor],[_navigation getInputMode:_navigation.inputMode],[_navigation memory],[_navigation getBackCarView:_navigation.backCarView],_navigation->
_screen.screenBrand,_navigation.screen.resolution.left,_navigation.screen.resolution.right);
}
-(NSString*)getCar:(CarModel)car{//获取汽车类型
NSString *str;
switch (car) {
case microCar:
[email protected]"微型车";
break;
case smallCar:
[email protected]"小型车";
break;
case familyCar:
[email protected]"中型车";
break;
case bigCar:
[email protected]"大型车";
break;
case SUV:
[email protected]"SUV";
break;
case MPV:
[email protected]"MPV";
break;
case sportCar:
[email protected]"跑车";
break;
case pickupCar:
[email protected]"皮卡";
break;
default:
break;
}
return str;
}
-(NSString*)getCarColor:(Color)color{//获取汽车颜色
NSString *str;
switch (color) {
case red:
[email protected]"红色";
break;
case white:
[email protected]"白色";
break;
case black:
[email protected]"黑色";
break;
case blue:
[email protected]"蓝色";
break;
case grey:
[email protected]"灰色";
break;
case yellow:
[email protected]"黄色";
break;
case green:
[email protected]"绿色";
break;
default:
break;
}
return str;
}
-(NSString*)getGearbox:(Gearbox)gearbox{//获取变速箱类型
NSString *str;
switch (gearbox) {
case selfmotion:
[email protected]"自动挡";
break;
case handmovement:
[email protected]"手动挡";
break;
case selfAndHandMovement:
[email protected]"手自一体挡";
default:
break;
}
return str;
}
-(NSString*)getConfiguration:(Configuration)configuration{//获取配置
NSString *str;
switch (configuration) {
case lowcon:
[email protected]"低配";
break;
case middlecon:
[email protected]"中配";
break;
case highcon:
[email protected]"高配";
default:
break;
}
return str;
}
-(NSString*)getSkylight:(BOOL)skylight{//获取天窗配置
NSString *str;
switch (skylight) {
case YES:
[email protected]"有";
break;
case NO:
[email protected]"没有";
break;
default:
break;
}
return str;
}
@end
//
// main.m
// 汽车
//
// Created by 邱学伟 on 15/7/28.
// Copyright (c) 2015年 jerehedu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "PublicFile.h"
#import "Car.h"
#import "Navigation.h"
#import "Screen.h"
/*
使用面向对象的思想描述车类
汽车类:
属性:
品牌 字符串
车型 (枚举值:微型车、小型车、中型车、大型车、SUV、MPV、跑车、皮卡)
颜色 (枚举值:红色、白色、黑色、蓝色、灰色、黄色、绿色…)
参考价格 浮点
尺寸 (结构体:长、宽、高)
变速箱 (枚举值:自动、手动、手自一体)
配置 (枚举:低配、中配、高配)
上市日期 (结构体)
质保年限 整型
时速 浮点
油耗 浮点
天窗 布尔
油表 浮点
导航
方法:1、成员变量的set、get方法
2、启动 (每启动一次,油减少一点)
3、停止
4、加油 (油表改变)
4、类方法得到对象
5、类方法得到一个已经实现多个实例变量赋值的对象
6、汽车信息展示
导航类
属性:
品牌 字符串
参考价格 浮点
尺寸 (枚举:5英寸、6英寸、7英寸)
颜色 (枚举值)
输入方式 (枚举:手写、拼音、快拼查询、手写笔)
内存 (8/16/32/64)
倒车影像 布尔
屏幕
方法:1、成员变量的set、get方法
2、对象方法多参设置
3、类方法多参设置
4、展示信息
屏幕类
属性:
品牌 字符串
分辨率 (例:800*480)
方法:1、成员变量的set、get方法
2、对象方法多参设置
3、类方法多参设置
4、展示信息
*/
int main(int argc, const char * argv[]) {
@autoreleasepool {
Navigation *navigetion1=[[Navigation alloc]init];
Screen *screen1=[[Screen alloc]init];
Car *car1=[[Car alloc]init];
Resolution resolution1;
resolution1.left=1280;
resolution1.right=998;
CarSize carSize1;
carSize1.length=1024;
carSize1.width=998;
carSize1.high=688;
Time time1;
time1.year=2015;
time1.month=9;
time1.day=6;
[screen1 setScreenBrand:@"三星" andResolution:resolution1];
[screen1 printScreen];
[navigetion1 setBrand:@"高德" setPrice:999 setNavigationSize:sixInch setNavigationColor:red setInputMode:handWritten setMemory:64 setBackCarView:YES setScreen:screen1];
[navigetion1 printNavigation];
[car1 setBrand:@"奔驰" setCar:SUV setCarColor:red setPeace:500000 setSize:carSize1 setGearbox:selfAndHandMovement setConfiguration:middlecon setTime:time1 setAllcoverTime:3 setSpeed:230 setOilwear:7 setSkylight:NO setOilmeter:122 setNavigation:navigetion1];
[car1 printCar];
}
return 0;
}
总结:
零碎知识点的堆砌,历时接近6个小时,小错误不过最终看到自己的奔驰在屏幕上输出也算松了一口气,没事时候看看,虽然简单,代表性很强!
运行结果:
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-09 03:07:23