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程序.但是这里我想强调一下,前面的 ...
随机推荐
- 《du命令》-linux命令五分钟系列之三
本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc 希望您能通过捐款的方式支持Linux大棚博客的运行和发展.请见“关于捐款” == ...
- Js regular exprission
正则表达式用于字符串处理.表单验证等场合,实用高效.现将一些常用的表达式收集于此,以备不时之需. 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表 ...
- Node 之 Express 学习笔记 第一篇 安装
最近由于工作不忙,正好闲暇时间学学基于 node 的 web开发框架. 现在关于web开发框架除了Express 还有新出的 KOA以及其它一些. 但是想想还是先从 Express 入手吧.因为比较成 ...
- AspNet WebApi: 了解下HttpControllerDispatcher,控制器的创建和执行
HttpControllerDispatcher作为ASPNET WEB API消息处理管道中重要的部分,负责最后控制器系统的激活,action方法的执行,以及最后的响应生成. HtppControl ...
- Hash索引和BTree索引区别
(1)Hash 索引仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询. 由于 Hash 索引比较的是进行 Hash ...
- mysql中显示方式的切换
1. mysql中如果使用\G,则':'不用写.如果\G后面跟':'则会报"error:no query specified"错误.请知晓. 2. mysql在登陆时,mysql ...
- Python自动化运维之28、Django(二)
一.FORM 1.概述 django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm 关于django的表单系统,主要分两种 基于django.for ...
- Day12 线程池、RabbitMQ和SQLAlchemy
1.with实现上下文管理 #!/usr/bin/env python# -*- coding: utf-8 -*-# Author: wanghuafeng #with实现上下文管理import c ...
- BZOJ 1046 上升序列
Description 对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ...
- Java中swap解惑
直接上代码…… public class Swap { public static void main(String[] args) { int a[] = new int[]{1,2}; Syste ...