Полиморфизм
Полиморфизм (от др.-греч. πολύς — «многочисленный» и μορφή — «форма, вид») — это способность вещества, материала, биологического вида или программного кода существовать в нескольких различных формах или состояниях, сохраняя при этом свою фундаментальную сущность. В зависимости от области применения термин имеет различные конкретные значения, наиболее распространённые из которых относятся к кристаллографии, биологии и информатике.
Полиморфизм в кристаллографии и материаловедении
В кристаллографии полиморфизм — это способность твёрдого вещества кристаллизоваться в двух или более кристаллических решётках при одинаковом химическом составе. Разные полиморфные модификации одного и того же вещества называются полиморфами. Они различаются расположением атомов, молекул или ионов в пространстве, что приводит к разным физическим и химическим свойствам, таким как плотность, температура плавления, твёрдость, оптические характеристики и растворимость.
История открытия
Явление полиморфизма впервые было систематически изучено в XIX веке. В 1832 году немецкий химик Эйльхард Мичерлих обнаружил, что некоторые соединения могут образовывать кристаллы разной формы, и ввёл термин «полиморфизм». Классическим примером является углерод, который существует в виде графита (гексагональная решётка) и алмаза (кубическая решётка), а также в виде более редких модификаций — лонсдейлита, фуллеренов, графена и углеродных нанотрубок.
Классификация полиморфных модификаций
Полиморфные модификации подразделяются на два основных типа:
- Энантиотропные — стабильные в определённых интервалах температур и давлений, при изменении которых они обратимо переходят друг в друга. Например, кварц (α-кварц) при нагревании выше 573 °C переходит в β-кварц.
- Монотропные — одна из модификаций является метастабильной при всех условиях, и переход в стабильную форму необратим. Пример: парацетамол имеет две полиморфные формы, из которых одна (форма II) является метастабильной и при нагревании переходит в стабильную форму I.
Примеры полиморфов
- Карбонат кальция (CaCO₃) — существует в виде кальцита (тригональная сингония), арагонита (ромбическая) и фатерита (гексагональная). Кальцит стабилен при нормальных условиях, арагонит — метастабилен.
- Диоксид кремния (SiO₂) — имеет более десяти полиморфных модификаций, включая кварц, тридимит, кристобалит, коэсит и стишовит. Последние две образуются при высоких давлениях в мантии Земли.
- Лед — известен в 18 кристаллических модификациях (лед I, II, III и т. д.), различающихся структурой и плотностью. Обычный лёд (Ih) имеет гексагональную решётку, а при высоких давлениях образуются кубические и другие формы.
Значение в материаловедении и фармацевтике
Полиморфизм имеет критическое значение в производстве лекарственных препаратов. Разные полиморфы одного и того же активного вещества могут обладать различной биодоступностью, растворимостью и стабильностью. Например, полиморфная форма II ритонавира (противовирусный препарат) оказалась менее растворимой, чем форма I, что привело к проблемам с эффективностью лекарства. В металлургии полиморфные переходы (например, α-железа в γ-железо при нагреве) лежат в основе термической обработки стали.
Полиморфизм в биологии
В биологии полиморфизм — это существование в пределах одного вида двух или более чётко различимых морфологических форм (фенотипов), не связанных с возрастными или половыми различиями. Полиморфизм может быть генетическим (обусловленным разными аллелями генов) или экологическим (вызванным средой).
Генетический полиморфизм
Классическим примером является окраска раковин у наземных улиток Cepaea nemoralis. В популяциях встречаются особи с жёлтой, розовой и коричневой окраской, а также с разным числом полос. Этот полиморфизм поддерживается естественным отбором, поскольку разные формы по-разному заметны для хищников на фоне разной растительности.
Другой пример — группы крови человека (система AB0). Наличие трёх аллелей (A, B, 0) в гене, кодирующем фермент гликозилтрансферазу, приводит к четырём фенотипам (A, B, AB, 0). Этот полиморфизм, вероятно, поддерживается устойчивостью к некоторым инфекционным заболеваниям.
Полиморфизм насекомых
У общественных насекомых (муравьи, пчёлы, термиты) полиморфизм проявляется в разделении на касты: рабочие особи, солдаты, матки и трутни. У муравьёв-листорезов Atta рабочие особи различаются по размеру головы и челюстей, что связано с выполнением разных функций (резание листьев, уход за грибницей, защита гнезда). У медоносных пчёл (Apis mellifera) матка и рабочие особи развиваются из одинаковых яиц, но разная диета (маточное молочко) приводит к развитию разных фенотипов.
Полиморфизм растений
У растений полиморфизм часто проявляется в форме листьев (гетерофиллия). Например, у стрелолиста обыкновенного (Sagittaria sagittifolia) подводные листья имеют лентовидную форму, а надводные — стреловидную. У водного лютика (Ranunculus aquatilis) листья на поверхности воды — округлые, а под водой — рассечённые на нитевидные доли.
Полиморфизм в информатике
В программировании полиморфизм — это свойство объектно-ориентированных языков (и некоторых других парадигм), позволяющее объектам разных классов обрабатывать данные через единый интерфейс. Термин был введён в 1980-х годах в рамках развития объектно-ориентированного программирования (ООП).
Виды полиморфизма
- Параметрический полиморфизм — реализуется через шаблоны (templates) в C++ или дженерики (generics) в Java и C#. Функция или класс может работать с данными любого типа, задаваемого параметром. Например, функция
max(a, b)может сравнивать числа, строки или любые объекты, поддерживающие оператор сравнения. - Полиморфизм подтипов (включения) — основан на наследовании. Объекты производных классов могут использоваться вместо объектов базового класса. Например, если есть класс
Фигурас методомплощадь(), то объекты классовКругиПрямоугольникмогут быть вызваны через указатель наФигура, и каждый из них вычислит площадь по своей формуле. - Ad-hoc полиморфизм — реализуется через перегрузку функций (overloading) или операторов. Одна и та же функция может иметь несколько реализаций для разных типов аргументов. Например, оператор
+может складывать числа, строки или векторы. - Утиная типизация — форма полиморфизма, характерная для динамически типизированных языков (Python, JavaScript). Если объект ведёт себя как утка (ходит как утка и крякает как утка), то он считается уткой. То есть наличие метода определяется во время выполнения, а не на этапе компиляции.
Примеры реализации
В языке Java полиморфизм подтипов демонстрируется так: ``java abstract class Animal { abstract void sound(); } class Dog extends Animal { void sound() { System.out.println("Гав"); } } class Cat extends Animal { void sound() { System.out.println("Мяу"); } } // Вызов: Animal a = new Dog(); a.sound(); // Выведет "Гав" ` В C++ параметрический полиморфизм реализуется через шаблоны: `cpp template <typename T> T max(T a, T b) { return (a > b) ? a : b; } ``
Значение в программировании
Полиморфизм позволяет писать более гибкий и переиспользуемый код. Он лежит в основе таких паттернов проектирования, как Стратегия, Фабричный метод, Наблюдатель. Без полиморфизма невозможно было бы создавать библиотеки и фреймворки, работающие с произвольными типами данных.
Полиморфизм в других науках
В химии термин «полиморфизм» иногда используется как синоним «аллотропии» для простых веществ, хотя аллотропия относится к разным формам одного элемента (например, O₂ и O₃ для кислорода), а полиморфизм — к разным кристаллическим структурам одного соединения.
В лингвистике полиморфизм — это способность языковой единицы (морфемы, слова) иметь несколько вариантов (алломорфов) в зависимости от фонетического или грамматического контекста. Например, в русском языке приставка «раз-» может выступать как «раз-», «рас-», «разо-» (разбить, расписать, разойтись).
Источники
- Бернал Дж. Д. Кристаллография. — М.: Мир, 1965. — 450 с.
- Гилберт С. Ф. Биология развития. — М.: Мир, 1993. — Т. 1. — 320 с.
- Страуструп Б. Язык программирования C++. — М.: Бином, 2011. — 1136 с.
- Эккель Б. Философия Java. — СПб.: Питер, 2019. — 1168 с.
- Холл А. Д. Полиморфизм в фармацевтике // Химия и жизнь. — 2005. — № 3. — С. 12–17.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →