Инструменты пользователя

Инструменты сайта


bb:redbook:304

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
bb:redbook:304 [2018/01/14 19:25]
иван_денисов
bb:redbook:304 [2018/01/14 19:26]
иван_денисов
Строка 2: Строка 2:
  
 ==== 1. Что такое документ ==== ==== 1. Что такое документ ====
-Как только среднестатистический человек слышит слово "документ" -- ему представляется лист бумаги формата А4 с заголовком, подписями, реквизитами, и желательно -- большой круглой синей печатью. Ну правда, а какие ещё документы бывают? Немного подумав, можно обратиться в архив, и из хранилища можно извлечь что-то вроде "Повести временных лет". В кожанном переплёте, с металлическим окладом, с красивыми рисунками. Документ? Для историков ещё какой! Спросим следователя, что для него документ? Он тут же достанет специальный пакет, в котором хранится гипсовый слепок обуви преступника. Вот для него настоящий документ! Таким образом, понятие документ вовсе не ограничивается листом бумаги формата А4. [↑] +Как только среднестатистический человек слышит слово "документ" -- ему представляется лист бумаги формата А4 с заголовком, подписями, реквизитами, и желательно -- большой круглой синей печатью. Ну правда, а какие ещё документы бывают? Немного подумав, можно обратиться в архив, и из хранилища можно извлечь что-то вроде "Повести временных лет". В кожаном переплёте, с металлическим окладом, с красивыми рисунками. Документ? Для историков ещё какой! Спросим следователя, что для него документ? Он тут же достанет специальный пакет, в котором хранится гипсовый слепок обуви преступника. Вот для него настоящий документ! Таким образом, понятие документ вовсе не ограничивается листом бумаги формата А4. 
-  + 
- +
 ==== 2. Документ BlackBox ==== ==== 2. Документ BlackBox ====
-Документ BlackBox может иметь вид какой угодно. Этот текст -- самый настоящий документ БлэкБокс. Код программы на Компонетном Паскале в БлэкБокс -- такой же документ. Даже текст программы внутри текста этого учебника -- тоже документ (обратите внимание: документ внутри документа!). Причём, на страницах этого учебника встречались такие документы, которые содержат и текст, и код, и изображения. При этом БлэкБокс не сходит с ума, и прекрасно понимает, что к чему относится, и что с этим делать. Последние два подчёркивания особо отмечают то, что документ БлэкБокса имеет более сложную структуру, чем печатный текст. [↑]+Документ BlackBox может иметь вид какой угодно. Этот текст -- самый настоящий документ БлэкБокс. Код программы на Компонентном Паскале в БлэкБокс -- такой же документ. Даже текст программы внутри текста этого учебника -- тоже документ (обратите внимание: документ внутри документа!). Причём, на страницах этого учебника встречались такие документы, которые содержат и текст, и код, и изображения. При этом БлэкБокс не сходит с ума, и прекрасно понимает, что к чему относится, и что с этим делать. Последние два подчёркивания особо отмечают то, что документ БлэкБокса имеет более сложную структуру, чем печатный текст.
   
   
Строка 12: Строка 12:
 Для начала обратимся к аналогии в виде дорожно-транспортной системы. Она нужна для того, чтобы автомобили могли успешно перемещаться. Автомобили бывают разные: большие, маленькие, тяжёлые, красные -- миллионы их. И если большие автомобили ещё могут проехать по бездорожью, то маленькие нет. А ездить только на больших атомобилях экономически нецелесообразно. Нужно делать транспортную сеть. Такая сеть представлена: улицами, проспектами, шоссе, площадками. Теперь, когда все автомобили обрели твёрдую поверхность под колёсами, можно ездить как попало. Ан нет! Автомобили будут постоянно сталкиваться, и толку от них не будет. Нужна дорожная разметка! Нанесли разделительные полосы, поставили знаки/светофоры, кое-где информационные (но не обязательные) указатели, и вроде можно жить. И этого оказывается мало! Нужно разработать непротиворечивые объемлющие правила дорожного движения, и добиться их исполнения ото всех участников дорожного движения. И вот только тогда, действительно, можно жить. Автомобиль -- это текст. Или файл. Или объект. Носитель информации. И сам по себе он уже полезен, но роль у него исключительно пассивная, и в этом смысле -- что-либо с ним сделать нельзя, и в гараже его не видно. Гараж, как и улица, как и проспект -- это то, что может представить объект. То, что может представить объект, может это сделать по разному. Например, модель "гоночный автомобиль" лучше будет смотреться на скоростном треке, а на пашне будет бесполезен. Модель "танк" будет нелепо смотреться на центральных улицах города, а на поле боя -- превосходно! Таким образом, мы плавно приходим к мысли, что представление объекта задаётся его моделью. Но автомобиль, который едет по дороге, фактически, изменяет своё состояние. Например, гоночный автомобиль быстро разгоняется, и тем самым меняет свою скорость и кинетическую энергию. А танк может быть перекрашен, в зависимости от времени года. И изменения эти происходят не как попало, а задаются в соответствии с логикой внеших условий. Этот набор задающих внешних условий в программостроении принято называть контроллер. Например, знак на дороге вынуждает повернуть автомобиль. Конечно, автомобиль, может развернуться и уехать -- его право, но если захочет поехать дальше, то обязан подчиниться требованиям дорожной  разметки. Для начала обратимся к аналогии в виде дорожно-транспортной системы. Она нужна для того, чтобы автомобили могли успешно перемещаться. Автомобили бывают разные: большие, маленькие, тяжёлые, красные -- миллионы их. И если большие автомобили ещё могут проехать по бездорожью, то маленькие нет. А ездить только на больших атомобилях экономически нецелесообразно. Нужно делать транспортную сеть. Такая сеть представлена: улицами, проспектами, шоссе, площадками. Теперь, когда все автомобили обрели твёрдую поверхность под колёсами, можно ездить как попало. Ан нет! Автомобили будут постоянно сталкиваться, и толку от них не будет. Нужна дорожная разметка! Нанесли разделительные полосы, поставили знаки/светофоры, кое-где информационные (но не обязательные) указатели, и вроде можно жить. И этого оказывается мало! Нужно разработать непротиворечивые объемлющие правила дорожного движения, и добиться их исполнения ото всех участников дорожного движения. И вот только тогда, действительно, можно жить. Автомобиль -- это текст. Или файл. Или объект. Носитель информации. И сам по себе он уже полезен, но роль у него исключительно пассивная, и в этом смысле -- что-либо с ним сделать нельзя, и в гараже его не видно. Гараж, как и улица, как и проспект -- это то, что может представить объект. То, что может представить объект, может это сделать по разному. Например, модель "гоночный автомобиль" лучше будет смотреться на скоростном треке, а на пашне будет бесполезен. Модель "танк" будет нелепо смотреться на центральных улицах города, а на поле боя -- превосходно! Таким образом, мы плавно приходим к мысли, что представление объекта задаётся его моделью. Но автомобиль, который едет по дороге, фактически, изменяет своё состояние. Например, гоночный автомобиль быстро разгоняется, и тем самым меняет свою скорость и кинетическую энергию. А танк может быть перекрашен, в зависимости от времени года. И изменения эти происходят не как попало, а задаются в соответствии с логикой внеших условий. Этот набор задающих внешних условий в программостроении принято называть контроллер. Например, знак на дороге вынуждает повернуть автомобиль. Конечно, автомобиль, может развернуться и уехать -- его право, но если захочет поехать дальше, то обязан подчиниться требованиям дорожной  разметки.
  
-Итак, дорожно-транспортная сеть помогает успешно перемещаться автомобилям, но в тоже время, и ограничивает (для их же пользы) возможные варианты действий. Это каркас. И чтобы он (каркас) успешно функционировал нужно иметь три типовых элемента по отношению к заполняющим его (каркас) объектам: представление, модель, контроллер.  [↑]+Итак, дорожно-транспортная сеть помогает успешно перемещаться автомобилям, но в тоже время, и ограничивает (для их же пользы) возможные варианты действий. Это каркас. И чтобы он (каркас) успешно функционировал нужно иметь три типовых элемента по отношению к заполняющим его (каркас) объектам: представление, модель, контроллер.
   
   
Строка 33: Строка 33:
  
 Собственно, вот так и работает документ БлэкБокс. Документ содержит объект (например текст, код, картинку) с необходимыми атрибутами для успешного использования объекта (по сути, элементы модели), модели задают правила представления объекта (например, красный цвет заголовка, или жирный текст кнопки), контроллер документа подгоняет его под требования представления (окна, кнопки, меню и т. д.). Изменятся глобальные настройки системы -- контроллер опять подгонит объект по правилам модели к новому представлению. Собственно, вот так и работает документ БлэкБокс. Документ содержит объект (например текст, код, картинку) с необходимыми атрибутами для успешного использования объекта (по сути, элементы модели), модели задают правила представления объекта (например, красный цвет заголовка, или жирный текст кнопки), контроллер документа подгоняет его под требования представления (окна, кнопки, меню и т. д.). Изменятся глобальные настройки системы -- контроллер опять подгонит объект по правилам модели к новому представлению.
-FIXME --- //[[prospero.78.su@gmail.com|Валерий Шипков]] 2016/03/31 15:53//(* здесь бы добавить мысль про то, что контроллер яляется главным в системе *) [↑] +FIXME --- //[[prospero.78.su@gmail.com|Валерий Шипков]] 2016/03/31 15:53//(* здесь бы добавить мысль про то, что контроллер является главным в системе *) 
-  + 
- + 
 ==== 5. Выводы ==== ==== 5. Выводы ====
 Каркас обеспечивает существенные возможности для документов. Каркас вносит свою сложность в создаваемую систему. Но эта сложность многократно компенсируется тем, что каркас берёт ещё большую сложность на себя. В частности, документы БлэкБокса помогают программисту единообразно работать с текстами, переносить код между системами, организует работу наиболее рациональным способом. Локально снижаемая сложность приводит к более эффективной работе с объемлющими сложностями. [↑] Каркас обеспечивает существенные возможности для документов. Каркас вносит свою сложность в создаваемую систему. Но эта сложность многократно компенсируется тем, что каркас берёт ещё большую сложность на себя. В частности, документы БлэкБокса помогают программисту единообразно работать с текстами, переносить код между системами, организует работу наиболее рациональным способом. Локально снижаемая сложность приводит к более эффективной работе с объемлющими сложностями. [↑]
bb/redbook/304.txt · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)