Объектно-ориентированное программирование в ruby
TRANSCRIPT
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Объектно–ориентированное программирование
Информатика10-11 классы
26 февраля 2012 г.
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Что такое ООП?
Динамическое и функциональное виды программирования,как известно, решают весьма важную задачу разделениябизнес–логики приложения от низкоуровневых алгоритмов.Когда мы используем автомобиль, мы не задумываемся оего устройстве, а просто используем различные способыуправления.При этом даже те инженеры, которые разрабатываютавтомобили, имеют свои специализации: часть занимаетсядвигателем, часть — дизайном, часть — безопасностью, акто-то — и концепцией в целом.
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Что такое ООП?
Концепция объектно–ориентированного программирования(ООП) предлагает оперировать в программе непеременными и функциями, а объектами.Всё в программе является объектами.У объекта имеются свойства и методы.Свойства представляют собой переменные,принадлежащие объекту.Методы — функции, позволяющие получить / изменитьинформацию об объекте.
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Объект Кот
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Какие свойства есть у кота?
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Свойства кота
ПородаЦветРостВозрастДата последнего кормленияДата последнего поглаживанияДата последнего мяукания...
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
А методы?
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Методы кота
МяукнутьПоестьПотребовать погладитьПогулять...
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
А что с другими животными?
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Упс, не то
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Собака
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Сравнение свойств Кота и Собаки
ПородаЦветРостВозрастДата последнегокормленияДата последнегопоглаживанияДата последнегомяукания
ПородаЦветРостВозрастДата последнегокормленияДата последнегопоглаживанияДата последнегогавкания
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Сравнение методов Кота и Собаки
МяукнутьПоестьПотребовать погладитьПогулять
ГавкнутьПоестьПотребовать погладитьПогулятьВыгуляться
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Домашние животные
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Принцип наследованияОбщие свойства и методы объектов можно
вынести в класс–родитель. Все“дети”–наследники автоматически получают их.
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Схема наследования
Родитель: Домашнее животное
Наследник: Кот Наследник: Собака
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Несколько нудных терминов
Одинаковые объекты являются экземплярами класса.Кот — это, на самом деле, класс.А вот, например, кот Вася — это объект, то есть,представитель класса.Класс — это программная структура.В программе мы сначала создаём класс, а потом ужесоздаём (инстанцируем) объекты.В ruby всё что угодно является объектом. Даже число 5,строка “мама мыла раму” и пр.
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Класс Многоугольник
Создадим класс Многоугольник.Базовые свойства фигуры: стороны фигуры, углы,периметр, площадь и др.Методы: посчитать площадь, посчитать периметр, найтирадиус описанной окружности и др.Фигуры бывают разные: треугольник, четырёхугольник(среди которых тоже есть квадрат, ромб и пр.)У каких-то фигур мы знаем, как считать площадь и пр., ау каких-то — нет.Напишем программу.
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания 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 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Пояснения к классу
Методы класса определяются точно так же, как и обычныефункции. Отличий нет.Свойства класса мы будем определять через специальнуюконструкцию attr_accessor. Не вдаваясь в детали, простоперечислим все свойства–переменные. Обратите внимание,что они начинаются со знака “двоеточие”.Чтобы внутри метода обратиться к свойству, нужно передего (свойства) названием поставить знак @.В данном классе мы определяем методы perimeter иnum_points (количество вершин). Мы специально методperimeter назвали одинаково со свойством, чтобы привызове obj.perimeter происходило автоматическоевычисление.
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания 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 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания 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 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Разбор класса Triangle
Аналогично создаём класс Triangle, являющийсянаследником класса Polygon.Для наследования используем конструкцию: Наследник <Родитель.Все методы и свойства класса Polygon автоматическипоявились в классе Triangle.Отдельно определяем по формуле Герона площадьтреугольника.Итого, теперь в треугольнике мы можем посчитать иплощадь, и периметр.
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Разбор класса Triangle
Разберёмся в конструкции self.perimeter.self означает текущий объект, то есть тот объект, длякоторого вызывается метод или свойство.self.sides — замена @sides.Однако вызвать метод со знаком @ не получится. Дляэтого и используем конструкцию self.self.perimeter вызывает метод perimeter для текущегообъекта.Задание. В чём отличие записи @perimeter отself.perimeter? Одинаков ли будет результат. Если нет,приведите пример.
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания References
Задания
Написать класс Прямоугольник — наследник Polygon.Определить в нём метод подсчёта площади. Проверитькорректность его работы.Написать в классе Прямоугольник метод, определяющий,является ли прямоугольник квадратом. Метод долженвозвращать булевский ответ. Проверить корректностьработы метода.Создать в классе Треугольник метод, проверяющий,является ли данный треугольник прямоугольным.Проверить корректность работы метода.
Информатика 10-11 классы Объектно–ориентированное программирование
Что такое ООП Кот Другие животные Наследование Примеры Задания 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 классы Объектно–ориентированное программирование