Занятие 1 Вопрос: Когда появилась Объектно- Ориентированная парадигма программирования?

Презентация:



Advertisements
Похожие презентации
Занятие 4 def simple_iterator yield 2 # передача управления в блок итератора yield 7 yield 1 end simple_iterator {|i| puts i } 15. Итераторы изнутри.
Advertisements

Занятие Регулярные выражения Памятка (основные элементы регулярных выражений): a+ – любая последовательность a a* – любая последовательность a или.
Язык Ruby Денис С. Мигинский. Ruby Создан Юкихиро Мацумото в 1995 г. В основу положены элементы языков Perl, Python, Lisp, Smalltalk и др., а также «принцип.
Занятие Language Reflection Language Reflection – способность объектов к рефлексии, то есть умение давать информацию об исключительно языковых свойствах.
Скриптовые языки на примере Perl. Языки программирования Скриптовые Программа (или ее бай-код) интерпретируется Зачастую более высокий уровень абстрагирования.
Язык Ruby Денис С. Мигинский. Ruby Создан Юкихиро Мацумото в 1995 г. В основу положены элементы языков Perl, Python, Lisp, Smalltalk и др., а также «принцип.
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
Переменные: тип, имя, значение НАЧАЛА ПРОГРАММИРОВАНИЯ.
Язык JavaScript Скриптовый язык для выполнения на html-страницах.
Тема 1. Введение 1.
СТРОКИ Работа со строками. Последовательность выполнения операторов int age = 45; String s = "Не is " + age + " years old."; age не String, а переменная.
Тип, имя и значение переменной. В объектно-ориентированных языках программирования переменные играют такую же важную роль, как и в процедурных языках.
PERL.1 Основы языка. История языка 1986 – Larry Wall Истоки – sed, awk, shell, С Возможности системного администрирования и обработки файлов Practical.
Операции Условная операция ? : Если истинно, то результатом будет, иначе. Например, int x = a < b ? a : b вычисляет минимум из a и b.
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Язык Python Универсальный язык программирования Интерпретируемый язык.
Урок 6 Turbo Pascal Язык профессионального программирования, который назван в честь французского математика и философа Блеза Паскаля (1623–1662) и разработан.
Основы программирования Паскаль. Паскаль ( англ. Pascal) язык программирования общего назначения. Язык Паскаль был создан Никлаусом Виртом в
1 Прикладное программирование Kafmi21. ru – учеба – заочнику – прикладное программирование.
Программирование на языке Паскаль Тема 1. Введение.
Транксрипт:

Занятие 1

Вопрос: Когда появилась Объектно- Ориентированная парадигма программирования?

Ответ: 1969 год, Smalltalk OO было признано индустрией только в первой половине 90-х (Borland) – 1969 = 21 год Вопрос: Почему столь долгий период понадобился для того, чтобы идея была принята в промышленности?

Ответ: Инерция Мышления

Все современные языки программирования – это смешение 2х семейств, 2х генеалогических деревьев: 1) Fortran и Algol 2) Lisp Fortran и Algol – это усовершенствованный ассемблер. Lisp был открыт математиком Джоном МакКарти (John McCarthy) как модель вычислений, альтернативная машине Тьюринга, и позже запрограммирован учеником МакКарти Стивом Расселом (Steve Russel) как язык программирования.

Fortran и Algol стали использоваться в промышленности и дали начало многим языкам программирования. Lisp развивался и его черты и идеи медленно проникали в языки программирования первой семьи языков.

Особенности и идеи Lisp, и то, насколько они приняты сегодня: 1) Условные конструкции. Их не было в Fortran, был лишь goto. Сегодня условные конструкции есть везде 2) Рекурсия. Сегодня рекурсия возможна практически во всех языках программирования. 3) Управление памятью (Garbage-collection). Сегодня – Java, Perl и т.д. 4) Динамическая типизация. Perl, Python 5) Функция как тип данных (first-order functions) 6) Все есть выражение. Fortran и его наследники различают между выражениями и операторами. 7) Отсутствие различия между компиляцией (compile-time) и выполнением (runtime).

Вывод: Повсеместно принятые стандарты не обязательно являются лучшими инструментами и решениями! Замечательные идеи медленно и с трудом пробивают себе дорогу.

Ruby

1. Что такое Ruby Все есть объект (как в Smalltalk, Eifell) Динамическая типизация (как Smalltalk, Perl, Lisp) Единичное наследование (Smalltalk, Java) Функции как тип данных - объект класса Proc (lambda в Lisp и других функциональных языках) Шаблоны проектирования как часть языка Мощные итераторы Открытые классы mix-ins прозрачный синтаксис (как Eifell) Совместимые с Perl регулярные выражения Интерпретируемый язык

2. Объект и метод Объект irb> 32 irb> "Hello world" irb> 5.8

Message, method, метод Объект MessageMessage Возвращаемое значение (тоже объект)

Message, method, метод irb> "Hello world".length irb> "Hello world".chop Hello world #length#length 11

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')

Арифметические операции - те же методы с параметрами: irb> 5-1 irb> 5.-(1) irb> 10*4 irb> 10.*(4)

Что такое ri Задания 1) Найти информацию в ri о классах String, Float, Fixnum 2) Найти метод класса String который бы вернул строчный объект с теми же символами в верхнем регистре, запустить этот метод на "Hello world" в irb. 3) Найти метод класса String который бы вернул строчный объект равный исходному объекту с обратным порядком символов.

3. Переменные и объекты Переменные - это не объекты, а только ссылки на объекты irb> a = hi irb> b = a irb> a = bye irb> a irb> b hi b a b bye a

Рождение нового объекта: метод #dup irb> a = hi irb> b = a.dup irb> a irb> b hi a b

Почему на #dup и #class отзываются объекты всех классов? Иерархия классов, класс Object. ObjectNumeric String ArrayFloatIntegerFixnumBignum

Изменяемые и неизменяемые объекты 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

Изменяющие и неизменяющие методы. Те методы, которые изменяют сам объект, по традиции заканчиваются на ! irb> a = "hello world" irb> a.capitalize irb> a irb> a.capitalize!

Класс 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")

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]

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

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")

Запуск первого скрипта 2 способа - #!/usr/bin/ruby в первой строке (Unix) и ruby script.rb При первом способе скрипт необходимо сделать исполняемым следующей командой: chmod u+xсscript.rb Наберите и запустите скрипт hello.rb: puts "Hello world" puts