Netencyclo, The wikipedia mirror - свободную энциклопедию, которую может редактировать каждый : Обобщённое программирование

- Обобщённое программирование -

Обобщённое программирование :

Обобщённое программирование

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

Обобщённое программирование — это парадигма программирования, заключающаяся в написании алгоритмов, которые можно применять к различным типам данных. В том или ином виде поддерживается разными языками программирования. Возможности обобщённого программирования впервые появились в 70-х годах в языках CLU и Ada, а затем во многих объектно-ориентированных языках, таких как C++, Java, D и языках для платформы .NET.

Содержание

[править] C++

Основная статья: Шаблоны C++

В языке C++ обобщённое программирование основывается на понятии «шаблон», обозначаемом ключевым словом template. Широко применяется в стандартной библиотеке C++ (см. STL), а также в сторонних библиотеках boost, Loki. Большой вклад в появление развитых средств обобщённого программирования в C++ внёс Александр Степанов.

[править] Пример

Функция, возвращающее большее значение из двух.

template <typename T> T max(T x, T y)
{
    if (x < y)
        return y;
    else
        return x;
}

[править] Java

Java предоставляет средства обобщённого программирования, синтаксически основанные на C++, начиная с версии J2SE 5.0. В этом языке имеются generics или «контейнеры типа T» — подмножество обобщённого программирования.

[править] .NET

На платформе .NET средства обобщённого программирования появились в версии 2.0.

[править] Пример на C#

interface IPerson {
  string GetFirstName();
  string GetLastName();
}
class Speaker {
  public void speakTo<T>(T person) where T : IPerson {
    string name = person.GetFirstName();
    this.say("Hello, " + name);
  }
}

[править] D

В языке «D» средства обобщённого программирования значительно эволюционировали в сравнении с С++, как в процедурной так и в объектно ориентированной составяющей. Значительно проще стало и лингвистическое представление.

[править] Пример рекурсивной генерации на основе шаблонов D

// http://digitalmars.com/d/2.0/template.html
template Foo(T, R...) // T - тип, R - набор типов
{
    void Foo(T t, R r)
    {
	writefln(t);
	static if (r.length)	// if more arguments
	    Foo(r);		// do the rest of the arguments
    }
}
 
void main()
{
    Foo(1, 'a', 6.8);
}
 
/+++++++++++++++
 prints:
 1
 a
 6.8
 +++++++++++++++/

Обобщённое программирование - Избранная статья

Обобщённое программирование - Знаете ли вы, что…

© 2008 Netencyclo - Netencyclo Заглавная страница - Политика конфиденциальности - Отказ от ответственности - Program Policies
Netencyclo, the Wikipedia mirror : the biggest multilingual free-content encyclopedia on the Internet. Содержимое доступно в соответствии с GNU Free Documentation License. All Wikipedia content is licensed under the GNU Free Documentation License (see details). Content on this web site is provided for informational purposes only. We accept no responsibility for any loss, injury or inconvenience sustained by any person resulting from information published on this site. We encourage you to verify any critical information with the relevant authorities.