- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
- namespace Wrox.ProCSharp.OOProg
- {
- using System;
- public enum TypeOfCall
- {
- CallToCellPhone, CallToLandline
- }
- public class Customer
- {
- private string name;
- protected decimal balance;
- public string GetFunnyString()
- {
- return "Plain ordinary customer. Kaark!";
- }
- public string Name
- {
- get
- {
- return name;
- }
- set
- {
- name = value;
- }
- }
- public decimal Balance
- {
- get
- {
- return balance;
- }
- }
- public void RecordPayment(decimal amountPaid)
- {
- balance -= amountPaid;
- }
- public virtual void RecordCall(TypeOfCall callType, uint nMinutes)
- {
- switch (callType)
- {
- case TypeOfCall.CallToLandline:
- balance += (0.02M * nMinutes);
- break;
- case TypeOfCall.CallToCellPhone:
- balance += (0.30M * nMinutes);
- break;
- default:
- break;
- }
- }
- }
- public class Nevermore60Customer : Customer
- {
- private uint highCostMinutesUsed;
- public new string GetFunnyString()
- {
- return "Nevermore60. Nevermore!";
- }
- public override void RecordCall(TypeOfCall callType, uint nMinutes)
- {
- switch (callType)
- {
- case TypeOfCall.CallToLandline:
- balance += (0.02M * nMinutes);
- break;
- case TypeOfCall.CallToCellPhone:
- uint highCostMinutes, lowCostMinutes;
- uint highCostMinutesToGo =
- (highCostMinutesUsed < 60) ? 60 - highCostMinutesUsed : 0;
- if (nMinutes > highCostMinutesToGo)
- {
- highCostMinutes = highCostMinutesToGo;
- lowCostMinutes = nMinutes - highCostMinutes;
- }
- else
- {
- highCostMinutes = nMinutes;
- lowCostMinutes = 0;
- }
- highCostMinutesUsed += highCostMinutes;
- balance += (0.50M * highCostMinutes + 0.20M *
- lowCostMinutes);
- break;
- default:
- break;
- }
- }
- }
- public class MainEntryPoint
- {
- public static void Main()
- {
- Customer cust1;
- Nevermore60Customer cust2;
- cust1 = new Customer();
- Console.WriteLine("Customer referencing Customer: "
- + cust1.GetFunnyString());
- cust1 = new Nevermore60Customer();
- Console.WriteLine("Customer referencing Nevermore60Customer: "
- + cust1.GetFunnyString());
- cust2 = new Nevermore60Customer();
- Console.WriteLine("Nevermore60Customer referencing: "
- + cust2.GetFunnyString());
- }
- }
- }