Smalltalk: первое знакомство

1,206 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,206
On SlideShare
0
From Embeds
0
Number of Embeds
325
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Smalltalk: первое знакомство

  1. 1. Smalltalk: первое знакомство Борис Беркгаут berkgaut@gmail.com
  2. 2. Smalltalk: первое знакомство План: 1. Сжатое изложение синтаксиса 2. Работа с системой 3. Главные особенности Smalltalk 4. ????? 5. PROFIT!
  3. 3. Литералы 371993326789901217467999448150835200000000 16rDEADBEAF 'Здравствуй, мир!' #Symbol #(127 0 0 1) #(#formatVersion 1.0)
  4. 4. Посылка сообщений объектам 1 negated
  5. 5. Посылка сообщений объектам 1 negated receiver: 1 selector: #negated
  6. 6. Посылка сообщений объектам 1 negated result: -1
  7. 7. Посылка сообщений объектам 3+2
  8. 8. Посылка сообщений объектам 3+2 receiver: 3 selector: #+ argument: 2
  9. 9. Посылка сообщений объектам 3+2 result: 5 NB! Приоритета операторов нет ассоциативность всегда левая 3 + 2 * 3 = 15
  10. 10. Посылка сообщений объектам Dialog warn: 'Здравствуй, мир!'
  11. 11. Посылка сообщений объектам Dialog warn: 'Здравствуй, мир!' receiver: <Dialog class> selector: #warn: argument: 'Здравствуй, мир!'
  12. 12. Посылка сообщений: строим сложные объекты Rectangle origin: 0@0 corner: 100@200
  13. 13. Посылка сообщений: строим сложные объекты Rectangle origin: 0@0 corner: 100@200 receiver: 0 selector: #@ argument: 0
  14. 14. Посылка сообщений: строим сложные объекты Rectangle origin: 0@0 corner: 100@200 result: 0@0
  15. 15. Посылка сообщений: строим сложные объекты Rectangle origin: 0@0 corner: 100@200 receiver: 100 selector: #@ argument: 200
  16. 16. Посылка сообщений: строим сложные объекты Rectangle origin: 0@0 corner: 100@200 result: 100@200
  17. 17. Посылка сообщений: строим сложные объекты Rectangle origin: 0@0 corner: 100@200 receiver: Rectangle selector: #origin:corner: arguments: 1. 0@0 2. 100@200
  18. 18. Посылка сообщений: объекты работают вместе Window currentWindow graphicsContext displayRectangle: (Rectangle origin: 0@0 corner: 100@200) at: 300@300
  19. 19. Временные переменные |myRect| myRect := Rectangle origin: 0@0 corner: 100@200. Window currentWindow graphicsContext displayRectangle: myRect at: 300@300
  20. 20. А теперь создадим метод! |myRect| myRect := Rectangle origin: 0@0 corner: 100@200. Window currentWindow graphicsContext displayRectangle: (myRect inflateBy: 50@50) at: 300@300
  21. 21. А теперь создадим метод! |myRect| myRect := Rectangle origin: 0@0 corner: 100@200. Window currentWindow graphicsContext displayRectangle: (myRect inflateBy: 50@50) at: 300@300 (метод создается прямо в открывшемся отладчике)
  22. 22. Блоки #(1 2 3) collect: [:x | 2 * x] (1 to: 20) select: [:x | (x 2) ~= 0]
  23. 23. Условная конструкция (1 to: 9) collect: [:x | x 2 == 0 ifTrue: [x] ifFalse: [1]]
  24. 24. Условная конструкция: вид изнутри Boolean >> ifTrue: trueBlock ifFalse: falseBlock ^self subclassResponsibility True >> ifTrue: trueBlock ifFalse: falseBlock ^trueBlock value False >> ifTrue: trueBlock ifFalse: falseBlock ^falseBlock value
  25. 25. Refactoring Browser демонстрация
  26. 26. Метамодель Если классы -- это объекты, то какого же класса?
  27. 27. Метамодель Если классы -- это объекты, то какого же класса?
  28. 28. Главные особенности Smalltalk и их следствия - Классы являются объектами - Числа, true, false, nil являются объектами - Процессы, контексты, методы являются объектами - Все вызовы полиморфны по определению - Переменные экземпляра доступны только методам - Динамическая типизация - Развитые средства интроспекции и самомодификации - Библиотека реализована на Smalltalk - Инструментальные средства реализованы на Smalltalk - Инкрементальная компиляция и object morphing - Сохранение состояния ВМ в виде образа (image)
  29. 29. О чём ещё стоит упомянуть - Средства версионирования - SUnit и mock objects - Профайлер - Управление GC, тонкая настройка - Взаимодействие со внешними библиотеками (в т.ч. callbacks) - Работа с COM (в т.ч. call-ins), OLE - Glorp (ORM) - Seaside (Web Application Framework)
  30. 30. Questions

×