Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы информацинных технологий

.pdf
Скачиваний:
80
Добавлен:
21.02.2016
Размер:
2.46 Mб
Скачать

Т2 b;

 

 

public:

 

 

cls(T1 A,T2 B): a(A),b(B) {}

 

 

~cls(){}

 

 

T1

sm1()

// описание шаблона функции

{

 

// суммирования компонент объекта obj

 

return (T1)(a+b);

 

 

}

 

 

 

T1

sm2(T1,T2);

// объявление шаблона функции

};

 

 

 

template <class T1,class T2>

 

 

T1 cls<T1,T2>::sm2(T1 aa,T2 bb) // описание шаблона функции

{

 

// суммирования внешних данных

return (T1)(aa+bb);

 

 

}

 

 

 

void main()

 

 

{

 

 

 

cls <int,int> obj1(3,4);

 

 

cls

<double,double> obj2(.3,.4);

 

cout<<"функция суммирования компонент объекта 1

= "

 

<<obj1.sm1()<<endl;

 

 

cout<<"функция суммирования внешних данных (int,int)

= "

 

<<obj1.sm24,6)<<endl;

 

 

cout<<"вызов глобальной функции суммирования (int,int) = "

 

<<sm1(4,.6)<<endl;

 

 

cout<<"функция суммирования компонент объекта 2

= "

<<obj2.sm1()<<endl;

cout<<"функция суммирования внешних данных (double,double)= " <<obj2.sm2(4.2,.1)<<endl;

}

6.7.3 Передача в шаблон класса дополнительных параметров

При создании экземпляра класса из шаблона в него могут быть переданы не только типы, но и переменные и константные выражения:

#include <iostream> using namespace std;

template <class T1,int i=0,class T2> class cls

{ T1 a; T2 b;

public:

cls(T1 A,T2 B):a(A),b(B){} ~cls(){}

T1 sm() //описание шаблона функции суммирования компонент объекта {// i+=3; // error member function 'int thiscall cls<int,2>::sm(void)'

230

return (Tl)(a+b+i);
i
};
void main()
{ cls <int,1,int> obj1(3,2); // в шаблоне const i инициализируется 1 cls <int,0,int> obj2(3,2,1); // error'cls<int,0>::cls<int,0>':no overloaded
// function takes 3 parameter s
cls <int,int,int> obj13(3,2,1); // error 'els': invalid template argument for 'i', // constant expression expected
cout<<obj1.sm()<<endl;

}

Результатом работы программы будет выведенное на экран число 6.

В этой программе согласно инструкции template <class T1,int i=0,class T2> шаблон класса cls имеет три параметра, два из которых - имена типов (Т1 и Т2), а третий (int i=0) - целочисленная константа. Значение константы i может быть изменено при описании объекта cls <int,1,int> obj1(3,2).

6.7.4 Совместное использование шаблонов и наследования

Шаблонные классы, как и обычные, могут использоваться повторно. Шаблоны и наследование представляют собой механизмы повторного исполь­ зования кода и могут включать полиморфизм. Шаблоны и наследования связа­ ны между собой следующим образом:

-шаблон класса может быть порожден обычным классом;

-шаблонный класс может быть производным от шаблонного класса;

-обычный класс может быть производным от шаблона класса.

Ниже приведен пример простой программы, демонстрирующей наследо­ вание шаблонного класса ореr от шаблонного класса vect:

#include <iostream>

using namespace std;

 

template <class T>

 

class vect

// класс-вектор

{protected:

 

T *ms;

// массив-вектор

int size;

// размерность массива-вектора

public:

 

vect(int n): size(n)

// конструктор

{

 

ms=new T[size];

 

}

 

~vect(){delete [] ms;}

//деструктор

T &operator[] (const int ind)// доопределение операции []

{if((ind>0) && (ind<size)) return ms[ind]; else return ms[0];

}

};

231

template <class T>

 

 

 

class oper : public vect<T>

// класс операций над вектором

{

 

 

 

 

public:

 

 

 

 

oper(int n): vect<T>(n) {}

// конструктор

 

~oper() {}

 

// деструктор

 

void print()

 

// функция вывода содержимого вектора

{ for(int i=0;i<size;i++)

 

 

 

cout<<ms[i]<<'';

 

 

 

cout<<endl;

 

 

 

}

 

 

 

 

};

 

 

 

 

void main()

 

 

 

 

{

 

 

 

 

oper <int> v_i(4);

//

int-вектор

 

oper <double> v_d(4);

// double-вектор

 

v_i[0]=5;

v_i[l]=3;

v_i[2]=2;

v_i[3]=4;

//инициализация int

v_d[0]=1.3; v_d[l]=5.1; v_d[2]=.5; v_d[3]=3.5; //инициализация double cout<<"int вектор = ";

v_i.print();

cout<<"double вектор = "; v_d.print();

}

Как следует из примера, реализация производного класса от классашаблона в основном ничем не отличается от обычного наследования.

232

Сводный список рекомендуемой литературы

К главе 1

1Акулов, О.А. Информатика: базовый курс: учеб. пособие / О.А. Акулов, Н.В. Медведев. - 2- изд. - М.: Омега-Л, 2005. - 552 с.

2Алфимов, М.В. Государственная политика предоставления доступа к науч­ но-технической информации в условиях инновационного развития общест­ ва // Библиотековедение. - 2005. - № 4. - С. 23-25.

3Арме, В. Электронные библиотеки (перевод с англ.). - М.: ПИК ВИНИТИ, 2001.-274 с.

4Велихов, А.В. Основы информатики и компьютерной техники: учеб. Посо­ бие /. - А.В. Велихов. - М.: СОЛОН-Пресс, 2003. - 544 с.

5Информатика: учебник. / Н.В. Макарова [и др.]; под ред. Н.В. Макаровой. - 3-е перераб. изд..- М.: Финансы и статистика, 2007. - 765 с

6История информатики и философия информационной реальности: учебное

пособие для вузов / [Тузов В. В. и др.]; под ред. Р. М. Юсупова, В. П. Котенко. - М.: Акад. Проект, 2007. - 430 с.

7Ковалев, М., Шади А.-С. Создание электронного правительства с учетом международного опыта// Банкаускi веснiк. -2006. - чэрвень. - С. 16 - 25. [Электронный ресурс]. - Режим доступа: http://www.nbrb.bv/bv/narch/ 345/2.pdf. - Дата доступа: 18.12.2007.

8Электронные документы: создание и использование в публичных библиоте­ ках: справ. / науч. Ред. проф. Р.С. Гиляревский, проф. Г.Ф. Гордукалова. - СПб: Профессия, 2007. - 664 с.

Кглаве 2

9Борисов, Е.С. Основные модели и методы теории искусственных нейронных сетей / Е.С. Борисов [Электронный ресурс]. - Режим доступа: http:// mechanoid.narod.ru/nns/base/index.html. - Дата доступа: 18.12.2007.

10Гмурман, В.Е. Теория вероятностей и математическая статистика: учеб. по­ собие для вузов / В.Е. Гмурман. 7-е стер. изд. - М.: Высш. шк., 2001. -479 с.

11Головко, В.А. Нейроинтеллект: теория и применение. Книга 1: Организация

 

и обучение

нейронных сетей с прямыми и обратными связями /

 

В. А. Головко / - Брест: Брестский политехнический институт, 1999. - 264 с.

12

Зачем нужны аналитические технологии [Электронный ресурс]. - Режим

 

доступа: http://www.neuroproject.ru/what.php. - Дата доступа: 18.12.2007.

13

Кальченко, Д. Нейронные сети: на пороге будущего / Д. Кальченко [Элек­

 

тронный ресурс]. - Режим доступа: http://alt-future.narod.ru/Ai/neiro.htm. -

 

Дата доступа:

18.12.2007.

14Нейроматематика. Книга 6: учеб. пособие для вузов / В.А. Агеев [и др.]; под общ. ред. А.И. Галушкина. - М.: ИПРЖР, 2002. - 448 с.

15Ступчак, А.Я. Аналитические технологии для прогнозирования и анализа данных // Донецкий национальный технический университет [Электронный ресурс]. - Режим доступа: http://www.uran.donetsk.ua/~masters/2000/fkita/ stupchak/oglavl.htm. - Дата доступа: 18.12.2007.

233

16 Элементы нейронных сетей [Электронный ресурс]. - Режим доступа: http://www.inmit.ni/department/database/ datamining/ 1 l/2.html. - Дата досту­ па: 18.12.2007.

К главе 3

17Лавренов, СМ. Excel: Сборник примеров и задач / СМ. Лавренов. - М.: Фи­ нансы и статистика, 2002. - 336 с.

18Мур, Дж.Х. Экономическое моделирование в Microsoft Excel / Дж.Х. Мур, Л.Р. Уэдерфорд. - М.: Издательский дом "Вильямс", 2004. - 1024 с.

Кглаве 4

19Алексеев, Е.Р. Решение задач вычислительной математики в пакетах MathCAD 12, Matlab 7, Maple 9 / Е.Р. Алексеев, О.В. Чеснокова. - М.: НТПресс, 2006.-496 с.

20 Дьяконов, В.П. Matlab 6/6.1 / 6.5. Simulink 4.5. Основы применения / В.П. Дьяконов. - М.: Солон-пресс, 2004. - 768 с.

21Иглин, СП. Математические расчеты на базе Matlab / СП. Иглин. - СПб.: БХВ-Петербург, 2005. - 634 с.

Кглаве 5

22Дьяконов, В.П. Mathematica 4.1, 4.2, 5.0 в математических и научнотехнических расчетах / В.П. Дьяконов. - М.: Солон-пресс, 2004. - 670 с.

23Прокопеня, А.Н. Решение физических задач с использованием системы Mathematica / А.Н. Прокопеня. - Брест, БГТУ, 2005. - 260 с.

Кглаве 6

24Буч, Г. Объектно-ориентированный анализ и проектирование / Г. Буч. -

СПб.: Издательство «Невский Диалект», 2001. - 558 с.

25Дейтел, X. Как программировать на С++ / X. Дейтел, П. Дейтел. - М.: ЗАО «Издательство БИНОМ», 2001. - 1152 с.

26Демидович, Е.М. Основы алгоритмизации и программирования. Язык Си / Е.М. Демидович. - Минск: Бестпринт, 2001. — 411 с.

27Луцик, Ю.А. Объектно-ориентированное программирование на языке С++ / Ю.А. Луцик, A.M. Ковальчук, И.В. Лукьянова. - Минск: БГУИР, 2003. - 202 с.

28Скляров, В.А. Язык С++ и объектно-ориентированное программирование / Мн.:Выш.шк., 1997.-478 с: ил.

29Страуструп, Б. Язык программирования С++ / Б. Страуструп. - М.: ЗАО «Издательство БИНОМ», 2004. - 1098 с.

234

Учебное издание

Батин Николай Владимирович, Богданова Ирина Феликсовна, Ковальчук Анна Михайловна и др.

Основы информационных технологий

Учебно-методическое пособие

Редактор, корректор А. А. Сычев

Подписано в печать 23. 07. 2008. Формат 60x84 1/16. Бумага офсетная. Гарнитура Таймс. Печать ризографическая. Усл. печ. 13,82 л. Уч.-изд. 12,44 л. Тираж 150 экз. Заказ 150.

ГУО «Институт подготовки научных кадров Национальной академии наук Беларуси» 220049, г. Минск, ул. Кнорина, 1. ЛИ № 02330 / 0133427

Отпечатано в РУП «Научно-практический центр Национальной академии наук Беларуси по механизации сельского хозяйства» 220049, г. Минск, ул. Кнорина, 1.

ЛЛ № 02330-0150026 от 10.05.2007 г.