Язык smalltalk «Чистый» объектно- ориентированный язык

7
Язык SmallTalk «Чистый» объектно- ориентированный язык

Post on 20-Dec-2015

229 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Язык SmallTalk «Чистый» объектно- ориентированный язык

Язык SmallTalk

«Чистый» объектно-ориентированный язык

Page 2: Язык SmallTalk «Чистый» объектно- ориентированный язык

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

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

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

Классы и экземпляры Класс описывает реализацию множества объектов, которые представляют

подобные компоненты системы. Отдельные объекты, описываемые классом, называются его экземплярами.

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

Каждая переменная в принадлежащей объекту памяти ссылается на некоторый объект, называемый значением этой переменной.

Классы и Метаклассы Всё есть объекты т.е. экземпляры некоторых классов, значит сами классы –

тоже экземпляры некоторых классов. Класс, экземпляры которого сами являются классами называется метаклассом.

Каждый класс является единственным экземпляром своего собственного метакласса и, всякий раз, когда создается новый класс, для него автоматически создается новый метакласс.

Page 3: Язык SmallTalk «Чистый» объектно- ориентированный язык

ПеременныеСуществуют два вида частных переменных, доступных

только одному объекту. 1. Переменные экземпляра - существуют в течение всего

времени жизни объекта. 2. Временные переменные - создаются для некоторого

действия и доступны только во время этого действия.Три других вида переменных доступны более чем одному

объекту и называются общими переменными. Они различаются по тому, насколько широко они доступны объектам системы.

3. Переменные класса - доступны всем экземплярам данного класса.

4. Глобальные переменные - доступны всем экземплярам всех классов (то есть всем объектам системы).

5. Переменные пула - доступны экземплярам некоторого подмножества классов системы.

Page 4: Язык SmallTalk «Чистый» объектно- ориентированный язык

Особенности синтаксиса

Всё делается через посылку сообщений:x + y

объекту x посылается сообщение + с аргументом yНаиболее естественна постфиксная запись

Невычисляемые операторы (блоки)[ … ]

Page 5: Язык SmallTalk «Чистый» объектно- ориентированный язык

Синтаксис Java и SmallTalkint a; float b; | a b |

a = 5; // assign a := 5 "assign"

object.getField(); object getField

object.getItem(10); object getItem: 10

'h' $h

"string" 'string'

"a" + "b" 'a','b'

this self

null nil

return x; ^ x

new Object; Object new

{1, 2, 3, 4, 5} #(1 2 3 4 5)

a[10] a at: 10

Page 6: Язык SmallTalk «Чистый» объектно- ориентированный язык

Управляющие конструкции через посылку сообщений

Проверка условий:parity := (number \\ 2) = 0 ifTrue: [0] ifFalse: [1]

Применение блока к массиву: |sum|

sum := 0. #(2 3 5 7 11) do: [:pr | sum := sum + (pr*pr)]

Page 7: Язык SmallTalk «Чистый» объектно- ориентированный язык

Иерархия классовObject Stream Magnitude PositionabIe5tream Character ReadStream Date WriteStream Time ReadWriteStream Number ExternalStrea, Float FileStream Fraction Random Integer Boolean LargeNegativelnteger False LargePositivelnteger True SmallInteger ProcessorScheduler LookupKey Delay Association SharedQueue Collection Behavior SequenceableCollection ClassDsscription LinkedList Class Semaphore MetaClass ArrayedCollection BitBlt Array CharacterScanner WordArray Pen DisplayBitmap DisplayObject RunArray DisplayMedium String Form Symbol Cursor Text DisplayScreen ByteArray InfiniteForm Interval OpaqueForm OrderedCollection Path SortedCollection Arc Bag Circle MappedCollection Curve Dictionary Line IdentityDictionary LinearFit Point Spline Rectangle UndefinedObject