iOS开发zhiATM机的设计与实现
//
// main.m
// ATM
// #import <Foundation/Foundation.h>
#import "ATM.h"
#import "Money.h"
#import "BankCard.h" int main(int argc, const char * argv[])
{
ATM * atm = [[ATM alloc]init];
//atm->_saveMoneyCount = 1000;
BankCard * card = [BankCard alloc];
// [card set_cardNumber:@"12345678"];
// [card set_userName:@"张三"]; [atm tellMoney:TypeOfMoneyFake]; [card showCardNumber:@"12345678"];
[card showUserName:@"李四"];
NSLog(@"%@",card);
[atm saveMoney:10000];
NSLog(@"%@",atm);
[atm getMoney:5000];
NSLog(@"%@",atm); return 0;
}
#import <Foundation/Foundation.h>
#import "BankCard.h"
#import "Money.h" @interface ATM : NSObject
{
//用来记录钱的总数
int _countOfMoney; //存钱数目
int _saveMoneyCount; //取钱数目
int _getMoneyCount;
}
@property int _countOfMoney;
@property int _saveMoneyCount;
@property int _getMoneyCount; -(void)saveMoney:(int)saveMoney; -(void)getMoney:(int)getMoney; -(void)tellMoney:(TypeOfMoney)typeOfMoney;
@end
#import "ATM.h" @implementation ATM
@synthesize _countOfMoney = countOfMoney;
@synthesize _saveMoneyCount = saveMoneyCount;
@synthesize _getMoneyCount = getMoneyCount; -(void)saveMoney:(int)saveMoney
{
//这里參数名称的命名最好不好和实例变量的名称同样
//假设这样做会发生将实例变量隐藏 不影响执行,可是会有警告
_saveMoneyCount = saveMoney;
_countOfMoney = _saveMoneyCount;
NSLog(@"%d",_saveMoneyCount);
} -(void)getMoney:(int)getMoney
{
_getMoneyCount = getMoney;
_saveMoneyCount -= getMoneyCount; NSLog(@"%d",_getMoneyCount);
} -(void)tellMoney:(TypeOfMoney)typeOfMoney
{
switch (typeOfMoney) {
case TypeOfMoneyReal:
NSLog(@"真币");
break;
case TypeOfMoneyFake:
NSLog(@"假币");
break;
default:
break;
}
} -(NSString *)description
{
return [NSString stringWithFormat:@"银行卡结余=%d 存入钱数=%d 取出钱数=%d ",_countOfMoney,_saveMoneyCount,_getMoneyCount];
}
@end
#import <Foundation/Foundation.h>
enum TypeOfMoney
{
TypeOfMoneyReal,//真币 TypeOfMoneyFake//假币
}; typedef enum TypeOfMoney TypeOfMoney; @interface Money : NSObject @end
#import "Money.h"
@implementation Money
{ } @end
#import <Foundation/Foundation.h> @interface BankCard : NSObject
{
/**用来存储银行卡账号*/
NSString * _cardNumber; /**用来存储银行卡使用者姓名*/
NSString * _userName; }
-(void)showCardNumber:(NSString *)number;
-(void)showUserName:(NSString *)name;
@property NSString * _cardNumber;
@property NSString * _userName;
@end
#import "BankCard.h" @implementation BankCard @synthesize _cardNumber = carNumber;
@synthesize _userName = userName;
-(void)showCardNumber:(NSString *)number
{
//这里忘记了传參数!!!
_cardNumber = number;
NSLog(@"%@",_cardNumber);
}
-(void)showUserName:(NSString *)name
{
_userName = name;
NSLog(@"%@",_userName);
}
-(NSString *)description
{
return [NSString stringWithFormat:@"账号:%@ username:%@",_cardNumber,_userName];
}
@end
iOS开发zhiATM机的设计与实现的更多相关文章
- IOS开发之代理的设计小技巧
1.关于代理对象的设计小技巧 在设计一个类,需要通过代理和协议来从外部获取需要的动态的数据.那么在这里设计使用代理会有两种方法. <第一种方法> 也是比较常见的: 在你设计的类中,声明一个 ...
- iOS开发-真机调试遇到“The executable was signed with invalid entitlements.
https://www.jianshu.com/p/635574a8ab0e 如果是真机运行relase版 1.Edit Scheme中改成relase 2.更改签名为 自动签名
- iOS开发——真机调试证书—发布证书
(最近准备考试,空闲整理成博客……)
- IOS开发之微博的设计与实现
// // main.m // Microblog // #import <Foundation/Foundation.h> #import "Person.h" #i ...
- iOS开发之浅谈MVVM的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- iOS开发系列--IOS程序开发概览
概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...
- 浅谈iOS中MVVM的架构设计与团队协作
说到架构设计和团队协作,这个对App的开发还是比较重要的.即使作为一个专业的搬砖者,前提是你这砖搬完放在哪?不只是Code有框架,其他的东西都是有框架的,比如桥梁等等神马的~在这儿就不往外扯了.一个好 ...
- IOS中 浅谈iOS中MVVM的架构设计与团队协作
今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- iOS开发简单介绍
概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的iOS程序.但是这里我想强调一下,前面的 ...
随机推荐
- OSG中相机参数的更改
#pragma comment(lib, "osg.lib") #pragma comment(lib, "osgDB.lib") #pragma commen ...
- C++中的static关键字的总结 (转载)
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的st ...
- Python下调用json.dumps中文显示问题解决办法
json.dumps在默认情况下,对于非ascii字符生成的是相对应的字符编码,而非原始字符,例如: import json js = json.loads('{"haha": & ...
- ExtJS4 动态加载
由于有人说不要每次都调用ext-all.js,会影响性能,所以有考虑动态加载,动态加载时页面调用ext.js(4.0.7在调试时可考虑用ext-dev.js),然后在onReady之前调用 Ext.L ...
- 『重构--改善既有代码的设计』读书笔记----Substitute Algorithm
重构可以把复杂的东西分解成一个个简单的小块.但有时候,你必须壮士断腕删掉整个算法,用简单的算法来取代,如果你发现做一件事情可以有更清晰的方式,那你完全有理由用更清晰的方式来解决问题.如果你开始使用程序 ...
- 在CMD下用java命令出现“找不到或无法加载主类”问题
解决思路: 从网上查找原因和解决方法,有提到环境变量classpath设置问题,但多次尝试问题依旧没有解决.然后使用java -cp %classpath; Hello执行,结果正确. 使用echo ...
- 得到指定进程PID
//#include "targetver.h" #include "stdio.h" #include <windows.h> #include ...
- 弄懂css中单位px和em,rem的区别
国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? PX特点 1. IE无法调整那些使用px作为单位的字体大小 ...
- Web.config总结
%windir%/Microsoft.NET/Framework/v2.0.50727/CONFIG目录下machine.config定义了针对当前机器的WinForm程序和asp.net应用程序的配 ...
- Extjs打开window窗口自动加载html网页
Window inherits the autoLoad config option from Panel. Note that I included all config options below ...