Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2013_1 / КМод / simulSqueak.pdf
Скачиваний:
82
Добавлен:
23.02.2015
Размер:
1.24 Mб
Скачать

Суханов В. И.

Моделирование параллельных процессов

Методические указания по дисциплине «Компьютерное моделирование»

© Суханов В. 2009

Екатеринбург 2009

 

 

ОГЛАВЛЕНИЕ

 

1

КОНЦЕПЦИИ ЯЗЫКА SMALLTALK-80.......................................................

5

2

ОПИСАНИЕ ЯЫКА SQUEAK SMALLTALK................................................

7

 

2.1

Основные понятия.....................................................................................

7

 

2.2

Синтаксис языка Smalltalk......................................................................

15

 

2.3

Описание классов объектов....................................................................

17

3

ПАРАЛЛЕЛЬНАЯ РАБОТА..........................................................................

19

 

3.1

Объекты класса Process...........................................................................

21

 

3.2

Объект класса ProcessorScheduler..........................................................

22

 

3.3

Объекты класса Semaphore.....................................................................

22

4

МОДЕЛИРОВАНИЕ СИСТЕМ МАССОВОГО ОБСЛУЖИВАНИЯ........

23

5

МОДЕЛИРОВАНИЕ СИСТЕМ С ДИСКРЕТНЫМИ СОБЫТИЯМИ.......

28

 

5.1

Децентрализованное управление процессами......................................

28

 

5.2

Централизованное управление процессами..........................................

30

 

5.3

Разработка моделей систем с дискретными событиями......................

37

 

5.4

Протоколирование результатов моделирования...................................

41

 

5.5

Учебные задачи моделирования............................................................

45

 

5.5.1 Обработка партии деталей на двух станках...................................

45

 

5.5.2 Грузоперевозки автотранспортом...................................................

47

 

5.5.3 Управление посадкой самолетов....................................................

49

 

5.5.4 Исследование характеристик систем массового обслуживания. .

51

Библиографический список..............................................................................

53

3

1 КОНЦЕПЦИИ ЯЗЫКА SMALLTALK-80

Squeak Smalltalk является открытой переносимой версией языка Smalltalk80 удобной при отладке, анализе и изменении программ. Наличие инструмен­ тальных сред для всех популярных мощных компьютеров и операционных си­ стем ставит Smalltalk в ряд как открытых так и коммерческих многоплатфор­ менных программных инструментальных систем [1].

Дату появления языка Smalltalk обычно связывают с публикацией в авгу­ стовском номере журнала Byte за 1981 год серии статей, посвященных только что разработанной в научно-исследовательском центре PARC (Palo Alto Research Center) фирмы Xerox версии Smalltalk-80. Smalltalk-80, который до сих пор считается неофициальным стандартом языка, явился результатом проводи­ мой с начала 70-х годов в PARC (ныне ParcPlace System) работы по созданию системы программирования, поддерживающей абсолютно новую по тому вре­ мени и многообещающую концепцию объектно-ориентированного програм­ мирования (ООП). Новая система, помимо ООП, предлагала целый букет новых технологических идей: графический интерфейс с перекрывающимися окнами, иерархические меню, использование мыши и пр. Эти идеи были активно приня­ ты и легли в основу современных интерфейсов Macintosh, Microsoft Windows, Presentation Manager и Unix X-Window System. Smalltalk является "дедушкой" С+ +, Object Pascal и других современных языков, поддерживающих наследование, инкапсуляцию и полиморфизм, и в отличие от своих "внуков" целиком по­ строен на принципах ООП.

Основная идея ООП заключается в построении (разработке) программы из классов объектов, которыми она манипулирует, а не из функций, которые над ними (объектами) выполняются. Под классом подразумевается некоторый сконструированный программистом абстрактный тип данных, а под объектом – конкретные данные, экземпляр класса. Например, 5 – экземпляр класса Integer, а 'Привет' – экземпляр класса String. Что касается функций, то они определяют­ ся индивидуально над каждым типом данных. При этом сами данные экземпля­ ра объекта становятся доступными только через эти функции, составляющие официальный интерфейс данного класса. Такой подход позволяет полностью скрыть реализацию объекта от постороннего вмешательства, что составляет основу инкапсуляции.

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

4

ми в зависимости от их принадлежности классу. Этот механизм реализуется за счет динамического (в период исполнения) связывания сообщений и методов для их обработки.

Следующим фундаментальным принципом ООП является наследование – способность создавать описание новых классов как потомков существующих, копирующих структуру данных и методы их обработки у родителей. Но пото­ мок не точная копия родителя. Он может дополнять состав данных и методов и перекрывать (переопределять) родительские методы. Это позволяет создавать иерархии классов объектов, сосредотачивая у родителей наиболее общие свой­ ства всех потомков.

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

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

Любая среда программирования включает три составляющие: язык, сред­ ства разработки программ (библиотеки определений классов) и интерфейс (ви­ зуализация ввода-вывода, отладчики, инспекторы, редакторы, средства работы с файловыми системами и т.п.). Все три составляющие в Smalltalk объединены в общую среду – набор классов, доступный для расширения и модификации. Об­ ладая редактором, способным обеспечить работу с исходными данными на самом современном уровне, и оконной графикой, не уступающей Windows, вме­ сте с дополнительными инструментами интерфейс Smalltalk вполне может пре­ тендовать на лидерство среди средств разработки приложений для мощных пер­ сональных ЭВМ [4, 5].

Squeak свободно распространяемая многоплатформенная система програм­ мирования на основе языка Smalltalk-80 (http://www.squeak.org), имеющая мощ­ ный интерфейс для разработки приложений произвольного назначения. Систе­ ма развивается сообществом программистов всего мира.

5