« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга


ПнВтСрЧтПтСбВс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
    Популярное
Поиск кода Google /* что нового? */

Цифровая подпись и развертывание общедоступной сборки

Cookies в PHP

Настройка представления с помощью словаря базы данных

Функция AccessResource

Ввод и вывод в .NЕТ

ДЕНЬ ТЕХНОЛОГИЙ MICROSOFT: "Новое поколение решений для успешного бизнеса: Windows Server 2008, SQL 2008, Visual Studio 2008".

Часть III. Поток управления

Открытые программы в Linux и их платные конкуренты в Windows

Глава 19. Решение локальных задач.




    Архив файлов



    Сообщества

    Документация

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 167
Пользователей: 0

Статьи:: Интернет технологии :: Flash :: Наследование



отправить ссылку другу версия для печати  Обсудить на форуме

Наследование



Всё, что мы делали до сих пор можно охарактеризовать, как "композиция". В нашем случае это слово означает придумывание, составление объекта из более мелких компонентов, а не урок музыки. Наверняка вы уже используете композицию в ваших программах. Прежде, чем мы двинемся дальше, давайте дадим этому понятию точное определение, дабы потом не забыть, что же это такое. Как уже было сказано ранее, это понятие часто обозначается, как "имеется" (Has a). У объекта А имеется объект В. В доме имеется кухня, у собаки имеется хвост, у мятежника имеется причина. Трудно представить себе объект, у которого или в котором ничего не имеется (то есть ничего нет), в конце концов, во всём имеется (есть) что-то, всё из чего-то состоит. Однако всегда ли это так? Как насчёт самих идей? Например, какое отношение имеет "приспособление" к "холодильнику"? Какое отношение "разводной ключ" имеет к "разводу" или к "инструменту"? Какое отношение Джеймс Дин имеет к Рональду Рейгану? К Элвису? К Че Геварре? Как только мы начинаем организовывать идеи и концепции, одних "имеющихся" понятий становится недостаточно. Теперь нам потребуется "наследование" -- понятие из разряда "являющихся" (Is a).

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

"Наследование" несложно осознать, но его трудно представить визуально. В реальном мире ничто не ведёт себя абсолютно одинаково. "Наследование", это скоре подсознательная система классификаций, если так можно выразиться. Очень просто увидеть млекопитающее, когда с ним разговариваешь, но ведь такого животного, как "млекопитающее" не существует. Есть только типы млекопитающих. Это обстоятельство, конечно же, не означает, что слово "млекопитающее" для нас бесполезно. Но ведь нет же в зоопарке клетки с надписью "млекопитающее". Раньше мы говорили об объектах, как о коробках или контейнерах. Это допустимо для "композиции", где вы помещаете одни объекты внутрь других. Однако такого рода определения не работают при использовании "наследования". Чтобы представить себе "наследование", нам понадобится немного другая модель.

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

  1. Животное, млекопитающее, собака, пудель
  2. Компьютер, материнская плата, процессор, микросхема
  3. Артист, певец, рок-звезда, Элвис
  4. Дом, кухня, раковина, пробка
  5. Книжная лавка, компьютерный отдел, стенд "Flash", книга по actionscript
  6. Книга, книга по компьютерной тематике, книга о Flash, книга по actionscript
  7. Книга, глава, параграф, предложение, слово
  8. Континент, страна, регион, город/деревня, улица, дом
  9. Азия, Китай, Сиань, ЗенгКуоАн, 15
  10. http://www.macromedia.com/support/flash/
  11. Приложение, документ, полоса прокрутки, указатель
  12. Окно, диалоговое окно, сообщение об ошибке, очередь на печать
  13. Еда, десерт, пирог, банановый крем
  14. 01 (204) 435-8301

Теперь давайте вместе подробно рассмотрим эти примеры (только не будем на них особенно задерживаться!)

 

  1. Животное, млекопитающее, собака, пудель - Наследование.
    Пудель - это собака, собака - это млекопитающее, млекопитающее - это животное. Какие свойства добавляются на каждом уровне? Попробуйте "прикрепить" вот эти: шерсть, глаза, дикий, домашний.
     
  2. Компьютер, материнская плата, процессор, микросхема - Композиция.
    В компьютере есть материнская плата, на материнской плате есть процессор и так далее. Если у компьютера есть кнопка включения, есть ли она у процессора? (только ради бога не говорите, что у процессора их 5 миллиардов!). А теперь попробуйте ответить на подобный вопрос, если речь пойдёт о животных и собаках.
     
  3. Артист, певец, рок-звезда, Элвис - Наследование.
    Элвис был рок-звездой, рок-звезда - это певец, певец - это артист. А все ли рок-звёзды - певцы? И куда в этом списке поместить актёров? Мы видим, что "Элвис" - это пример, а всё остальное - классы.
     
  4. Дом, кухня, раковина, пробка - Композиция.
    В кухне есть раковина, а раковина домом не является (разве только для тараканов в студенческом общежитии). Теоретически, можно вырезать кухню и утопить её в океане. Но кухня останется кухней. Это объект в доме.
     
  5. Книжная лавка, компьютерный отдел, стенд "Flash", книга по actionscript - Композиция.
    Каждый следующий физически находится в предыдущем. Можно, конечно, вообразить взаимообмен компонентов, например, устроить на кухне (которая давно на дне океана) компьютерный отдел. Огромное преимущество использования организованных объектов заключается в том, что один и тот же объект можно использовать в нескольких различных местах.
     
  6. Книга, книга по компьютерной тематике, книга о Flash, книга по actionscript - Наследование.
    Все они являются типами или подтипами. Книга по actionscript - это книга по компьютерной тематике. А примеры в этой цепочке есть? Какой пример вы бы добавили?
     
  7. Книга, глава, параграф, предложение, слово - Композиция.
    Этот пример с хитринкой. Перечисленные компоненты не всегда физические. Конечно, вы можете дотронуться до параграфа в любой книге, но, тем не менее, если мы говорим о книге вообще, то "наследование" не подходит. В книгах есть главы, предложения состоят из слов. Такая логика подходит и для предыдущих примеров на "Композиция", однако, в данном случае это более наглядно. На кухнях бывают раковины, и в моей кухне есть раковина. В обоих случаях раковина - это компонент кухни. Не путайтесь!
     
  8. Континент, страна, регион, город/деревня, улица, дом - Композиция.
    Хотя на этот раз абстрактное мышление просто необходимо, это всё же композиция. Совершенно очевидно, что улица - это не разновидность страны. Таким образом одни концепции могут быть компонентами других концепций. Внутри контейнера "континент" находятся "страны". В свою очередь "страны" содержат "регионы"...
     
  9. Азия, Китай, Сиань, ЗенгКуоАн, 15 - Композиция.
    Такая же иерархия, как и в предыдущем случае, только здесь мы видим конкретные примеры. Каждая концепция теперь снабжена объектом, но объекты эти являются компонентами и содержатся один в другом. На континенте Азия есть страна Китай. В стране Китай есть город Сиань.
     
  10. http://www.macromedia.com/support/flash/ - Композиция.
    В домене macromedia.com есть раздел под названием support. А в нём вы найдёте что-нибудь по Flash. Сюда вы можете обратиться, если ничто другое не помогает. Здесь вы можете найти копию справочного руководства. Подумайте, что представляет собой структура каталогов на вашем жёстком диске - "Композиция" или "Наследование"? И любая ли система каталогов может считаться композицией? Подумайте хорошенько.
     
  11. Приложение, документ, полоса прокрутки, указатель - Композиция.
    Да, программы объектно-ориентированы... в документах есть полоса прокрутки, на полосе прокрутке есть указатель (это такая маленькая штука, которую вы тянете мышкой)...
     
  12. Окно, диалоговое окно, сообщение об ошибке, очередь на печать - Наследование.
    Да, программы тоже используют наследование. Очередь на печать - это тоже разновидность окна, равно как и остальные (диалоговое окно и сообщение об ошибке).
     
  13. Еда, десерт, пирог, банановый крем - Наследование.
    Пирог - это еда, десерт - это еда. Обратите внимание, что структура древоподобна. Просто помните, что десерт может быть разный, равно как и пирог. Все эти структуры древоподобны.
     
  14. 01 (204) 435-8301 - Композиция.
    Это всё равно, что сказать "Северная Америка > Манитоба > Майами > мой старый телефонный номер". Телефонная система очень похожа на почтовую. Чтобы вас найти, здесь используется строго структурированный каталог имён.
     

Наследование, как и объектно-ориентированное программирование вообще, становится необходимым инструментом, когда у вас появляется достаточно классов подобных друг другу и они начинают как бы само-организовываться (мечты, мечты!). Методика в любом случае достойна упоминания, потому что многие программы на основе Flash довольно просты и невелики в объёмах. Более того, нагромождать многочисленные уровни наследования для того лишь, чтобы привязать кнопки к страницам, это абсурд. Если же вы способны написать подобную маленькую программу, вы почувствуете себя начальником почтового отделения в небольшой деревеньке. Чтобы доставить почту, вам не нужно ничего, кроме имени получателя. В случае каких-либо изменений, если, например, кто-то приехал в город или изменил место жительства или же улица поменяла название, у вас есть возможность просто запомнить всё это. Вы станете смеяться над почтальонами больших городов, которые принимают всерьёз все эти нудные и непонятные правила и часами спорят из-за незначительного изменения в списке почтовых индексов. С другой стороны, ведь почта так и так доходит до адресата, и в больших и в малых населённых пунктах. Но до тех пор, пока вы знаете, что ваша деревенская система отличается от городской, вы можете быстро и чисто справляться со своими задачами, отвечая возрастающим потребностям, это факт. В конце концов, вам не нужно разделять млекопитающих до бесконечности - от собак до атомов. Одно из первостепенной важности умений в объектно-ориентированном программировании - умение найти золотую середину между сложностью и завершённостью (кстати, перед подобной же дилеммой стоит и автор, которому нужно написать короткую главу об ООП в ActionScript!).




Рубрика: Flash




VivaMP - инструмент для OpenMP.

OpenMP

Инструмент для программистов VivaMP предназначен для помощи разработчикам параллельных программ на базе OpenMP. В статье приведен краткий обзор программного продукта.


Подробнее... | Рубрика: OpenMP | Добавлено: 05.12.2008

Создаем контекстно-зависимое WPF-приложени....

Windows 7

Начинаем цикл публикаций, призванных помочь начинающим программистам в создании контекстно-зависимых приложений для Windows 7. Об этом много говорили на PDC да и мы неоднократно писали о этом новом классе приложений. Пользователи Windows 7 build 6801 могли заметить появление в гаджете погоды опции автоматического определения местоположения компьютера. И сегодня у вас появилась уникальная возможность попробовать себя в создании подобных приложений.


Подробнее... | Рубрика: Windows 7 | Добавлено: 05.12.2008

Windows Vista SP2: что внутри и что важно?.

Windows Vista

В связи с началом программы Customer Preview Program (CPP) для Windows Vista® Service Pack 2 (SP2) хотелось бы вкратце рассказать об основных особенностях этого пакета, а также призвать вас к его загрузке и тестированию. Windows Vista SP2 представляет собой традиционный пакет сервисных обновлений, включающий все накопительные обновления безопасности, выпущенные с момента релиза SP1 в марте 2008 года. Кроме того, Windows Vista SP2 добавляет поддержку новых типов устройств и развивающихся стандартов, которые обретут популярность уже в ближайшее время, и включает все хотфиксы, обнаруженные через программу улучшения качества ПО (CEIP).


Подробнее... | Рубрика: Windows Vista | Добавлено: 05.12.2008

Остальные статьи:

Вышел MySQL 5.1.30, первый стабильный рели...
Тестирование параллельных программ
Архитектура AMD64 (EM64T)
Платформа 2009. Определяя будущее
Windows Vista Bridge Sample Library - упра...
Оптимизация 64-битных программ
Подгрузка через AJAX HTML-кода, содержащег...
Обзор нового релиза самой мощной Ajax библ...
Firebug 1.3 и 1.4 alpha — что нового и инт...
Релиз Microsoft Silverlight 2.0. Что новог...
XML документация в C#
Курсоры в MySQL 5
Microsoft опубликовала подробности о сесси...
Microsoft делится подробностями о том, что...
Тестируем новый javascript от нового брауз...
MySQL Query Cache
Использование провайдеров компиляции в As...
Чего мы ждем от C# 4.0
Delphi 2009 и C++Builder 2009
Джоэл Спольски и Джеф Этвуд запустили новы...


Цитата дня (все,добавить):

Портал фрилансеров

работа на дому


    Рубрикатор

Программирование

C/С++
Обучение
Windows API
XAML
Моделирование
Паттерны
Visual Basic 7 .NET
WxWidgets
Функции WinApi
Функции С++
Разработка под Mac OS
Eiffel
Visual Studio 2008
UI дизайн
Алгоритмы
Конкурсные статьи
Turbo Pascal
Visual Studio
CASE-средства
Visual Studio 2005
Без VCL
Delphi
Тех. документация
Тестирование
Software Testing
ООП
TCP/IP
Google Android
Windows Installer
.NET Framework
Драйвера
C# C Sharp
Справка
Проектирование
Информ. системы
Visual Basic
Assembler
Оптимизация кода
Gtk+
Компоненты
Реинжиниринг
Управление проектами
Extreeme programming
Lotus Notes
Алгебраическое проектирование


Интернет технологии

PHP
Perl
ASP
WAP
Cookies
SSI
CGI
Web Servers
VB Script
DNS
CSS
XML
Html
Java Script
Java2ME
Firewall
Flash
.htaccess
Apache
VRML
Протоколы
Поисковые системы
Технология JAVA
Учебник по PHP
Учебник по JavaScript
Учебник по XML
Java Q&A
AJAX
DHTML
XHTML
Dreamweaver
Web 2.0
Python
Вебмастеру
Cisco
Ruby on Rails
Silverlight

Базы данных

Access
InterBase
MySQL
Oracle
ADO .NET
Основы SQL
Учебник по Access 2002
MS
Microsoft FoxPro
Доступ к данным
XML в MS SQL Server 2000
ODBC и MyODBC
Обучение
Caché
DB2
PostgresSQL
Sybase
Теория
Хранилища данных
Безопасность
Реляционные данные
MySQL и mSQL

Остальное:

Разное
Обзоры книг
Безопасность
Графика и дизайн
Юмор
Linux
Фракталы
Microsoft Axapta
Многоядерность
Сети
Microsoft Office
Работа
MS-DOS
Криптография
Графика и игроделание
Новости SDK
Системы защиты
Учебник по AutoCad
CVS
Windows XP
Windows Server 2003
Windows Vista
Windows 7
Мероприятия