Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 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());

}

}

}

Date: 2015-09-02; view: 350; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию