Объектно-ориентированное мышление
|
Предисловие Те, кто не читал моих предыдущих статей, обязательно прочитайте
statement of purpose (В вольном переводе: "Для
чего это нужно" - Прим. пер.). В этом месяце, мы будем
обсуждать объектно-ориентированное мышление. Для тех, кто хочет видеть все
серии и информацию о будущих статьях, посмотрите
сюда. Для тех, кто ищет хорошие ресурсы о Squeak, вот
несколько хороших. Цитата дняReason never changed a man's opinion which by reason he never acquired. Oбъектно-ориентированное мышлениеЕсли вы только-только пришли в объектно-ориентированное (OO) программирование, ты вскоре вы поймете, что для успешного решения проблем и задач, вам придется изменять свой стиль мышления. В этом месяце мы обсудим некоторые вещи, которые полезно помнить при работе с ОО языками программирования. Конец линейного мышления По моим наблюдениям -- это первое препятствие, о которое
спотыкается множество людей. Они привыкли к программам, содержащим, некоторого
рода, функцию main(), и когда они попадают в Smalltalk, их пугает отсутствие
линейного начала, середины и конца чего-либо. Важно понять, что Smalltalk
работает с группами сотрудничающих между собой объектов. Вам лишь нужна
входная точка к вашей программе. Это как будто вы открываете окно, в котором,
в свою очередь, вы редактируете свое изображение, например. Выбор решений и командыЭто, как мне кажется, наиболее глобальная разница между ОО программированием и обычным процедурным. В процедурном программировании обычно мыслят в категориях выбора решений. Например:
Основной проблемой такого стиля программирования является то,
что вам приходится выполнять однотипные выборы в разных частях программы.
Когда ваши требования меняются, приходится изменять условия в разных местах
программы.
Не волнуйтесь о деталях Однажды я слышал, что Алан Найт (Alan Knight) отметил, люди
берутся изучать Smalltalk, если на их вопрос: "Как работает Transcript :
'HELLO WORLD'", ответить: "Меня это не волнует". Извечная тема для
новичков в Smalltalk - это четко знать, как что работает, вплоть до всех методов
шаг за шагом вызываемых вплоть до последней библиотеки. Это связано с линейным
мышлением, при котором вам нужно знать и понимать, как происходит выполнение программы.
Если вы обнаруживаете, что вы копаетесь в деталях классов, то, вероятно, вы продолжаете
думать линейно. Упрощение инкапсуляцией Пробуйте группировать данные вместе с соответствующими операциями
в объект. Если вы работаете напрямую с данными объекта -- вы нарушаете
инкапсуляцию. Если вы выполняете что-то вроде: Объект аАтрибут аЧастьАттрибута
делайЭто, вы нарушаете инкапсуляцию. Повторное применениеСуществует изобилие возможностей повторного использования, и не только из традиционных мест ...через библиотеку классов Перед тем как писать что-либо, стоить глянуть в библиотеку
классов -- быть может это уже сделал кто-то за вас. Изобретение колеса
определенно не объекто-ориентировано и просто пустая трата времени. ...с помощью дополнительного кодаSmalltalk имеет богатую историю и большую пользовательскую аудиторию. Так что весьма вероятно, что существует свободный или открытый код, необходимый вам. Просматривайте сайт UIUC repository, ищите в веб и спрашивайте в группах новостей. ...с помощью ответственностей Если что-либо не является вашей ответственностью, тогда не
делайте этого. Обратно, избегайте ответственности, как только возможно (применяйте
только соответствующие ответственности). Вставляя только те ответственности,
которые нужны, тогда вы вероятно сможете их использовать еще где-то в программе.
...при помощи наследования Наконец мы добрались до наследования. Я оставил это
напоследок, потому как (по моему мнению) чересчур разрекламировано и люди нередко
злоупотребляют чрезмерно глубоким наследованием в классах. Распределение ответственностей Наблюдайте за разрастанием вашей системы -- вы можете это
увидеть, если нарисуете диаграмму вашей программы, а у вас получится тысяченожка. Это
значит, что у вас слишком много ответственностей на объект. Вам следует
попробовать как-нибудь перегруппировать объекты. Мелодичный Squeak(Игра слов: Squeak - "скрип" и название программы. - Прим. пер.) В этом месяце вышел релиз Squeak 3.0! :-) Чтобы быть как можно более полным, в описании я исхожу из предположения, что вы хотели бы запускать Squeak в Windoze и Linux. Для такой установки вам потребуются права пользователя root. Шаг 1: Загрузка Squeak 3.0С FTP сайта ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/3.0 загрузите:
Шаг 2: Установка в каталог запускаЯ пологаю, что точка монтирования вашего Windoze суть /windoze. Примечание: если вы не хотите/не имеете в вашей системе двойной загрузки, можете изменить установочный путь так, как вам удобно, например: ~myuserid/squeak3, после чего удалите следующие файлы: NPSqueak.dll, Squeak.exe, SqueakFFIPrims.dll.
Шаг 3: Установка виртуальной машины для linuxВсе это действительно очень просто -- даже если вы никогда и ничего в своей жизни не прораммировали и не компилировали. Вот необходимые шаги:
Шаг 4: Запуск Squeak :-)
...Запуск Squeak под управлением Windoze, оставляется читателю, как упражнение ;-) ОбзорПосле первого запуска, я был приятно удивлен новым графическим интерфейсом. Вот некоторые скриншоты (кликните на них для просмотра): Основной экран. Логотип Squeak в верхнем правом углу - это клон программы
xeyes, когда глаза следят за мышью. Если навести курсор на логотип, то окажется что есть всплывающая подсказка.
Если вы кликните на проекте в нижнем правом углу, он развернется на полный
экран. И, наконец, давайте кликнем на музыкальном проекте. Взгляд впередУвы! Сейчас не будет никаких планов на будущее, из-за моих трудностей со временем. В следующих сериях я планировал описать некоторые основы программирования, например: проверка юнитов (SUnit), управление исходным кодом (изменяемые наборы и SCAN), тур по часто употребляемым объектам, управляющим структурам и Squeaklets. Тем временем, я бы настоятельно рекомендовал загрузить Squeak 3.0 и попробовать дополнительный код STP, для первого знакомства. Он доступен с http://www.create.ucsb.edu/squeak/STP12.html Я наслаждался, изучая Squeak в течение нескольких месяцев, надеюсь, вы тоже получите удовольствие. Код SmalltalkКто-то сообщил мне, что ScopedBrowser, который я использовал в статье 4 некорректно
работает в Squeak v3.0, так вот обновленная
версия. |
Copyright © 2001, Jason Steffler.
|
Вернуться на главную страницу |