Что такое универсальный класс
Перейти к содержимому

Что такое универсальный класс

  • автор:

Универсальные классы (Руководство по программированию на C#)

Универсальные классы инкапсулируют операции, которые не относятся к конкретному типу данных. Универсальные классы чаще всего используются для работы с коллекциями, такими как связанные списки, хэш-таблицы, стеки, очереди, деревья и т. д. Такие операции, как добавление и удаление элементов коллекции, по существу выполняются одинаково, независимо от типа хранимых данных.

В большинстве случаев для этого используются классы коллекций. Рекомендуется выбирать те из них, которые представлены в библиотеке классов платформы .NET. Дополнительные сведения об использовании этих классов см. в разделе Универсальные коллекции в .NET.

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

  • Типы, которые требуется обобщить с использованием параметров типа. Как правило, чем больше типов параметризовано, тем более гибким и универсальным становится ваш код. Тем не менее слишком высокая степень обобщения может отрицательно сказаться на понятности создаваемого вами кода для других разработчиков.
  • Ограничения (если требуются), которые будут применяться к параметрам типа (см. раздел Ограничения параметров типа). Рекомендуется применять максимально возможный объем ограничений, при котором вы по-прежнему сможете работать с необходимыми типами. Например, если универсальный класс будет использоваться только для работы со ссылочными типами, примените ограничение класса. Это позволит исключить случайное использование класса с типами значений и позволит использовать оператор as в отношении T , а также проверять наличие значений null.
  • Требуется ли разбивать универсальные функции между базовыми классами и подклассами. Поскольку универсальные классы могут выступать в качестве базовых классов, здесь необходимо учитывать те же принципы разработки, что и для классов, не являющихся универсальными. См. описание правил наследования от универсальных базовых классов далее в этом разделе.
  • Требуется ли реализовывать один или несколько универсальных интерфейсов. Например, при разработке класса, который будет использоваться для создания элементов коллекции на основе универсальных шаблонов, может потребоваться реализовать интерфейс IComparable , где T — это тип вашего класса.

Пример простого универсального класса можно найти в разделе Введение в универсальные шаблоны.

Правила в отношении параметров типа и ограничений влияют на поведение универсального класса, особенно в контексте наследования и доступа к элементам. Прежде чем продолжить, необходимо ознакомиться с некоторыми терминами и понятиями. Для универсального класса Node, клиентский код может ссылаться на класс путем указания аргумента типа для создания закрытого сконструированного типа ( Node ) или путем оставления параметра типа неуказанным, например при указании универсального базового класса, чтобы создать открытый сконструированный тип ( Node ). Универсальные классы могут наследоваться от конкретных, а также закрытых или открытых сконструированных базовых классов:

class BaseNode < >class BaseNodeGeneric < >// concrete type class NodeConcrete : BaseNode < >//closed constructed type class NodeClosed : BaseNodeGeneric < >//open constructed type class NodeOpen : BaseNodeGeneric

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

//No error class Node1 : BaseNodeGeneric  < >//Generates an error //class Node2 : BaseNodeGeneric <> //Generates an error //class Node3 : T <> 

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

class BaseNodeMultiple  < >//No error class Node4 : BaseNodeMultiple  < >//No error class Node5 : BaseNodeMultiple  < >//Generates an error //class Node6 : BaseNodeMultiple <> 

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

class NodeItem where T : System.IComparable, new() < >class SpecialNodeItem : NodeItem where T : System.IComparable, new()

Универсальные типы могут использовать несколько параметров типа и ограничений, как показано ниже:

class SuperKeyType where U : System.IComparable where V : new()

Открытые и закрытые сконструированные типы можно использовать в качестве параметров метода:

void Swap(List list1, List list2) < //code to swap items >void Swap(List list1, List list2) < //code to swap items >

Если универсальный класс реализует интерфейс, все экземпляры такого класса можно привести к этому интерфейсу.

Универсальные классы инвариантны. Другими словами, если входной параметр задает List , при попытке предоставить List возникает ошибка времени компиляции.

См. также

  • System.Collections.Generic
  • Руководство по программированию на C#
  • Универсальные шаблоны
  • Сохранение состояния перечислителей
  • Загадка по наследованию, часть 1

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Универсальный класс

Для обучающихся универсального класса профильное обучение организовано через формирование каждым обучающимся индивидуального учебного плана .

Под индивидуальным учебным планом (ИУП) понимается совокупность учебных предметов и элективных курсов, выбранных для освоения обучающимся из учебного плана общеобразовательного учреждения, составленного на основе федерального Базисного учебного плана.

Составляющие индивидуального учебного плана:

  1. Профильные общеобразовательные предметы – предметы повышенного уровня, определяющие направленность каждого конкретного профиля обучения (являются обязательными для учащихся, выбравших данные предметы для изучения на профильном уровне обучения).
  2. Базовые общеобразовательные предметы ( являются обязательными для всех учащихся).
  3. Не менее 3-х элективных курсов ( обязательные для посещения курсы по выбору учащихся). Элективные курсы направлены на удовлетворение индивидуальных образовательных интересов, потребностей и склонностей каждого школьника.

Этапы составления индивидуального учебного плана:

1. В 2009-2010 учебном году о бучающиеся могут выбирать следующие предметы для изучения на профильном уровне (их должно быть не менее двух):


    • математика
    • информатика
    • русский язык
    • английский язык
    • биология

    2. Остальные обязательные предметы обучающиеся изучают на базовом уровне.

    3. В 2009-2010 учебном году о бучающиеся могут выбирать следующие э лективные курсы (список приблизительный и может меняться):


      • Деловая речь, деловое письмо
      • Методы решения физических задач
      • Строение органических веществ
      • Художественная обработка древесины
      • Решение задач с параметрами
      • Дизайн в текстильных изделиях
      • Школьный университет ТУСУР (платный)

      4. В результате осуществления выбора составляется индивидуальный учебный план

      Если Вы решили обучаться в кадетском классе, то Вам необходимо:

      • Успешно сдать обязательные экзамены по завершении среденей (основной) школы (9 классов): русский язык и математика .
      • Выбрать для прохождения государственной итоговой аттестации по завершении средней (основной) школы (9 классов) и успешно сдать экзамены по тем предметам, которые выбираются для изучения на профильном уровне: информатика, английский язык или биология .
      • Собрать пакет документов (смотри страницу «Правила приема» )

      Национальный фонд подготовки кадров. Проекты в сфере информатизации образования.
      Курс подготовлен по технологии « Веб-Конструктор для образования ».

      Универсальные классы и методы

      Универсальные шаблоны вводят в .NET концепцию параметров типов, что позволяет создавать классы и методы, которые откладывают спецификацию одного или нескольких типов до тех пор, пока класс или метод не будет объявлен и создан в клиентском коде. Как пример, ниже показан класс с параметром T универсального типа. Этот класс может использоваться в другом клиентском коде, не требуя ресурсов и не создавая рисков, связанных с операциями приведения и упаковки-преобразования в среде выполнения.

      // Declare the generic class. public class GenericList  < public void Add(T input) < >> class TestGenericList < private class ExampleClass < >static void Main() < // Declare a list of type int. GenericListlist1 = new GenericList(); list1.Add(1); // Declare a list of type string. GenericList list2 = new GenericList(); list2.Add(""); // Declare a list of type ExampleClass. GenericList list3 = new GenericList(); list3.Add(new ExampleClass()); > > 

      Универсальные классы и методы сочетают такие характеристики, как возможность многократного использования, типобезопасность и эффективность, которые не обеспечивают их неуниверсальные аналоги. Универсальные типы наиболее часто используются с коллекциями и методами, которые выполняют с ними операции. Пространство имен System.Collections.Generic содержит несколько универсальных классов коллекций. Неуниверсальные коллекции, например ArrayList, не рекомендуются и поддерживаются только для обеспечения совместимости. Дополнительные сведения см. в статье об универсальных шаблонах в .NET.

      Вы также можете создавать пользовательские универсальные типы и методы для предоставления собственных универсальных решений и шаблонов проектирования, которые являются типобезопасными и эффективными. В следующем примере кода показан простой универсальный класс связанного списка для демонстрационных целей. (В большинстве случаев следует использовать класс List , предоставляемый .NET, вместо создания собственного.) Параметр типа T используется в нескольких расположениях, где обычно используется конкретный тип для указания типа элемента, хранящегося в списке. Он используется в следующих случаях:

      • в качестве типа параметра метода в методе AddHead ;
      • в качестве типа возвращаемого значения свойства Data во вложенном классе Node ;
      • в качестве типа закрытого члена data во вложенном классе.

      T доступен для вложенного Node класса. Когда экземпляр GenericList создается с конкретным типом, например GenericList , каждое вхождение T будет заменено int .

      // type parameter T in angle brackets public class GenericList  < // The nested class is also generic on T. private class Node < // T used in non-generic constructor. public Node(T t) < next = null; data = t; >private Node? next; public Node? Next < get < return next; >set < next = value; >> // T as private member data type. private T data; // T as return type of property. public T Data < get < return data; >set < data = value; >> > private Node? head; // constructor public GenericList() < head = null; >// T as method parameter type: public void AddHead(T t) < Node n = new Node(t); n.Next = head; head = n; >public IEnumerator GetEnumerator() < Node? current = head; while (current != null) < yield return current.Data; current = current.Next; >> > 

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

      class TestGenericList < static void Main() < // int is the type argument GenericListlist = new GenericList(); for (int x = 0; x < 10; x++) < list.AddHead(x); >foreach (int i in list) < System.Console.Write(i + " "); >System.Console.WriteLine("\nDone"); > > 

      Следующие примеры относятся не только к типам class , но и interface к типам и struct

      Общие сведения об универсальных шаблонах

      • Используйте универсальные типы, чтобы получить максимально широкие возможности многократного использования кода, обеспечения безопасности типов и повышения производительности.
      • Чаще всего универсальные шаблоны используются для создания классов коллекций.
      • Библиотека классов .NET содержит несколько универсальных классов коллекций в пространстве имен System.Collections.Generic. Универсальные коллекции следует по возможности использовать вместо классов, таких как ArrayList в System.Collections пространстве имен.
      • Вы можете создавать собственные универсальные интерфейсы, классы, методы, события и делегаты.
      • Универсальные классы можно ограничить, чтобы они разрешали доступ к методам только для определенных типов данных.
      • Сведения о типах, используемых в универсальном типе данных, можно получить во время выполнения с помощью отражения.

      Спецификация языка C#

      Дополнительные сведения см. в спецификации языка C#.

      См. также

      • System.Collections.Generic
      • Универсальные шаблоны в .NET

      Совместная работа с нами на GitHub

      Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

      Профильное обучение

      С 01.09.2020 во всех общеобразовательных организациях Санкт-Петербурга реализуется федеральный государственный образовательный стандарт среднего общего образования, утвержденный приказом Министерства образования и науки Российской Федерации от 17.05.2012 № 413.

      ГБОУ школа № 683 в 2021-2022 учебном году будет осуществлять образовательную деятельность, на уровне среднего общего образования (10-11 классы), обеспечивая реализацию учебных планов двух профилей обучения: технологического, социально-экономического.

      Профили обучения

      Школа, осуществляя образовательную деятельность, должна обеспечить реализацию учебного плана одного или нескольких профилей обучения. Очень часто образовательная организация выявляет предпочтения обучающихся и на основе данного анализа планирует, какие именно профили будут реализовываться в школе. Профильные общеобразовательные предметы — это курсы повышенного уровня, углубляющие базовые общеобразовательные предметы. При освоении профильных предметов деятельность учителя и ученика направлена на освоение знаний, умений, которые определены федеральным государственным стандартом среднего общего образования.

      Перечень профилей, которые может предложить школа обучающимся на среднем уровне образования следующий (п. 18.3.1 Федеральный государственный образовательный стандарт среднего общего образования (утв. Приказом Министерства образования и науки РФ от 17.05.2012 г. № 413).

      1. Естественно-научный. Профильные предметы — математика, химия, биология.
      2. Гуманитарный. Профильные предметы — русский язык и литература, иностранный язык, обществознание, история, право.
      3. Социально-экономический. Профильные предметы — математика, экономика, право, география, геометрия.
      4. Технологический профиль. Профильные предметы — математика, физика, информатика.
      5. Универсальный. Данный профиль подходит тем обучающимся, которые не определились с выбором профессии, сфера интересов ребенка не вписывается в рамки других профилей. Универсальный профиль позволяет обучающемуся ограничиться только изучением базовых предметов, не исключая углубленного изучения предметов. Требования ФГОС среднего общего образования выбрать 3–4 предмета для углубленного изучения не распространяются на универсальный профиль.

      Учебный план профиля обучения и/или индивидуальный учебный план должны содержать 11/12 учебных предметов и предусматривать изучение не менее одного учебного предмета из каждой предметной области. Общими для включения во все учебные планы являются учебные предметы «Русский язык», «Литература», «Иностранный язык», «Математика», «История» (или «Россия в мире»), «Физическая культура», «Основы безопасности жизнедеятельности», «Астрономия».

      Также учебный план профиля обучения (кроме универсального) должен содержать не менее ¾ учебных предметов на углубленном уровне изучения из соответствующей профилю обучения предметной области и (или) смежной с ней предметной области.

      В учебном плане должно быть предусмотрено выполнение обучающимися индивидуального(ых) проекта(ов). Индивидуальный проект-это обязательный элективный курс, который представляет собой особую форму организации деятельности обучающихся. Индивидуальный проект обучающиеся могут выполнять по любому направлению. Индивидуальный проект можно выполнять в течение 1–2 лет. Курирует работу по проекту работник школы или работник со стороны организации-партнера. Программа Индивидуального проекта рассчитана на 68 учебных часов. Учебный план достраивается элективными курсами профильной направленности и курсами по выбору общеразвивающей направленности.

      Отличие элективных курсов от факультативных

      П.5 ч.1 ст.34 Федерального закона «Об образовании в Российской Федерации» от 29.12.2012 №273-ФЗ закрепляет за обучающимися академическое право на выбор факультативных курсов и элективных курсов. Факультативные курсы — это необязательные курсы для данного уровня образования, профессии, специальности или направления подготовки, а элективные курсы — те курсы, которые обучающийся должен выбрать в обязательном порядке.

      Обучающийся вправе выбрать освоение наряду с учебными предметами, курсами, дисциплинами (модулями) по осваиваемой образовательной программе любых других учебных предметов, курсов, дисциплин (модулей), преподаваемых в организации, осуществляющей образовательную деятельность, в установленном ею порядке, а также преподаваемых в других организациях, осуществляющих образовательную деятельность, учебных предметов, курсов, дисциплин (модулей), одновременное освоение нескольких основных профессиональных образовательных программ (п.6 ч.1 ст.34 ФЗ «Об образовании в Российской Федерации» от 29.12.2012 №273-ФЗ).

      Элективные учебные предметы — обязательные учебные предметы по выбору обучающихся из компонента образовательного учреждения. Элективные учебные предметы выполняют функции «надстройки» профильного учебного предмета, тогда такой дополненный профильный учебный предмет становится в полной мере углубленным.

      При наличии необходимых условий и средств для организации профильного обучения, в том числе изучения элективных курсов, возможно деление классов на группы с меньшей наполняемостью.

      Как осуществляется прием в профильные классы?

      Комплектование профильных классов должно осуществляться на объективной, справедливой и прозрачной для общества основе. Образовательная организация разрабатывает локальный акт, который регламентирует особенности поступления в профильные классы. Прием обучающихся в профильные классы осуществляется приемной комиссией общеобразовательной организации. Для решения вопроса о зачислении в профильный класс выпускники 9-х классов или их родители (законные представители) представляют в общеобразовательное учреждение заявление о приеме на имя директора общеобразовательного учреждения, аттестат об основном общем образовании.

      Документы, представленные выпускниками 9-х классов или их родителями (законными представителями), регистрируются. После регистрации заявления заявителю выдается документ, содержащий следующую информацию: входящий номер заявления; перечень представленных документов и отметка об их получении, заверенная подписью секретаря или ответственного за прием документов и печатью общеобразовательного учреждения; сведения о сроках уведомления о зачислении в 10-й профильный класс; контактные телефоны для получения информации. Все представленные документы рассматриваются на заседании приемной комиссии.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *