Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Gt;csc SeriesDemo.cs ISeries.cs ByTwos.csВ классах, реализующих интерфейсы, разрешается и часто практикуется определять их собственные дополнительные члены. В качестве примера ниже приведен другой вариант класса ByTwos, в который добавлен метод GetPrevious(), возвращающий предыдущее значение. using System; public interface ISeries { int GetNext(); // возвратить следующее по порядку число void Reset(); // перезапустить void SetStart(int х); // задать начальное значение } // реализовать интерфейс ISeries class ByTwos: ISeries { int start; int val; int prev; public ByTwos() { start = 0; val = 0; prev = -2; } public int GetNext() { prev = val; val += 2; return val; } public void Reset() { val = start; prev = start - 2; } public void SetStart(int x) { start = x; val = start; prev = val - 2; } //метод, не указанный в интерфейсе ISeries public int GetPrevious() { return prev; } } // Продемонстрировать применение класса ByTwos, реализующего интерфейс class SeriesDemo { static void Main() { ByTwos ob = new ByTwos(); for (int i = 0; i < 5; i++) { Console.WriteLine("Предыдущее число " + ob.GetPrevious()); Console.WriteLine("Следующее число равно " + ob.GetNext()); } Console.WriteLine("\nСбросить"); ob.Reset(); for (int i = 0; i < 5; i++) { Console.WriteLine("Предыдущее число " + ob.GetPrevious()); Console.WriteLine("Следующее число равно " + ob.GetNext()); } Console.WriteLine("\nНачать с числа 100"); ob.SetStart(100); for (int i = 0; i < 5; i++) { Console.WriteLine("Предыдущее число " + ob.GetPrevious()); Console.WriteLine("Следующее число равно " + ob.GetNext()); } } } Как видите, для того чтобы добавить метод GetPrevious(), потребовалось внести изменения в реализацию методов, определяемых в интерфейсе ISeries. Но поскольку интерфейс для этих методов остается прежним, то такие изменения не вызывают никаких осложнений и не нарушают уже существующий код. В этом и заключается одно из преимуществ интерфейсов. Как пояснялось выше, интерфейс может быть реализован в любом количестве классов. В качестве примера ниже приведен класс Primes, генерирующий ряд простых чисел. using System; public interface ISeries { int GetNext(); // возвратить следующее по порядку число void Reset(); // перезапустить void SetStart(int х); // задать начальное значение } // реализовать интерфейс ISeries class ByTwos: ISeries { int start; int val; int prev; public ByTwos() { start = 0; val = 0; prev = -2; } public int GetNext() { prev = val; val += 2; return val; } public void Reset() { val = start; prev = start - 2; } public void SetStart(int x) { start = x; val = start; prev = val - 2; } //метод, не указанный в интерфейсе ISeries public int GetPrevious() { return prev; } } //использовать интерфейс ISeries для реализации прцесса генерирования простых чисел. class Primes: ISeries { int start; int val; public Primes() { start = 2; val = 2; } public int GetNext() { int i, j; bool isprime; val++; for (i = val; i < 1000000; i++) { isprime = true; for (j = 2; j <= i / j; j++) { if ((i % j) == 0) { isprime = false; break; } } if (isprime) { val = i; break; } } return val; }
public void Reset() { val = start; } public void SetStart(int x) { start = x; val = start; } } // Продемонстрировать применение класса ByTwos, реализующего интерфейс class SeriesDemo { static void Main() { ByTwos ob = new ByTwos(); for (int i = 0; i < 5; i++) { Console.WriteLine("Следующее число равно " + ob.GetNext()); } Console.WriteLine("\nСбросить"); ob.Reset(); for (int i = 0; i < 5; i++) { Console.WriteLine("Следующее число равно " + ob.GetNext()); } Console.WriteLine("\nНачать с числа 100"); ob.SetStart(100); for (int i = 0; i < 5; i++) { Console.WriteLine("Следующее число равно " + ob.GetNext()); } Primes obj = new Primes(); for (int i = 0; i < 15; i++) { Console.WriteLine("генирируем простые числа: " + obj.GetNext()); } } }
|