|
||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[1] ляет, как выполнять требуемую операцию. Выполняемая операция, если она возможна, рассматривается как встроенная способность объекта, которую можно единообразно вызвать посылкой ему сообщения. Множество всех сообщений, на которые может отвечать объект, называется интерфейсом объекта с остальной частью системы. Воздействовать на объект можно только через его интерфейс. Сообщения обеспечивают модульность системы, так как они задают тип требуемой операции. Для взаимодействия с объектом необходимо лишь знать, какие сообщения он может принимать, но не нужно знать, как объект устроен и как он будет выполнять полученное сообщение. Классы и экземпляры Класс описывает реализацию множества объектов, которые представляют подобные компоненты системы. Отдельные объекты, описываемые классом, называются его экземплярами. Именно класс описывает структуру памяти своих экземпляров, которая представляется множеством переменных, и то, как экземпляры выполняют посланные им сообщения, то есть описывают методы, определяющие как выполнить операцию, затребованную соответствующим сообщением. Каждый класс имеет имя, которое описывает тип компонента системы, представляемый его экземплярами. Например, класс, экземпляры которого представляют последовательности символов, называется String (Строка); класс, экземпляры которого представляют положение на плоскости, называется Point (Точка); класс, экземпляры которого представляют прямоугольные области, называется Rectangle ( Прямоугольник); класс, экземпляры которого представляют вычислительные процессы, называется Process (Процесс). Каждая переменная в принадлежащей объекту памяти ссылается на некоторый объект, называемый значением этой переменной. Большинство таких переменных имеют имена. Объекты, к которым можно получить доступ из конкретного места программы, определяются через доступные имена переменных. Имя переменной -простой идентификатор, то есть последовательность букв и цифр, начинающаяся с буквы. Например, indexbin14Total initialIndexHouseholdFinances textEditorRectangle bin14IncomeReasons Метод может сделать некоторые изменения в собственной памяти объекта и/или послать другие сообщения. Метод также определяет объект, который должен быть возвращен как значение вызвавшего метод сообщения. Определенным в классе методам доступны пять различных видов переменных. Эти виды переменных различаются по широте доступа к ним и по времени их существования в системе. Существуют два вида частных переменных, доступных только одному объекту. 1.Переменные экземпляра - существуют в течение всего времени жизни объекта. 2.Временные переменные - создаются для некоторого действия и доступны только во время этого действия. Переменные экземпляра представляют текущее состояние объекта. Временные переменные отражают промежуточное состояние, необходимое для выполнения некоторого действия. Временные переменные обычно связаны с единичным выполнением метода: они создаются, когда сообщение вызывает метод для выпол- нения, и уничтожаются, когда метод завершает свою работу возвращением значения. Три других вида переменных доступны более чем одному объекту и называются общими переменными. Они различаются по тому, насколько широко они доступны объектам системы. 3.Переменные класса - доступны всем экземплярам данного класса. 4.Глобальные переменные - доступны всем экземплярам всех классов (то есть всем объектам системы). 5.Переменные пула - доступны экземплярам некоторого подмножества классов системы. Большинство общих переменных в системе - либо переменные класса, либо глобальные переменные. Большинство глобальных переменных ссылаются на классы системы. Глобальные переменные используются для ссылок на объекты, которые не являются частями других объектов. Имена общих переменных (в том числе и имена классов!) пишутся с прописной буквы, в то время как имена частных переменных - со строчной. Значение общей переменной не зависит от того, какой объект системы использует метод, в котором присутствует ее имя. Значение переменных экземпляра и временных переменных зависит от экземпляра, использующего метод. Программирование в системе Smalltalk состоит из создания классов, экземпляров классов и последовательности сообщений, которыми обмениваются эти объекты! Подклассы, суперклассы, иерархия классов Структура класса, как она описывалась до сих пор, ничего не говорила о каких-либо пересечениях между классами. Отсутствие пересечений между классами - существенное ограничение на разработку в объектно-ориентированной системы. Но два объекта системы могут быть в основном похожи, отличаясь некоторыми деталями. Например, упорядоченные и неупорядоченные наборы похожи в том, что они представляют группы элементов, в которые можно добавлять и из которых можно удалять элементы, но они различаются по способу доступа к элементам. Различие между подобными объектами может быть заметно внешне, например, по тому, что они умеют отвечать на различные сообщения. Различие может быть и чисто внутренним и проявляться в том, что в ответ на одни и те же сообщения похожие объекты выполняют различные методы. Если классам не разрешено пересекаться, то возможность такого частичного подобия не может быть предоставлена системой. Способ обойти вышеуказанное ограничение - разрешить некоторое пересечения между классами. Мы называем такой подход наследованием. В языке Smalltalk наследование допускает такую ситуацию, при которой одному классу разрешается содержать в себе все экземпляры другого класса, которые "наследуют" от первого структуру его экземпляров и их поведение. В такой ситуации мы будем говорить, что один класс является подклассом другого класса, который для первого является суперклассом. В языке Smalltalk программист всегда создает новый класс как подкласс уже существующего класса. Системный класс Object (Объект) описывает общие свойства всех объектов системы, поэтому любой класс системы является как минимум подклассом класса Object. Описание класса явно указывает его суперкласс, и то, чем его экземпляры отличаются от экземпляров суперкласса. Подкласс тоже класс, следовательно, он сам может иметь подклассы. Каждый класс имеет один суперкласс, в то время как несколько классов могут быть подклассами одного и того же суперкласса; таким образом, структура классов образует дерево, которое определяет иерархию классов. Класс связан с последовательностью классов, от которых он наследует переменные и методы. Эта цепочка наследования начинается с его непосредственного суперкласса и заканчивается классом Object. Object - единственный корневой класс системы; он один не имеет суперкласса. Приведем некоторую часть иерархии классов системы Smalltalk-80 (отступ обозначает подкласс). Object Magnitude Character Date Time Number Float Fraction Integer LargeNegativelnteger LargePositivelnteger SmallInteger LookupKey Association Collection SequenceableCollection LinkedList Semaphore ArrayedCollection Array WordArray DisplayBitmap RunArray String Symbol Text ByteArray Interval OrderedCollection SortedCollection Bag MappedCollection Set Dictionary IdentityDictionary Point Rectangle Stream PositionabIe5tream ReadStream WriteStream ReadWriteStream ExternalStream FileStream Random Boolean False True ProcessorScheduler Delay SharedQueue Behavior ClassDescription Class MetaClass BitBlt CharacterScanner Pen DisplayObject DisplayMedium Form Cursor DisplayScreen InfiniteForm OpaqueForm Path Arc Circle Curve Line LinearFit Spline UndefinedObject |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||