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

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


bb:redbook:304

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
bb:redbook:304 [2018/01/14 19:25]
иван_денисов
bb:redbook:304 [2018/11/30 01:13] (текущий)
Строка 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 · Последние изменения: 2018/11/30 01:13 (внешнее изменение)