Объектно-ориентированное программирование в ruby

26
Что такое ООП Кот Другие животные Наследование Примеры Задания References Объектно–ориентированное программирование Информатика 10-11 классы 26 февраля 2012 г. Информатика 10-11 классы Объектно–ориентированное программирование

Upload: evgeny-smirnov

Post on 13-Jan-2017

373 views

Category:

Education


7 download

TRANSCRIPT

Page 1: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Объектно–ориентированное программирование

Информатика10-11 классы

26 февраля 2012 г.

Информатика 10-11 классы Объектно–ориентированное программирование

Page 2: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Что такое ООП?

Динамическое и функциональное виды программирования,как известно, решают весьма важную задачу разделениябизнес–логики приложения от низкоуровневых алгоритмов.Когда мы используем автомобиль, мы не задумываемся оего устройстве, а просто используем различные способыуправления.При этом даже те инженеры, которые разрабатываютавтомобили, имеют свои специализации: часть занимаетсядвигателем, часть — дизайном, часть — безопасностью, акто-то — и концепцией в целом.

Информатика 10-11 классы Объектно–ориентированное программирование

Page 3: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Что такое ООП?

Концепция объектно–ориентированного программирования(ООП) предлагает оперировать в программе непеременными и функциями, а объектами.Всё в программе является объектами.У объекта имеются свойства и методы.Свойства представляют собой переменные,принадлежащие объекту.Методы — функции, позволяющие получить / изменитьинформацию об объекте.

Информатика 10-11 классы Объектно–ориентированное программирование

Page 4: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Объект Кот

Информатика 10-11 классы Объектно–ориентированное программирование

Page 5: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Какие свойства есть у кота?

Информатика 10-11 классы Объектно–ориентированное программирование

Page 6: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Свойства кота

ПородаЦветРостВозрастДата последнего кормленияДата последнего поглаживанияДата последнего мяукания...

Информатика 10-11 классы Объектно–ориентированное программирование

Page 7: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

А методы?

Информатика 10-11 классы Объектно–ориентированное программирование

Page 8: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Методы кота

МяукнутьПоестьПотребовать погладитьПогулять...

Информатика 10-11 классы Объектно–ориентированное программирование

Page 9: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

А что с другими животными?

Информатика 10-11 классы Объектно–ориентированное программирование

Page 10: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Упс, не то

Информатика 10-11 классы Объектно–ориентированное программирование

Page 11: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Собака

Информатика 10-11 классы Объектно–ориентированное программирование

Page 12: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Сравнение свойств Кота и Собаки

ПородаЦветРостВозрастДата последнегокормленияДата последнегопоглаживанияДата последнегомяукания

ПородаЦветРостВозрастДата последнегокормленияДата последнегопоглаживанияДата последнегогавкания

Информатика 10-11 классы Объектно–ориентированное программирование

Page 13: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Сравнение методов Кота и Собаки

МяукнутьПоестьПотребовать погладитьПогулять

ГавкнутьПоестьПотребовать погладитьПогулятьВыгуляться

Информатика 10-11 классы Объектно–ориентированное программирование

Page 14: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Домашние животные

Информатика 10-11 классы Объектно–ориентированное программирование

Page 15: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

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

вынести в класс–родитель. Все“дети”–наследники автоматически получают их.

Информатика 10-11 классы Объектно–ориентированное программирование

Page 16: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Схема наследования

Родитель: Домашнее животное

Наследник: Кот Наследник: Собака

Информатика 10-11 классы Объектно–ориентированное программирование

Page 17: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Несколько нудных терминов

Одинаковые объекты являются экземплярами класса.Кот — это, на самом деле, класс.А вот, например, кот Вася — это объект, то есть,представитель класса.Класс — это программная структура.В программе мы сначала создаём класс, а потом ужесоздаём (инстанцируем) объекты.В ruby всё что угодно является объектом. Даже число 5,строка “мама мыла раму” и пр.

Информатика 10-11 классы Объектно–ориентированное программирование

Page 18: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Класс Многоугольник

Создадим класс Многоугольник.Базовые свойства фигуры: стороны фигуры, углы,периметр, площадь и др.Методы: посчитать площадь, посчитать периметр, найтирадиус описанной окружности и др.Фигуры бывают разные: треугольник, четырёхугольник(среди которых тоже есть квадрат, ромб и пр.)У каких-то фигур мы знаем, как считать площадь и пр., ау каких-то — нет.Напишем программу.

Информатика 10-11 классы Объектно–ориентированное программирование

Page 19: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Класс Многоугольник

Listing 1: Класс Многоугольник

c l a s s Polygona t t r_a c c e s s o r : s i d e s , : c o r n e r s ,

: p e r ime t e r , : s qua r edef p e r ime t e r

@pe r imete r = @s i d e s . i n j e c t ( 0 ) { | r e s , e lem |r e s + elem}

endde f num_points

@ s i d e s . s i z eend

end

Информатика 10-11 классы Объектно–ориентированное программирование

Page 20: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Пояснения к классу

Методы класса определяются точно так же, как и обычныефункции. Отличий нет.Свойства класса мы будем определять через специальнуюконструкцию attr_accessor. Не вдаваясь в детали, простоперечислим все свойства–переменные. Обратите внимание,что они начинаются со знака “двоеточие”.Чтобы внутри метода обратиться к свойству, нужно передего (свойства) названием поставить знак @.В данном классе мы определяем методы perimeter иnum_points (количество вершин). Мы специально методperimeter назвали одинаково со свойством, чтобы привызове obj.perimeter происходило автоматическоевычисление.

Информатика 10-11 классы Объектно–ориентированное программирование

Page 21: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Используем класс Polygon

Listing 2: Использование Polygon

f i g = Polygon . newf i g . s i d e s = [ 2 , 4 , 2 , 4 ]f i g . c o r n e r s = [90 , 90 , 90 , 90 ]

put s f i g . p e r ime t e r

Для создания экземпляра класса используется конструкция CLASS.new.Аналог — ручное создание массивов и хэшей.

Некоторые свойства мы задаём вручную.

Также, как и массивами, для вызова методов и свойств используемразделитель–точку.

Информатика 10-11 классы Объектно–ориентированное программирование

Page 22: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Класс Triangle

Listing 3: Класс Triangle

c l a s s Tr i a n g l e < Polygondef squa r e

pp = s e l f . p e r ime t e r /2( pp ∗( pp − s i d e s [ 0 ] ) ∗ ( pp−s i d e s [ 1 ] ) ∗( pp−s i d e s [ 2 ] ) ) ∗ ∗ 0 . 5

endendt r = T r i a n g l e . newt r . s i d e s = [ 3 , 4 , 5 ]put s t r . s qua r eput s t r . p e r ime t e r

Информатика 10-11 классы Объектно–ориентированное программирование

Page 23: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Разбор класса Triangle

Аналогично создаём класс Triangle, являющийсянаследником класса Polygon.Для наследования используем конструкцию: Наследник <Родитель.Все методы и свойства класса Polygon автоматическипоявились в классе Triangle.Отдельно определяем по формуле Герона площадьтреугольника.Итого, теперь в треугольнике мы можем посчитать иплощадь, и периметр.

Информатика 10-11 классы Объектно–ориентированное программирование

Page 24: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Разбор класса Triangle

Разберёмся в конструкции self.perimeter.self означает текущий объект, то есть тот объект, длякоторого вызывается метод или свойство.self.sides — замена @sides.Однако вызвать метод со знаком @ не получится. Дляэтого и используем конструкцию self.self.perimeter вызывает метод perimeter для текущегообъекта.Задание. В чём отличие записи @perimeter отself.perimeter? Одинаков ли будет результат. Если нет,приведите пример.

Информатика 10-11 классы Объектно–ориентированное программирование

Page 25: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

Задания

Написать класс Прямоугольник — наследник Polygon.Определить в нём метод подсчёта площади. Проверитькорректность его работы.Написать в классе Прямоугольник метод, определяющий,является ли прямоугольник квадратом. Метод долженвозвращать булевский ответ. Проверить корректностьработы метода.Создать в классе Треугольник метод, проверяющий,является ли данный треугольник прямоугольным.Проверить корректность работы метода.

Информатика 10-11 классы Объектно–ориентированное программирование

Page 26: Объектно-ориентированное программирование в ruby

Что такое ООП Кот Другие животные Наследование Примеры Задания References

References

При подготовке данного материала использовались сайты:http://ru.wikibooks.org/wiki/Ruby, http://rubydev.ru,http://en.wikipedia.org, http://ruby-lang.org,http://de.trinixy.ru/, http://www.krassotkam.ru/,http://gen.su/.Все презентации доступны на http://school.smirik.ru!Вопросы, предложения, д/з: [email protected]

Информатика 10-11 классы Объектно–ориентированное программирование