Написать базовый абстрактный класс который содержит универсальные поля для банковского счета и конструктор - C#
Формулировка задачи:
Научиться использовать наследование и организацию структур .
1. Написать базовый абстрактный класс который содержит универсальные поля для банковского счета и конструктор (FIO, Balance). Методы (virtual) Credit, Debit Display. ChangeName – не изменяемый
2. Определить производный класс и добавить SavingsAccount. Добавить поле к классу назвать SavingsAccount.
3. Добавьте следующие методы в класс назвать SavingsAccount. Эти методы переопределения виртуальных методов, наследуемых из базового класса.
Можете пояснить строчки кода?)
public abstract class Account { private string name; // Only accessible in base class protected double balance; public Account(string nm, double bal) { this.name = nm; this.balance = bal; } public virtual void Credit(double amount) { this.balance += amount; } public virtual void Debit(double amount) { this.balance -= amount; } public virtual void Display() { Console.WriteLine("Name={0}, balance={1}", this.name, this.balance); } public void ChangeName(string newName) { this.name = newName; } public abstract double CalculateBankCharge(); } public class SavingsAccount : Account { private double minBalance; // If the balance drops below minBalance, the bank will charge a fee on the account public SavingsAccount(string nm, double bal, double min) : base(nm, bal) // Call base-class constructor first { minBalance = min; } public override void Debit(double amount) { if (amount <= balance) // Use balance, inherited from base class base.Debit(amount); // Call Debit, inherited from base class } public override void Display() { base.Display(); // Call Display, inherited from base class Console.WriteLine("$5 charge if balance goes below ${0}", minBalance); } public override double CalculateBankCharge() { (balance < minBalance) ? return 5.00 : return 0.00; } } Public void Main() { SavingsAccount sa = new SavingsAccount("Freda Smith", 100.00, 25); sa.Display(); sa.Credit(100); sa.Debit(180); sa.ChangeName("Freda Jones"); sa.Display(); Console.WriteLine("Bank charge: ${0}", sa.CalculateBankCharge()); }
Решение задачи: «Написать базовый абстрактный класс который содержит универсальные поля для банковского счета и конструктор»
textual
Листинг программы
public abstract class Account { private string name; // скрытое поле, из-за модификатора доступа.Обозначает какое-то имя protected double balance;//число, которое хранит какой-то баланс public Account(string nm, double bal)//конструктор. принимает имя и число для баланса { this.name = nm; this.balance = bal; } public virtual void Credit(double amount)//метод который принимает число и приплюсовывает к текущему балансу { this.balance += amount; } public virtual void Debit(double amount)//метод который из текущего баланса отнимает значение { this.balance -= amount; } public virtual void Display()//собственно отображение на экране имя и баланса { Console.WriteLine("Name={0}, balance={1}", this.name, this.balance); } public void ChangeName(string newName)//метод который изменяет имя чего-то там... { this.name = newName; } public abstract double CalculateBankCharge();//какой-то метод, который должен переопределится у наследников. Ничего не принимает, возвращает очевидно сумму балансов } public class SavingsAccount : Account//создается класс, который наследуется от Account { private double minBalance; // If the balance drops below minBalance, the bank will charge a fee on the account//тут все понятно public SavingsAccount(string nm, double bal, double min) : base(nm, bal) // Call base-class constructor first//тут тоже все понятно { minBalance = min; } public override void Debit(double amount)//данный метод принимает число.Если это число меньше чем баланс в базовом классе, то вызвать дебет базового класса { if (amount <= balance) // Use balance, inherited from base class base.Debit(amount); // Call Debit, inherited from base class } public override void Display()//переопределенный метод, вызывает функцию отображения, и печатает что-то там... дополнительно { base.Display(); // Call Display, inherited from base class Console.WriteLine("$5 charge if balance goes below ${0}", minBalance); } public override double CalculateBankCharge()//переопределенный метод от абстрактного метода класса родителя { (balance < minBalance) ? return 5.00 : return 0.00;//если баланс меньше минимального баланса, то получается что-то типа не сгораемой суммы в 5 единиц } } Public void Main()// и тут вызов... { SavingsAccount sa = new SavingsAccount("Freda Smith", 100.00, 25); sa.Display(); sa.Credit(100); sa.Debit(180); sa.ChangeName("Freda Jones"); sa.Display(); Console.WriteLine("Bank charge: ${0}", sa.CalculateBankCharge()); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д