C# 语言 第一部分 面向对象(十二) 接口的应用
本章为接口课程的综合练习。
本次练习展示了一个简化的银行业务流程,体现了银行和用户数个角色的关系。看下图:
账户类(Account)对象存储在数据库类(Database)对象中;计算机(Computer)类对象连接到数据库类对象上;银行柜台(BankCounter)类对象拥有一台计算机对象作为私有成员,利用该对象对数据库进行操作;ATM机(ATM)类继承自计算机类,其对象可以对数据库对象进行操作;银行柜台类对象可创建银行用户类(BankUser)对象,用户类对象可以进行取款、存款和转账操作。
GetMoneyable接口表示对象具备取款能力;
SaveMoneyable接口表示对象具备存款能力;
Transferable接口表示对象具备转账能力。
用户类对象取款操作目标为任意符合GetMoneyable接口的类对象;存款操作目标为任意符合SaveMoneyable接口的类对象;转账操作目标为任意符合Transferable接口的类对象。
银行柜台类实现了所有三个接口;ATM对象实现了GetMoneyable接口和Transferable接口,即ATM机可以取款和转账,不能存款。
看代码:
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace Edu.Study.OO.UseInterface {
7
8 /// <summary>
9 /// 账号类
10 /// </summary>
11 public class Account {
12
13 /// <summary>
14 /// 账户名
15 /// </summary>
16 private string name;
17
18 /// <summary>
19 /// 账号
20 /// </summary>
21 private string accountNo;
22
23 /// <summary>
24 /// 帐户密码
25 /// </summary>
26 private string password;
27
28 /// <summary>
29 /// 账户存款
30 /// </summary>
31 private int money;
32
33 /// <summary>
34 /// 流水号,用于生成账号
35 /// </summary>
36 private static int serialNo = 0;
37
38 /// <summary>
39 /// 账户名,只读
40 /// </summary>
41
相关文档:
已知有一个XML文件(bookstore.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
<author>Corets, Eva</author>
<price>5.95</price> ......
新建一个专门用来创建验证码图片的页面ValidateCode.aspx
它的后台cs文件代码如下:
PageLoad
private void Page_Load(object sender, System.EventArgs e)
{
string checkCode = CreateRandomCode(4);
Session["CheckCode"] = checkCode;
CreateImage(checkCode);
......
//以下来自:http://msdn.microsoft.com/zh-cn/library/sf985hc5.aspx
abstract(C# 参考)
更新:2007 年 11 月
abstract 修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用 abstract 修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。
示例 ......
C#获取字符串的长度
作者:ylclass 来源:博客园 发布时间:2009-10-30 16:25 阅读:193 次 原文链接 [收藏]
1、 使用g.MeasureString()获得
使用MeasureString测量出来的字符宽度,总是比实际宽度大一些,而且随着字符 ......
在C#3.0中增加了一个变量声明var,这个声明和JavaScript的var类似,蛋也不同。(*^__^*) 嘻嘻……
1.相同点,它可以用var来声明任何类型的局部变量。
2.不同点 它仅仅告诉编译器,该变量需要根据初始化表达式来确定变量的类型,而且只能是局部变量。 ......