//
// 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机的设计与实现的更多相关文章

  1. IOS开发之代理的设计小技巧

    1.关于代理对象的设计小技巧 在设计一个类,需要通过代理和协议来从外部获取需要的动态的数据.那么在这里设计使用代理会有两种方法. <第一种方法> 也是比较常见的: 在你设计的类中,声明一个 ...

  2. iOS开发-真机调试遇到“The executable was signed with invalid entitlements.

    https://www.jianshu.com/p/635574a8ab0e 如果是真机运行relase版 1.Edit Scheme中改成relase 2.更改签名为   自动签名

  3. iOS开发——真机调试证书—发布证书

    (最近准备考试,空闲整理成博客……)

  4. IOS开发之微博的设计与实现

    // // main.m // Microblog // #import <Foundation/Foundation.h> #import "Person.h" #i ...

  5. iOS开发之浅谈MVVM的架构设计与团队协作

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  6. iOS开发系列--IOS程序开发概览

    概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的IOS程序.但是这里我想强调一下,前面的 ...

  7. 浅谈iOS中MVVM的架构设计与团队协作

    说到架构设计和团队协作,这个对App的开发还是比较重要的.即使作为一个专业的搬砖者,前提是你这砖搬完放在哪?不只是Code有框架,其他的东西都是有框架的,比如桥梁等等神马的~在这儿就不往外扯了.一个好 ...

  8. IOS中 浅谈iOS中MVVM的架构设计与团队协作

    今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  9. iOS开发简单介绍

    概览 终于到了真正接触IOS应用程序的时刻了,之前我们花了很多时间去讨论C语言.ObjC等知识,对于很多朋友而言开发IOS第一天就想直接看到成果,看到可以运行的iOS程序.但是这里我想强调一下,前面的 ...

随机推荐

  1. 64位 CentOS NDK 编译 FFMPEG

    64位 CentOS NDK 编译 FFMPEG 一.           参考文章: http://www.cnblogs.com/baopu/p/4733029.html http://www.c ...

  2. 【POJ3481】【splay】Double Queue

    Description The new founded Balkan Investment Group Bank (BIG-Bank) opened a new office in Bucharest ...

  3. 【转载】【挖掘Treap的潜力】

    原帖: http://fanhq666.blog.163.com/blog/static/819434262011021105212299/ 你的Treap能支持以下操作吗?1.区间增减 2.区间求最 ...

  4. Windows2003 下 MySQL 数据库每天自动备份

    1. 环境: windows server 2003 + Apache 2.0 + PHP5 + MySQL 4.0.26 . 2. 假设 PHP 安装目录为 D:/php ,MySQL 安装目录为  ...

  5. C# winform 递归选中TreeView子节点

    /// <summary> /// 递归选中所有的自节点 /// </summary> /// <param name="nodeThis">T ...

  6. css3 翻书效果

    div { -webkit-transform-origin: 285px 0; -webkit-transform: translate(1030px, 500px) rotate(32deg); ...

  7. dedecms 文章排列方式

    orderby='sortrank' 文档排序方式orderby='hot' 或 orderby='click' 表示按点击数排列orderby='sortrank' 或 orderby='pubda ...

  8. sql语句复制表

    1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable; ...

  9. WdatePicker.js 日期时间插件

    支持功能: 1.支持常规在input单击或获得焦点时调用,还支持使用其他的元素如:<img><div>等触发WdatePicker函数来调用弹出日期框 @1.input 调用: ...

  10. python模块之re正则表达式

    41.python的正则表达式      1. python中re模块提供了正则表达式相关操作 字符: . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字      \W大写代表非\w ...