Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP_answers (1).docx
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
2.9 Mб
Скачать

28*. Ооп в языке программирования Smalltalk. Достоинства и недостатки этого языка в сравнениии с языком программирования c#.

SmallTalk

C#

Динамическая типизация

+

-

Статическая типизация

-

+

Сборщик мусора

+

+

Поддержка ООП

+

+

Поддержка функционального программирования

-

+

Поддержка параллельного программирования

+

+

Особенностью SmallTalk являются: - все является объектом, даже сборщик мусора. Поскольку это объект, то допустимо изменять их. Например, имеются средства, для изменения семантики языка, а также сборщика мусора.

- использование «образа системы». Он представляет собой контейнер, который хранит все объекты системы Smalltalk между сеансами работы. К этим объектам относятся исполняющиеся программы, созданные объекты, классы и т.д.

- объекты обладают состоянием

- объекты обмениваются информацией между собой с помощью сообщений

- как и в C#, программы компилируются в байткоды и выполняются виртуальной машиной (ВМ), что позволяет выполнять их на любом оборудовании, для которого существует ВМ.

- динамическая компиляция часто вызываемого метода с возможностью встраивания нескольких методов вверх и вниз по цепочке вызовов

- динамическая декомпиляция с замещением методов на стеке в случае программных изменений; это необходимо для сохранения семантики языка, когда в произвольный момент времени может быть внесено изменение в структуру любого объекта.

- приоритет операций отсутствует;

Тогда особенности C#, в отличии от SmallTalk: - наличие функционального программирования (например, «ленивые вычисления») - наличие событий

- LINQ

- итераторы и индексаторы

- наличие свойств

- шаблоны классов

- можешь наследовать только единожды от класса, и много раз от интерфейсов

Smalltalk — объектно-ориентированный язык программирования с динамической типизацией. Smalltalk использует базовые принципы ООП:

-Объект - базовая единица объектно-ориентированной системы.

-Объекты могут обладать состоянием.

-Посылка сообщения - единственный способ обмена информацией между объектами.

Объектная модель Smalltalk построена на классах, а значит:

-Каждый объект относится к какому-то классу.

-Функциональность объекта определяется его классом (набором его методов).

-Классы организованы в иерархию.

-Классы наследуют функциональность от предка (или предков).

Smalltalk оказал большое влияние на развитие многих других языков, таких как: Objective-C, Actor, Java, Groovy и Ruby. Многие идеи 1980-х и 1990-х по написанию программ появились в сообществе Smalltalk. К ним можно отнести рефакторинг, шаблоны проектирования (применительно к ПО) и экстремальное программирование.

Основными идеями Smalltalk являются:

-Всё — объекты. Строки, целые числа, логические значения, определения классов, блоки кода, стеки, память — всё представляется в виде объектов. Выполнение программы состоит из посылок сообщений между объектами. Любое сообщение может быть послано любому объекту; объект-получатель определяет, является ли это сообщение правильным, и что надо сделать, чтобы его обработать.

-Всё доступно для изменения. Если вы хотите изменить интегрированную среду разработки, вы можете сделать это в работающей системе, без остановки, перекомпиляции и перезапуска. Если вам необходима в языке новая управляющая структура, вы можете добавить её. В некоторых реализациях вы можете также изменить синтаксис языка или способ работы сборщика мусора.

-Динамическая типизация — это означает, что вы не указываете типы переменных в программе, что делает язык гораздо лаконичней. (Как объяснено выше, является ли операция правильной, определяет объект-получатель, а не компилятор).

-Model-view-controller (MVC) шаблон структуры пользовательского интерфейса. (В последнее время используют и другие концепции реализации пользовательского интерфейса — например, Morphic в Squeak и Pollock в VisualWorks).

-Динамическая трансляция: современные коммерческие виртуальные машины компилируют байткоды в машинные коды для быстрого выполнения.

Smalltalk также использует другие современные идеи:

-Сборка мусора встроена в язык и незаметна разработчику.

-Программы Smalltalk обычно компилируются в байткоды и выполняются виртуальной машиной (ВМ), что позволяет выполнять их на любом оборудовании, для которого существует ВМ.

Одной из неожиданных особенностей Smalltalk является то, что традиционные конструкции: if-then-else, for, while, и т. д. не являются частью языка. Все они реализованы с помощью объектов. Например, решение принимается с помощью посылки сообщения ifTrue: логическому объекту, и передаёт управление фрагменту текста, если логическое значение истинно. Есть всего три конструкции:

-посылка сообщения объекту;

-присваивание объекта переменной;

-возвращение объекта из метода;

и несколько синтаксических конструкций для определения объектов-литералов и временных переменных.

В Smalltalk существует четыре типа действий - посылка сообщения, присваивание, возвращение значения из метода, вызов примитива виртуальной машины.

Чтобы лучше понять, как работает механизм обмена сообщениями, можно представить каждый объект как веб-сервер, отвечающий на запросы. При этом, на запросы можно просто выдавать заранее предопределённый ответ, аналог этому — выдача веб-страницы, расположенной по определённому пути; можно перенаправить запрос-сообщение другому объекту, аналог — прокси-сервер; изменить запрос по определённым правилам, аналог — техника url rewriting. Если для реакции на сообщение нет предопределённого метода, то вызывается метод #doesNotUnderstand:, так же, как веб-сервер открывает страницу с сообщением об ошибке, если задан несуществующий путь к веб-странице.

Любая система Smalltalk (среда разработки, отдельная исполняемая программа и т.д.) состоит из двух частей - виртуальной машины и образа системы.

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

Образ системы (image) - это файл, хранящий все объекты системы Smalltalk между сеансами работы. К этим объектам относятся исполняющиеся программы, созданные объекты, классы и т.д.

Когда система Smalltalk запущена - все действия, разумеется, выполняются в памяти компьютера. Когда же вы выходите из среды - у вас есть выбор, либо сохранять текущее состояние образа системы, либо нет. Если сохраните образ системы, то при следующем запуске вся среда будет восстановлена предельно точно - вплоть до положения окошек и позиций курсоров. Это происходит потому, что сохраняются (а потом восстанавливаются) состояния всех объектов.

Образ системы является основным контейнером информации в Smalltalk - т.е. в Smalltalk не приняты текстовые файлы с исходным кодом. В принципе, их можно создавать, но работать с образом системы гораздо удобнее.

Singleton

Adapter/Decorator/Wrapper/

Visitor

Observer

Iterator

Фабрика классов

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]