Информация
- В рейтинге
- Не участвует
- Откуда
- Москва и Московская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Директор по маркетингу, Маркетинговый аналитик
Ведущий
Git
Python
Docker
MySQL
Nginx
PHP
Redis
Yii framework
CMS «1С-Битрикс»
Отсутствие возможности множественного наследования.
Конструктор базового класса не вызывается по умолчанию из конструктора наследника.
Следствием отсутствия строгой типизации является отсутствие возможности перегрузки функций.
В PHP 5 есть возможность указать тип аргумента функции (только для классов и массивов). Если переданный аргумент не будет соответствовать требуемому типу, возникнет ошибка и функция вызвана не будет.
Отсутствие нормального определения виртуальных свойств и методов класса (свойств, которые имеют геттеры и сеттеры).
Открытость классов.
Смешение статических и нестатических методов и свойств.
Объектно-ориентированные языки поддерживают создание структур с большим количеством связующего кода и сложными уровнями. Это может оказаться полезным в случае, если предметная область является действительно сложной и требует множества абстракций, и вместе с тем такой подход может обернуться неприятностями, если программисты реализуют простые вещи сложными способами, просто потому, что им известны эти способы и они умеют ими пользоваться.
Эрик. С. Реймонд. Искусство программирования для UNIX.
кварк
ядро
атом
молекула
супермолекула
фермент
клетка
орган
организм
социальная группа
При моделировании такой системы очень велик соблазн в целях производительности конечной системы срезать углы. Т.е для управления социальной группой не человека управленца вывести, а орган, который не будет являться организмом, но зато его создать проще и он впрыскивает нужные ферменты непосредственно в мозг индивидумов. Да быстрее, да эффективнее - но ошибок при такой архитектуре будет больше, а масшатбируемости меньше. Для того, чтобы снизить соблазн вводятся интерфейсы, абстрактные классы и полиморфизм (последний преследуем немного другие цели).
ООП в PHP - это копия объектно-ориентированной модели Java, он просто скопирован и всё, а сам язык во многом копирует Perl - а это противоречивые технологии. ООП введён для снижения сложности монолитных графических программ и библиотек, а Perl и PHP для снижения сложности CLI-интерфесных прогрмм (интерфейс командной строки). UNIX и ООП - это несовестимые вещи, первый преследует разделеление сложности на уровне мелких взаимодействующих программ, каждая из которых выполняет свои цели, а второй разделение монолитных программ и библиотек, больше характерных для графического интерфейса, принятого в среде Windows и Macintosh.
Я могу привести 1000 примеров удачного применения ООП в Windows, но почти ни одного в PHP-программировании - философия разная...
насчет этого не уверен тоже
# Методы в производных классах работают быстрее, чем они же, определённые в базовом классе.
А так все супер, а насчет ООП - какой смысл делать ОО например скрипт который забирает тИЦ с Яндекса? Вещь одноразовая - написал и забыл, ООП хорошо использовать в больших проектах, для маленьких скриптов это просто глупо будет и все, достаточно модульного подхода (время паскаля еще не прошло) =)