ООП во FLASH 5


Настоящий Подкласс (Subclass) - часть 3


Здесь возникает еще один аспект реальности: как Круги, так и Квадраты имеют ширину и высоту, унаследованные от класса геометрических фигур. Вспомните учебник пятого класса: эти величины должны быть одинаковыми и для круга, и для квадрата. Вот вам и прекрасный шанс для использования OO, переопределите метод setWidth и одновременно с шириной установится высота, и наоборот. Метод setSize может быть перекрыт и второй параметр будет проигнорирован. Будет логично предположить, что Квадрат и Круг могут наследовать типовые характеристики от Прямоугольника и Эллипса, являясь их частными случаями (квадрат это тот же прямоугольник, если помните). Что ж, чудесно. Теперь можно и выпить. Алкоголь избавит нас от подсознательного ощущения, что здесь что-то не так... Такое вот "мастерское" использование перекрытых методов кажется вполне достаточным. Но это только кажется. В методах скрывается гораздо большее.

А для чего, собственно, снова задавать подкласс фигуры? Мы хотим сделать небольшую программку, которая создаёт фигуры и позволяет перетаскивать их туда-сюда. Несомненно, нам хочется разных типов форм, но в качестве отправной точки круги и квадраты выглядят вполне логично. И снова, если присмотреться, а не являются ли для Flash круги и квадраты одним и тем же? То бишь мувиклипами с графическими данными внутри? Копнём глубже, так ли уж нам важно наличие радиуса у круга? Нужно ли нам вообще это знать? Ведь не для разрисовки же пиксел за пикселом, в самом деле?! Может, это нужно для hitTesting'а, но для этого есть кнопки, свойство hitTest или даже какой-нибудь dropTarget для красоты... Не будем выделять что-то одно, но есть ли что-нибудь ещё?

При появлении первых же сомнений правильнее всего возвращаться к истокам. "Ты человек, твоё предназначение на земле размножаться". Ну, может, предназначение человека и не только в этом... Для вас, как для разработчика классов, главная цель, выяснить - "что может (олуха) пользователя этих классов осчастливить". Для разработчика приложения (использующего классы), главное - "что надо сделать, чтобы осчастливить (законченного придурка) пользователя приложения". Для конечного пользователя главное - "потёр две дощечки друг о друга - добыл огонь". Сейчас мы "разработчики классов". Ну и чего же хочет пользователь этих классов? Есть хорошее упражнение, чтобы выяснить ответ, попробуйте представить, что задача решена и решена на "отлично" и напишите некий код, использующий это:




Начало  Назад  Вперед



Книжный магазин