ооп и полиморфизм
Feb. 12th, 2007 09:04 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Некоторое время назад, когда ООП было единственным политически корректным приемом программирования, программисту полагалось знать три столпа объектно-ориентированной религии:
- наследование
- инкапсуляция
- полиморфизм
Нынче жизнь стала сложнее, см. википедию - ООП включает "абстракцию", "классы", "объекты".
Я хочу сказать, что сам-то по себе полиморфизм никакого отношения к ООП не имеет. В ООП применяется только один вид полиморфизма, т.наз. ад-хок (см вики) -method operator overloading (see wiki). Когда для разных классов (или для разных типов; в ООП это всё одно и то же) один и тот же идентификатор переопределяется в "конкретных классах".
А вот более сильный вид полиморфизма, параметрический - отсутствует ("как класс"). В джаве, объектном языке, он присутствует, в generics: в коллекциях, к примеру, когда тип элемента коллекции или специфицируется, или выводится. Это не имеет никакого отношения к ООП, и, к примеру, добавлено в джаву потому только, что авторы смогли найти способ расширить джаву таким образом. Выведя её с уровня простого "объектно-ориентированного языка" на уровень выше.
Если задуматься, то на самом-то деле, как только мы введем коллекции в язык, так мы где-то уже выходим за пределы ООП. Нас уже начинают интересовать вопросы type inference, covariance vs contravariance, и т.д. Просто как-то эти вопросы ещё не стали мейнстримом. Ну, с другой стороны, нынче ведь вообще затишье.
- наследование
- инкапсуляция
- полиморфизм
Нынче жизнь стала сложнее, см. википедию - ООП включает "абстракцию", "классы", "объекты".
Я хочу сказать, что сам-то по себе полиморфизм никакого отношения к ООП не имеет. В ООП применяется только один вид полиморфизма, т.наз. ад-хок (см вики) -
А вот более сильный вид полиморфизма, параметрический - отсутствует ("как класс"). В джаве, объектном языке, он присутствует, в generics: в коллекциях, к примеру, когда тип элемента коллекции или специфицируется, или выводится. Это не имеет никакого отношения к ООП, и, к примеру, добавлено в джаву потому только, что авторы смогли найти способ расширить джаву таким образом. Выведя её с уровня простого "объектно-ориентированного языка" на уровень выше.
Если задуматься, то на самом-то деле, как только мы введем коллекции в язык, так мы где-то уже выходим за пределы ООП. Нас уже начинают интересовать вопросы type inference, covariance vs contravariance, и т.д. Просто как-то эти вопросы ещё не стали мейнстримом. Ну, с другой стороны, нынче ведь вообще затишье.
no subject
Date: 2007-02-13 02:51 am (UTC)джаве ещё шагать и шагать, это верно. только непонятно, зачем, если в сишарпе есть и lambda expressions, и type inference, и lazy evaluation...
http://tomasp.net/articles/csharp3-concepts.aspx
no subject
Date: 2007-02-13 04:07 am (UTC)no subject
Date: 2007-02-13 07:01 pm (UTC)C# стандартизован гораздо раньше джавы - несмотря на то, что появился позже. см., например, сюда: http://www.ecma-international.org/publications/standards/Ecma-334.htm
no subject
Date: 2007-02-14 03:32 pm (UTC)