- •Введение
- •Список вопросов, рассматриваемых в модуле 1.
- •Продемонстрированные в приложении особенности
- •Пример Mod1Ex4 (Инкапсуляция, обработка ошибок, наследование) Постановка задачи
- •Продемонстрированные в приложении особенности
- •Пример Mod1Ex5 (Полиморфизм)
- •Продемонстрированные в приложении особенности
- •Список вопросов, рассматриваемых в модуле 2.
- •Описание модельных примеров модуля 2. Пример Mod2Ex1 Постановка
- •Листинги примеров Пример Mod1Ex1
- •Пример Mod1Ex2
- •Пример Mod1Ex3
- •Пример Mod1Ex4
- •Пример Mod2Ex1
- •Пример Mod2Ex2
- •Пример Mod2Ex3
Пример Mod1Ex4
using System;
using System.Collections.Generic;
using System.Text;
namespace Kontr3
{
class Program
{
static void Main(string[] args)
{
//Clock c1;
//try
//{ c1 = new Clock(-12345); }
//catch (Exception e)
//{ Console.WriteLine("Ошибка: "+e.Message); return; }
//Console.WriteLine(c1.ToString());
//for (int i=0; i<60; i++) c1.IncMinutes();
//Console.WriteLine(c1.ToString());
/////////////////////////
Hronometr1 h1;
try
{
h1 = new Hronometr1(12345, 30);
}
catch(Exception e)
{ Console.WriteLine("Ошибка: " + e.Message); return; }
Console.WriteLine(h1.ToString());
for (int i = 0; i < 60; i++) h1.IncMinutes();
for (int i = 0; i < 60; i++) h1.IncSeconds();
Console.WriteLine(h1.ToString());
}
}
class Clock
{
private int minuteCount; //количество минут
public Clock(int mc)
{
if (mc >= 0) minuteCount = mc;
else throw new Exception("Количество минут не может быть отрицательным");
}
private int Minutes() { return minuteCount % 60; }
private int Hours() { return minuteCount / 60; }
public string ToString()
{ return String.Format("Часы показывают {0} часов {1} минут", Hours(), Minutes()); }
public void IncMinutes() { minuteCount++; }
public void DecMinutes() { minuteCount--; }
}
class Hronometr1: Clock
{
private int seconds;
public Hronometr1(int mc, int sec) : base(mc)
{ seconds = sec; }
public string ToString()
{ return base.ToString() + String.Format("{0} секунд", seconds); }
//public string ToString() //требует, стобы методы Hours() и Minutes() были protected
//{ return String.Format("Часы показывают {0} часов {1} минут {2} секунд", Hours(), Minutes(), seconds);}
public void IncSeconds()
{
if (seconds == 59)
{ IncMinutes(); seconds = 0; }
else seconds++;
}
public void DecSeconds()
{
if (seconds == 0)
{ DecMinutes(); seconds = 59; }
else seconds--;
}
}
class Hronometr2
{
private int secondsCount;
public Hronometr2(int mc, int sec)//:base(0)
{
secondsCount = mc*60+sec;
}
private int Seconds() { return secondsCount % 60; }
private int Hours() { return secondsCount / 3600; }
private int Minutes() { return (secondsCount - Hours() * 3600) % 60; }
public string ToString()
{ return String.Format("Часы показывают {0} часов {1} минут {2} секунд", Hours(), Minutes(), Seconds()); }
public void IncSeconds()
{ secondsCount++; }
public void DecSeconds() { secondsCount--; }
public void IncMinutes() { secondsCount +=60; }
public void DecMinutes() { secondsCount -= 60; }
}
}
