Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемАлиса Талагаева
1 Занятие 1
2 Вопрос: Когда появилась Объектно- Ориентированная парадигма программирования?
3 Ответ: 1969 год, Smalltalk OO было признано индустрией только в первой половине 90-х (Borland) – 1969 = 21 год Вопрос: Почему столь долгий период понадобился для того, чтобы идея была принята в промышленности?
4 Ответ: Инерция Мышления
5 Все современные языки программирования – это смешение 2х семейств, 2х генеалогических деревьев: 1) Fortran и Algol 2) Lisp Fortran и Algol – это усовершенствованный ассемблер. Lisp был открыт математиком Джоном МакКарти (John McCarthy) как модель вычислений, альтернативная машине Тьюринга, и позже запрограммирован учеником МакКарти Стивом Расселом (Steve Russel) как язык программирования.
6 Fortran и Algol стали использоваться в промышленности и дали начало многим языкам программирования. Lisp развивался и его черты и идеи медленно проникали в языки программирования первой семьи языков.
7 Особенности и идеи Lisp, и то, насколько они приняты сегодня: 1) Условные конструкции. Их не было в Fortran, был лишь goto. Сегодня условные конструкции есть везде 2) Рекурсия. Сегодня рекурсия возможна практически во всех языках программирования. 3) Управление памятью (Garbage-collection). Сегодня – Java, Perl и т.д. 4) Динамическая типизация. Perl, Python 5) Функция как тип данных (first-order functions) 6) Все есть выражение. Fortran и его наследники различают между выражениями и операторами. 7) Отсутствие различия между компиляцией (compile-time) и выполнением (runtime).
8 Вывод: Повсеместно принятые стандарты не обязательно являются лучшими инструментами и решениями! Замечательные идеи медленно и с трудом пробивают себе дорогу.
9 Ruby
10 1. Что такое Ruby Все есть объект (как в Smalltalk, Eifell) Динамическая типизация (как Smalltalk, Perl, Lisp) Единичное наследование (Smalltalk, Java) Функции как тип данных - объект класса Proc (lambda в Lisp и других функциональных языках) Шаблоны проектирования как часть языка Мощные итераторы Открытые классы mix-ins прозрачный синтаксис (как Eifell) Совместимые с Perl регулярные выражения Интерпретируемый язык
11 2. Объект и метод Объект irb> 32 irb> "Hello world" irb> 5.8 5.8">
12 Message, method, метод Объект MessageMessage Возвращаемое значение (тоже объект)
13 Message, method, метод irb> "Hello world".length irb> "Hello world".chop Hello world #length#length 11 "Hello world".chop Hello world #length#length 11">
32.length #=> NameError: undefined method `length' for 32:Fixnum метод #class irb> 32.class irb" title="Kласс объекта. Отдельный набор методов для объектов каждого отдельного класса. Имена классов - с большой буквы (константы). irb> "Hello world".length irb> 32.length #=> NameError: undefined method `length' for 32:Fixnum метод #class irb> 32.class irb" class="link_thumb"> 14 Kласс объекта. Отдельный набор методов для объектов каждого отдельного класса. Имена классов - с большой буквы (константы). irb> "Hello world".length irb> 32.length #=> NameError: undefined method `length' for 32:Fixnum метод #class irb> 32.class irb> "Hello world".class irb> 5.8.class методы с параметрами, параметры - тоже объекты. irb> "Hello world".index('e') irb> "Hello world".index('x') 32.length #=> NameError: undefined method `length' for 32:Fixnum метод #class irb> 32.class irb"> 32.length #=> NameError: undefined method `length' for 32:Fixnum метод #class irb> 32.class irb> "Hello world".class irb> 5.8.class методы с параметрами, параметры - тоже объекты. irb> "Hello world".index('e') irb> "Hello world".index('x')"> 32.length #=> NameError: undefined method `length' for 32:Fixnum метод #class irb> 32.class irb" title="Kласс объекта. Отдельный набор методов для объектов каждого отдельного класса. Имена классов - с большой буквы (константы). irb> "Hello world".length irb> 32.length #=> NameError: undefined method `length' for 32:Fixnum метод #class irb> 32.class irb">
15 Арифметические операции - те же методы с параметрами: irb> 5-1 irb> 5.-(1) irb> 10*4 irb> 10.*(4)
16 Что такое ri Задания 1) Найти информацию в ri о классах String, Float, Fixnum 2) Найти метод класса String который бы вернул строчный объект с теми же символами в верхнем регистре, запустить этот метод на "Hello world" в irb. 3) Найти метод класса String который бы вернул строчный объект равный исходному объекту с обратным порядком символов.
17 3. Переменные и объекты Переменные - это не объекты, а только ссылки на объекты irb> a = hi irb> b = a irb> a = bye irb> a irb> b hi b a b bye a
18 Рождение нового объекта: метод #dup irb> a = hi irb> b = a.dup irb> a irb> b hi a b
19 Почему на #dup и #class отзываются объекты всех классов? Иерархия классов, класс Object. ObjectNumeric String ArrayFloatIntegerFixnumBignum
20 Изменяемые и неизменяемые объекты irb> a = 3 irb> b = 3 irb> a.id irb> b.id irb> a = 4 irb> a.id irb> b.id irb> a = Hello World irb> b = Hello World irb> a.id irb> b.id
21 Изменяющие и неизменяющие методы. Те методы, которые изменяют сам объект, по традиции заканчиваются на ! irb> a = "hello world" irb> a.capitalize irb> a irb> a.capitalize! a.capitalize irb> a irb> a.capitalize!">
a.empty? irb> b="" irb> b.empty? irb> a.include?("e") irb> a.include?" title="Класс TrueClass с единственным объектом true,класс FalseClass с единственным объектом false. По традиции методы возвращающие true/false заканчиваются на ? irb> a="Hello world" irb> a.empty? irb> b="" irb> b.empty? irb> a.include?("e") irb> a.include?" class="link_thumb"> 22 Класс TrueClass с единственным объектом true,класс FalseClass с единственным объектом false. По традиции методы возвращающие true/false заканчиваются на ? irb> a="Hello world" irb> a.empty? irb> b="" irb> b.empty? irb> a.include?("e") irb> a.include?("R") a.empty? irb> b="" irb> b.empty? irb> a.include?("e") irb> a.include?"> a.empty? irb> b="" irb> b.empty? irb> a.include?("e") irb> a.include?("R")"> a.empty? irb> b="" irb> b.empty? irb> a.include?("e") irb> a.include?" title="Класс TrueClass с единственным объектом true,класс FalseClass с единственным объектом false. По традиции методы возвращающие true/false заканчиваются на ? irb> a="Hello world" irb> a.empty? irb> b="" irb> b.empty? irb> a.include?("e") irb> a.include?">
23 4. Класс Array irb> aа= [2, 6, 76, "hello"] irb> a.class irb> a.length irb> a[0] irb> a[2] [] - тот же метод irb> a.[](0) irb> a.[](2) irb> a[-1] a.class irb> a.length irb> a[0] irb> a[2] [] - тот же метод irb> a.[](0) irb> a.[](2) irb> a[-1]">
24 irb> b=[] irb> b irb> b.push(45) irb> b.push(76) irb> b[5]="hello" irb> b irb> a2 = [2,6,1,98,-6] irb> a2.sort b irb> a2 = [2,6,1,98,-6] irb> a2.sort">
25 5. Класс Hash Ассоциативные массивы, хеши (hashes) irb> ages = \ {"John"=>26, "Peter"=>36, "Alice"=>16} irb> ages.length irb> ages["John"] irb> ages.has_key?("John") irb> ages.has_key?("Jack") irb> ages["Jack"]=43 irb> ages.has_key?("Jack") 26, "Peter"=>36, "Alice"=>16} irb> ages.length irb> ages["John"] irb> ages.has_key?("John") irb> ages.has_key?("Jack") irb> ages["Jack"]=43 irb> ages.has_key?("Jack")">
26 Запуск первого скрипта 2 способа - #!/usr/bin/ruby в первой строке (Unix) и ruby script.rb При первом способе скрипт необходимо сделать исполняемым следующей командой: chmod u+xсscript.rb Наберите и запустите скрипт hello.rb: puts "Hello world" puts
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.