Ruby: основы ООП

4,691 views

Published on

Основы объектно-ориентированного программирования на ruby. Разбор концепции наследования.

Оригинал: http://school.smirik.ru/show/43

Published in: Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,691
On SlideShare
0
From Embeds
0
Number of Embeds
195
Actions
Shares
0
Downloads
52
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Ruby: основы ООП

  1. 1. Что такое ООП Кот Другие животные Наследование Примеры Задания References Объектно–ориентированное программирование Информатика 10-11 классы 26 февраля 2012 г. Информатика 10-11 классы Объектно–ориентированное программирование
  2. 2. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesЧто такое ООП? Динамическое и функциональное виды программирования, как известно, решают весьма важную задачу разделения бизнес–логики приложения от низкоуровневых алгоритмов. Когда мы используем автомобиль, мы не задумываемся о его устройстве, а просто используем различные способы управления. При этом даже те инженеры, которые разрабатывают автомобили, имеют свои специализации: часть занимается двигателем, часть — дизайном, часть — безопасностью, а кто-то — и концепцией в целом. Информатика 10-11 классы Объектно–ориентированное программирование
  3. 3. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesЧто такое ООП? Концепция объектно–ориентированного программирования (ООП) предлагает оперировать в программе не переменными и функциями, а объектами. Всё в программе является объектами. У объекта имеются свойства и методы. Свойства представляют собой переменные, принадлежащие объекту. Методы — функции, позволяющие получить / изменить информацию об объекте. Информатика 10-11 классы Объектно–ориентированное программирование
  4. 4. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesОбъект Кот Информатика 10-11 классы Объектно–ориентированное программирование
  5. 5. Что такое ООП Кот Другие животные Наследование Примеры Задания References Какие свойства есть у кота? Информатика 10-11 классы Объектно–ориентированное программирование
  6. 6. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesСвойства кота Порода Цвет Рост Возраст Дата последнего кормления Дата последнего поглаживания Дата последнего мяукания ... Информатика 10-11 классы Объектно–ориентированное программирование
  7. 7. Что такое ООП Кот Другие животные Наследование Примеры Задания References А методы? Информатика 10-11 классы Объектно–ориентированное программирование
  8. 8. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesМетоды кота Мяукнуть Поесть Потребовать погладить Погулять ... Информатика 10-11 классы Объектно–ориентированное программирование
  9. 9. Что такое ООП Кот Другие животные Наследование Примеры Задания References А что с другими животными? Информатика 10-11 классы Объектно–ориентированное программирование
  10. 10. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesУпс, не то Информатика 10-11 классы Объектно–ориентированное программирование
  11. 11. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesСобака Информатика 10-11 классы Объектно–ориентированное программирование
  12. 12. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesСравнение свойств Кота и Собаки Порода Порода Цвет Цвет Рост Рост Возраст Возраст Дата последнего Дата последнего кормления кормления Дата последнего Дата последнего поглаживания поглаживания Дата последнего Дата последнего мяукания гавкания Информатика 10-11 классы Объектно–ориентированное программирование
  13. 13. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesСравнение методов Кота и Собаки Гавкнуть Мяукнуть Поесть Поесть Потребовать погладить Потребовать погладить Погулять Погулять Выгуляться Информатика 10-11 классы Объектно–ориентированное программирование
  14. 14. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesДомашние животные Информатика 10-11 классы Объектно–ориентированное программирование
  15. 15. Что такое ООП Кот Другие животные Наследование Примеры Задания References Принцип наследования Общие свойства и методы объектов можно вынести в класс–родитель. Все “дети”–наследники автоматически получают их. Информатика 10-11 классы Объектно–ориентированное программирование
  16. 16. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesСхема наследования Родитель: Домашнее животное Наследник: Кот Наследник: Собака Информатика 10-11 классы Объектно–ориентированное программирование
  17. 17. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesНесколько нудных терминов Одинаковые объекты являются экземплярами класса. Кот — это, на самом деле, класс. А вот, например, кот Вася — это объект, то есть, представитель класса. Класс — это программная структура. В программе мы сначала создаём класс, а потом уже создаём (инстанцируем) объекты. В ruby всё что угодно является объектом. Даже число 5, строка “мама мыла раму” и пр. Информатика 10-11 классы Объектно–ориентированное программирование
  18. 18. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesКласс Многоугольник Создадим класс Многоугольник. Базовые свойства фигуры: стороны фигуры, углы, периметр, площадь и др. Методы: посчитать площадь, посчитать периметр, найти радиус описанной окружности и др. Фигуры бывают разные: треугольник, четырёхугольник (среди которых тоже есть квадрат, ромб и пр.) У каких-то фигур мы знаем, как считать площадь и пр., а у каких-то — нет. Напишем программу. Информатика 10-11 классы Объектно–ориентированное программирование
  19. 19. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesКласс Многоугольник Listing 1: Класс Многоугольник c l a s s Polygon attr_accessor : sides , : corners , : perimeter , : square def perimeter @ p e r i m e t e r = @ s i d e s . i n j e c t ( 0 ) { | r e s , elem | r e s + elem } end d e f num_points @sides . s i z e end end Информатика 10-11 классы Объектно–ориентированное программирование
  20. 20. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesПояснения к классу Методы класса определяются точно так же, как и обычные функции. Отличий нет. Свойства класса мы будем определять через специальную конструкцию attr_accessor. Не вдаваясь в детали, просто перечислим все свойства–переменные. Обратите внимание, что они начинаются со знака “двоеточие”. Чтобы внутри метода обратиться к свойству, нужно перед его (свойства) названием поставить знак @. В данном классе мы определяем методы perimeter и num_points (количество вершин). Мы специально метод perimeter назвали одинаково со свойством, чтобы при вызове obj.perimeter происходило автоматическое вычисление. Информатика 10-11 классы Объектно–ориентированное программирование
  21. 21. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesИспользуем класс Polygon Listing 2: Использование Polygon f i g = P o l y g o n . new fig . sides = [2 ,4 ,2 ,4] f i g . c o r n e r s = [ 9 0 , 90 , 90 , 90] puts f i g . perimeter Для создания экземпляра класса используется конструкция CLASS.new. Аналог — ручное создание массивов и хэшей. Некоторые свойства мы задаём вручную. Также, как и массивами, для вызова методов и свойств используем разделитель–точку. Информатика 10-11 классы Объектно–ориентированное программирование
  22. 22. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesКласс Triangle Listing 3: Класс Triangle c l a s s T r i a n g l e < Polygon def square pp = s e l f . p e r i m e 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 end end t r = T r i a n g l e . new tr . sides = [3 ,4 ,5] puts t r . square puts t r . perimeter Информатика 10-11 классы Объектно–ориентированное программирование
  23. 23. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesРазбор класса Triangle Аналогично создаём класс Triangle, являющийся наследником класса Polygon. Для наследования используем конструкцию: Наследник < Родитель. Все методы и свойства класса Polygon автоматически появились в классе Triangle. Отдельно определяем по формуле Герона площадь треугольника. Итого, теперь в треугольнике мы можем посчитать и площадь, и периметр. Информатика 10-11 классы Объектно–ориентированное программирование
  24. 24. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesРазбор класса Triangle Разберёмся в конструкции self.perimeter. self означает текущий объект, то есть тот объект, для которого вызывается метод или свойство. self.sides — замена @sides. Однако вызвать метод со знаком @ не получится. Для этого и используем конструкцию self. self.perimeter вызывает метод perimeter для текущего объекта. Задание. В чём отличие записи @perimeter от self.perimeter? Одинаков ли будет результат. Если нет, приведите пример. Информатика 10-11 классы Объектно–ориентированное программирование
  25. 25. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesЗадания Написать класс Прямоугольник — наследник Polygon. Определить в нём метод подсчёта площади. Проверить корректность его работы. Написать в классе Прямоугольник метод, определяющий, является ли прямоугольник квадратом. Метод должен возвращать булевский ответ. Проверить корректность работы метода. Создать в классе Треугольник метод, проверяющий, является ли данный треугольник прямоугольным. Проверить корректность работы метода. Информатика 10-11 классы Объектно–ориентированное программирование
  26. 26. Что такое ООП Кот Другие животные Наследование Примеры Задания ReferencesReferences При подготовке данного материала использовались сайты: 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! Вопросы, предложения, д/з: smirik@gmail.com Информатика 10-11 классы Объектно–ориентированное программирование

×