ООП во FLASH 5


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


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

Теперь мы, как и собирались, создадим два подкласса, Circle (круг) и Square (квадрат). Но что же делает их настолько отличными от Shape (фигуры) и друг от друга, что потребовались отдельные подклассы? Наиболее очевидный ответ: они по-разному выглядят. Верно, но на этом вся сила данного аргумента и исчерпывается. В конце концов, красный квадрат отличается от синего квадрата, а круглая маска похожа на всё, что находится под ней. Фактически, пока наша форма не похожа ни на что, классы Circle и Square, скорее всего, также обречены на "бесформенность". Ведь можно же представить такой класс Circle, который работает только с формулами. Хотя, скорее всего, вы вовсе ни в чём не уверены и вам кажется, что класс Circle, в принципе, заведомо обязан быть похож на круг. А что если мы заведём другой подкласс класса Shape, класс Polygon (многоугольник), например? Можно ли по изображению многоугольника судить о его идее? Как выглядит "многоугольник", ну-ка? Разумеется, многоугольник не обязан быть визуально "похожим" на что-то, он просто должен быть чётко выражен математическими терминами, находиться в пределах неких "математических ограничений". А уж компьютеры-то как это любят!

Итак, нужно задать "математические условия" для кругов и квадратов. Не волнуйтесь, ребята, это не сложнее задачи для пятиклашки! Всем известно, что круг задаётся через точку центра и радиус, а квадраты имеют длину и ширину. *Бабах!* С этим звуком реальность врезалась в нашу теорию. Неважно, программистом какой глубины мысли вы являетесь, но, вероятно, уже создавали во Flash как круг, так и квадрат. И знаете, что у них есть позиции x и y, а также ширина и высота. Если любите думать в терминах X, Y, W, H, посмотрите на панель "Info". Эти значения есть даже у кругов. Возникает вопрос, а где радиус? Отвечаем: во Flash'е всякие там "радиусы-катеты-гипотенузы" не работают. И вы это должны бы уже знать. Круги находятся, так же как и квадраты, в условных рамках (bounding box), просто они не заполняют эту рамку по самые углы. У кругов есть и ширина и высота, а свойства X и Y представляют собой характеристики левого верхнего угла ограничивающей их рамки (точнее - точки привязки этой рамки, а такая точка может находиться и не в левом верхнем углу, а, например, в центре - прим. переводчика).




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