ݺߣ

ݺߣShare a Scribd company logo
Что такое ООП   Кот   Другие животные        Наследование    Примеры      Задания     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 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 классы         Объектно–ориентированное программирование
Что такое ООП   Кот   Другие животные        Наследование    Примеры      Задания     References



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

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

                  Информатика 10-11 классы       Объектно–ориентированное программирование
Что такое ООП    Кот    Другие животные        Наследование    Примеры      Задания     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 классы       Объектно–ориентированное программирование
Что такое ООП     Кот      Другие животные        Наследование       Примеры    Задания     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 классы          Объектно–ориентированное программирование
Что такое ООП   Кот   Другие животные        Наследование    Примеры      Задания     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!
           Вопросы, предложения, д/з: smirik@gmail.com




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

More Related Content

What's hot (16)

Ruby: работа с массивами
Ruby: работа с массивамиRuby: работа с массивами
Ruby: работа с массивами
Evgeny Smirnov
Расстаемся с мифами о ФП
Расстаемся с мифами о ФП Расстаемся с мифами о ФП
Расстаемся с мифами о ФП
Ivan Grishaev
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Alexey Noskov
04 классическая логика предикатов
04 классическая логика предикатов04 классическая логика предикатов
04 классическая логика предикатов
Julia Gorbatova
Ruby статические методы
Ruby статические методыRuby статические методы
Ruby статические методы
Evgeny Smirnov
Лекция 10 NP-полнота
Лекция 10 NP-полнотаЛекция 10 NP-полнота
Лекция 10 NP-полнота
simple_people
ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)
ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)
ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)
ScalaNsk
03 классическая логика высказываний
03 классическая логика высказываний03 классическая логика высказываний
03 классическая логика высказываний
Julia Gorbatova
элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
Елена Ключева
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
Lidia Pivovarova
"Зачем учить F# и как начать: парсим интернет страницу и складываем в базу" А...
"Зачем учить F# и как начать: парсим интернет страницу и складываем в базу" А..."Зачем учить F# и как начать: парсим интернет страницу и складываем в базу" А...
"Зачем учить F# и как начать: парсим интернет страницу и складываем в базу" А...
Fwdays
Java. Полиморфизм.
Java. Полиморфизм.Java. Полиморфизм.
Java. Полиморфизм.
Unguryan Vitaliy
Разрешение лексической неоднозначности
Разрешение лексической неоднозначностиРазрешение лексической неоднозначности
Разрешение лексической неоднозначности
Спецсеминар "Искусственный Интеллект" кафедры АЯ ВМК МГУ
Ruby: работа с массивами
Ruby: работа с массивамиRuby: работа с массивами
Ruby: работа с массивами
Evgeny Smirnov
Расстаемся с мифами о ФП
Расстаемся с мифами о ФП Расстаемся с мифами о ФП
Расстаемся с мифами о ФП
Ivan Grishaev
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...Анализ  текста на основе лексико-синтаксичеких  шаблонов c сокращением многов...
Анализ текста на основе лексико-синтаксичеких шаблонов c сокращением многов...
Alexey Noskov
04 классическая логика предикатов
04 классическая логика предикатов04 классическая логика предикатов
04 классическая логика предикатов
Julia Gorbatova
Ruby статические методы
Ruby статические методыRuby статические методы
Ruby статические методы
Evgeny Smirnov
Лекция 10 NP-полнота
Лекция 10 NP-полнотаЛекция 10 NP-полнота
Лекция 10 NP-полнота
simple_people
ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)
ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)
ООП в Scala: выход из застоя (ScalaNsk meeting #5, 22.11.2013)
ScalaNsk
03 классическая логика высказываний
03 классическая логика высказываний03 классическая логика высказываний
03 классическая логика высказываний
Julia Gorbatova
элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
Елена Ключева
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
Lidia Pivovarova
"Зачем учить F# и как начать: парсим интернет страницу и складываем в базу" А...
"Зачем учить F# и как начать: парсим интернет страницу и складываем в базу" А..."Зачем учить F# и как начать: парсим интернет страницу и складываем в базу" А...
"Зачем учить F# и как начать: парсим интернет страницу и складываем в базу" А...
Fwdays

Viewers also liked (15)

Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в ruby
Evgeny Smirnov
Егор Стремоусов. Модульная сетка: Что? Где? Когда?
Егор Стремоусов. Модульная сетка: Что? Где? Когда?Егор Стремоусов. Модульная сетка: Что? Где? Когда?
Егор Стремоусов. Модульная сетка: Что? Где? Когда?
Egor Stremousov
rubygarage
rubygaragerubygarage
rubygarage
Volodymyr Vorobiov
NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.
Evgeny Smirnov
Основы Java. ООП. Объекты, классы, интерфейсы
Основы Java. ООП. Объекты, классы, интерфейсыОсновы Java. ООП. Объекты, классы, интерфейсы
Основы Java. ООП. Объекты, классы, интерфейсы
Sergey Nemchinsky
Как продвинуть бренд в Instagram с нуля и без особых затрат
Как продвинуть бренд в Instagram с нуля и без особых затратКак продвинуть бренд в Instagram с нуля и без особых затрат
Как продвинуть бренд в Instagram с нуля и без особых затрат
i-Guru digital agency
Ruby basics
Ruby basicsRuby basics
Ruby basics
Mikhail Vaysman
Top10 доводов против языка Ruby
Top10 доводов против языка RubyTop10 доводов против языка Ruby
Top10 доводов против языка Ruby
guest5f907e
Основы ооп на языке C#. Часть 2. базовый синтаксис.
Основы ооп на языке C#. Часть 2. базовый синтаксис.Основы ооп на языке C#. Часть 2. базовый синтаксис.
Основы ооп на языке C#. Часть 2. базовый синтаксис.
YakubovichDA
основы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеосновы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программирование
YakubovichDA
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
Яковенко Кирилл
Мобильные приложения в школе
Мобильные приложения в школеМобильные приложения в школе
Мобильные приложения в школе
Evgeny Smirnov
Лекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страницЛекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страниц
Яковенко Кирилл
Лекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилейЛекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилей
Яковенко Кирилл
Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в ruby
Evgeny Smirnov
Егор Стремоусов. Модульная сетка: Что? Где? Когда?
Егор Стремоусов. Модульная сетка: Что? Где? Когда?Егор Стремоусов. Модульная сетка: Что? Где? Когда?
Егор Стремоусов. Модульная сетка: Что? Где? Когда?
Egor Stremousov
NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.
Evgeny Smirnov
Основы Java. ООП. Объекты, классы, интерфейсы
Основы Java. ООП. Объекты, классы, интерфейсыОсновы Java. ООП. Объекты, классы, интерфейсы
Основы Java. ООП. Объекты, классы, интерфейсы
Sergey Nemchinsky
Как продвинуть бренд в Instagram с нуля и без особых затрат
Как продвинуть бренд в Instagram с нуля и без особых затратКак продвинуть бренд в Instagram с нуля и без особых затрат
Как продвинуть бренд в Instagram с нуля и без особых затрат
i-Guru digital agency
Top10 доводов против языка Ruby
Top10 доводов против языка RubyTop10 доводов против языка Ruby
Top10 доводов против языка Ruby
guest5f907e
Основы ооп на языке C#. Часть 2. базовый синтаксис.
Основы ооп на языке C#. Часть 2. базовый синтаксис.Основы ооп на языке C#. Часть 2. базовый синтаксис.
Основы ооп на языке C#. Часть 2. базовый синтаксис.
YakubovichDA
основы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеосновы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программирование
YakubovichDA
Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3Лекция #5. Введение в язык программирования Python 3
Лекция #5. Введение в язык программирования Python 3
Яковенко Кирилл
Мобильные приложения в школе
Мобильные приложения в школеМобильные приложения в школе
Мобильные приложения в школе
Evgeny Smirnov
Лекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страницЛекция #3. Введение в языки разметки web-страниц
Лекция #3. Введение в языки разметки web-страниц
Яковенко Кирилл
Лекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилейЛекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилей
Яковенко Кирилл

More from Evgeny Smirnov (20)

Внедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатикиВнедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатики
Evgeny Smirnov
Инновации которые не мешают
Инновации которые не мешаютИнновации которые не мешают
Инновации которые не мешают
Evgeny Smirnov
Порядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системеПорядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системе
Evgeny Smirnov
Ruby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизмRuby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизм
Evgeny Smirnov
Мобильные приложения в образовании
Мобильные приложения в образованииМобильные приложения в образовании
Мобильные приложения в образовании
Evgeny Smirnov
Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2
Evgeny Smirnov
Мастер-класс: Anki карточки
Мастер-класс: Anki карточкиМастер-класс: Anki карточки
Мастер-класс: Anki карточки
Evgeny Smirnov
Мастер-класс: Quiz up
Мастер-класс: Quiz upМастер-класс: Quiz up
Мастер-класс: Quiz up
Evgeny Smirnov
Мастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraМастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox Algebra
Evgeny Smirnov
Мастер-класс: начало
Мастер-класс: началоМастер-класс: начало
Мастер-класс: начало
Evgeny Smirnov
LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)
Evgeny Smirnov
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Evgeny Smirnov
Образовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуОбразовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методисту
Evgeny Smirnov
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42
Evgeny Smirnov
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмы
Evgeny Smirnov
Построение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамПостроение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицам
Evgeny Smirnov
Функции для работы с электронными таблицами
Функции для работы с электронными таблицамиФункции для работы с электронными таблицами
Функции для работы с электронными таблицами
Evgeny Smirnov
Электронные таблицы
Электронные таблицыЭлектронные таблицы
Электронные таблицы
Evgeny Smirnov
Внедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатикиВнедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатики
Evgeny Smirnov
Инновации которые не мешают
Инновации которые не мешаютИнновации которые не мешают
Инновации которые не мешают
Evgeny Smirnov
Порядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системеПорядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системе
Evgeny Smirnov
Ruby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизмRuby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизм
Evgeny Smirnov
Мобильные приложения в образовании
Мобильные приложения в образованииМобильные приложения в образовании
Мобильные приложения в образовании
Evgeny Smirnov
Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2
Evgeny Smirnov
Мастер-класс: Anki карточки
Мастер-класс: Anki карточкиМастер-класс: Anki карточки
Мастер-класс: Anki карточки
Evgeny Smirnov
Мастер-класс: Quiz up
Мастер-класс: Quiz upМастер-класс: Quiz up
Мастер-класс: Quiz up
Evgeny Smirnov
Мастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraМастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox Algebra
Evgeny Smirnov
Мастер-класс: начало
Мастер-класс: началоМастер-класс: начало
Мастер-класс: начало
Evgeny Smirnov
LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)
Evgeny Smirnov
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Evgeny Smirnov
Образовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуОбразовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методисту
Evgeny Smirnov
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42
Evgeny Smirnov
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмы
Evgeny Smirnov
Построение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицамПостроение диаграмм по электронным таблицам
Построение диаграмм по электронным таблицам
Evgeny Smirnov
Функции для работы с электронными таблицами
Функции для работы с электронными таблицамиФункции для работы с электронными таблицами
Функции для работы с электронными таблицами
Evgeny Smirnov
Электронные таблицы
Электронные таблицыЭлектронные таблицы
Электронные таблицы
Evgeny Smirnov

Ruby: основы ООП

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