Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Презентация на тему форм наследования в ООП

Презентация на тему форм наследования в ООП

PDF-файл Презентация на тему форм наследования в ООП Проектирование программного обеспечения автоматизированных систем (5766): Другое - 9 семестр (1 семестр магистратуры)Презентация на тему форм наследования в ООП: Проектирование программного обеспечения автоматизированных систем - PDF (5766) - СтудИзба2015-08-23СтудИзба

Описание файла

PDF-файл из архива "Презентация на тему форм наследования в ООП", который расположен в категории "". Всё это находится в предмете "проектирование программного обеспечения автоматизированных систем" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "проектирование по автоматизированных систем" в общих файлах.

Просмотр PDF-файла онлайн

Текст из PDF

Формы наследованияПонятие наследованияФормы наследованияПравильные формы наследования1Понятие наследованияНаследование − это такое отношение между классами, когда один класс повторяет структуру и поведение другого класса (одиночное наследование) илидругих (множественное наследование) классовНаличие механизма наследования отличает объектно-ориентированные языки от объектных2Понятие родительского и дочернегоклассовКласс, структура и поведение которого наследуется,называется суперклассом, надклассом, базовым илиродительским классомКласс, производный от суперкласса, называетсяподклассом, производным или дочерним классомMyGraphicsPrimitive2D3MyLineродительскийклассдочерний классФормы наследованияВ подклассе структура и поведение исходногосуперкласса могут дополняться, переопределятьсяили ограничиватьсяИсходя из этого, можно выделить различные формы наследования4Формы наследования(1)Специализация(2) Спецификация(3) Обобщение(4) Расширение(5) Ограничение(6) Конструирование(7) Варьирование5(8) КомбинированиеСпециализацияДочерний класс является более конкретным, частным или специализированным случаем родительского классаДочерний класс удовлетворяет спецификациям родителя во всех существенных моментах, т.е.

егоможно использовать вместо родительского классаПоведение базового класса, в основном, переопределяется6Пример специализацииИмеется класс MyEllipse, который представляет собой эллипс и поддерживает следующие операции:7−MyEllipse(MyPoint, int, int) - инициализация при создании (конструктор)−setPos(MyPoint) - задание позиции на плоскости−move(int, int) - перемещение на заданноесмещение по горизонтали и вертикали−draw() - отрисовка самого себяПример специализацииКласс MyCircle, представляющий собой окружность,может быть порожден как специализация базовогокласса MyEllipse, т.к.

поддерживает те же операции,но переопределяет их реализациюКласс MySquare (квадрат) является специализациейкласса MyRectangle (прямоугольник)MyEllipseспециализация8MyCircleMyRectangleспециализацияMySquareСпецификацияРодительский класс описывает поведение, котороереализуется в дочернем классе, но оставлено нереализованным в родительскомВ таких случаях родительский класс называют абстрактно-специфицированным классом9Пример спецификацииИмеются классы плоскостных графических примитивов − MyLine, MyRectangle, MyTriangle и MyEllipseКлассы должны поддерживать единый набор операций:10−setPos(int, int) - задание позиции на плоскости−move(int, int) - перемещение на заданноесмещение по горизонтали и вертикали−draw() - отрисовка самого себяПример спецификацииЧтобы гарантировать наличие указанных операций,нужно определить обобщенный графический примитив MyGraphicsPrimitive2D, который будет содержать в себе эти операцииНи одна из указанных операций не будет реализована в этом классе, т.к.

их реализация зависит оттипа примитиваКласс MyGraphicsPrimitive2D является абстрактными от него нельзя порождать экземпляры11Пример спецификацииMyGraphicsPrimitive2DспецификацияMyEllipse12MyRectangleMyLineОбобщениеДочерний класс модифицирует и переопределяетнекоторые методы родительского класса с цельюполучения объекта более общей категорииДанная форма наследования противоположна специализации и обычно применяется, когда построение происходит на основе существующих классов,которые мы не хотим или не можем изменять13Пример обобщенияОт класса «список» MyList, который реализует список с возможностью доступа к его голове и хвосту,наследуется класс «контейнер» MyContainer, который реализует произвольный доступ к элементамВ дочернем классе по сравнению с родительскимимеются методы добавления элементов в начало,конец и произвольную позицию контейнера и т.д.MyListобобщение14MyContainerРасширениеДочерний класс добавляет новые функциональныевозможности к родительскому классу, но не меняетнаследуемое поведениеВ отличие от обобщения или специализации прирасширении дочерний класс не переопределяет ниодного метода базового класса, а добавленные методы слабо связаны с существующими методами родителя15Пример расширенияНа основе обобщенного графического примитиваMyGraphicsPrimitive2D в двумерной плоскостиможноопределитьпроизводныйклассMyAreaPrimitive2D, который определяет все примитивы, имеющие площадьПо сравнению с базовым классом в классMyAreaPrimitive2D добавлен метод area(), которыйвозвращает площадь плоскостной фигурыMyGraphicsPrimitive2Dрасширение16MyAreaPrimitive2DОграничениеДочерний класс ограничивает использование некоторых методов родительского классаТак же, как и при обобщении, порождение для ограничения чаще всего возникает, когда, программистстроит класс на основе существующей иерархииклассов, которая не должна или не может быть изменена17Пример ограниченияИмеется класс MyDeque, представляющий собойдвустороннюю очередь (элементы добавляются иизвлекаются с любого конца)На основе классаMyDeque порождается классMyStack, представляющий собой стек, в котором добавление и извлечение элементов осуществляетсятолько из одного конца18Пример ограниченияКласс MyStack должен скрыть методы добавления иизвлечения элементов из другого конца очередиMyDequeограничениеMyStack19Пример ограниченияИмеется класс MyEllipse, который представляет собой эллипс и поддерживает следующие операции:20−MyEllipse(MyPoint, int, int) - инициализация при создании (конструктор)−setPos(MyPoint) - задание позиции на плоскости−setRadius(int, int) - задание радиусов−draw() - отрисовка самого себяПример ограниченияКласс MyCircle, представляющий собой окружность,должен ограничить базовый класс MyEllipse, т.к.

длянего не применим метод setRadius(int, int)MyEllipseограничениеMyCircle21КонструированиеДочерний класс использует методы, предопределяемые родительским классомМежду дочерним и родительским классами отсутствует отношение «is-a» или «быть экземпляром»,т.е. дочерний класс не является более специализированной формой родительского класса22КонструированиеОбычно для реализации такой формы наследованияиспользуется механизм закрытого наследованияДочерний класс часто изменяет не только именаметодов базового класса, но и аргументы23Пример конструированияКласс олимпийских колец MyOlimpicRings наследуется от класса MyCircleКласс MyOlimpicRings для собственной отрисовкииспользует операции базового класса move(int,int) и draw()MyCircleконструированиеMyOlimpicRings24ВарьированиеВарьирование наблюдается, когда два класса имеютсходную реализацию и находятся примерно на одном уровне иерархии, т.е.

являются частными случаями более общего понятия25Пример варьированияИмеется класс MySlider, который представляет собой элемент управления «бегунок»На его основе можно породить класс MyDial, представляющий собой «циферблат». Этот класс вомногом схож с MySlider, т.к. по своей сути является«круговым бегунком»MySliderварьированиеMyDial26Пример избавления от варьированияОднако лучшей альтернативой является выделениеобщего кода в абстрактный класс, например,MyAbstractSlider, и порождение обоих классов отэтого общего предкаТакой путь может быть недоступен при доработкеуже существующего классаMyAbstractSliderспецификация27MySliderMyDialКомбинированиеДочерний класс наследует черты более чем одногородительского классаДля комбинирования классов используется механизм множественного наследования28Пример комбинированияИмеется класс MyWidget, который обеспечивает базовое поведение всех элементов управленияИмеется класс MyTimer, представляющий собойтаймер29Пример комбинированияДля реализации виджета «секундомер» создаетсякласс MyStopWatch, который наследует поведениесразу двух базовых классовПри таком подходе класс MyStopWatch можно использовать и как элемент управления, и как таймер("играет" сразу две роли)MyWidgetMyTimerкомбинирование30MyStopWatchПравильные формы наследования(подход "is-a")К правильным формам относятся только те, в которых между дочерним и родительским классом возникает отношение "is-a" или "быть экземпляром"или "обобщение−специализация", т.е.

дочернийкласс является частным случаем своего предка"Лакмусовая бумажка" наследования − это обратнаяпроверка: если B не есть A, то B не стоит производить от A31Примеры правильных формнаследования (подход "is-a")Утверждение «прямоугольник не есть частный случай квадрата» верно, поэтому класс MyRectangle недолжен наследоваться от MySquareУтверждение «окружность не есть частный случайэллипса» неверно, поэтому класс MyCircle долженнаследоваться от MyEllipseУтверждение «олимпийские кольца не есть частныйслучайокружности»верно,поэтомуклассMyOlimpicRings не должен наследоваться отMyCircle32Правильные формы наследования(подход "is-a")(1)Специализация(2) Спецификация(3) Расширение (в большинстве случаев)(4) Ограничение (иногда)(5) Комбинирование (иногда)33Правильные формы наследования(подход "тип−подтип")Форму наследования можно считать правильной,если между суперклассом и подклассом имеется отношение "тип−подтип" ,т.е.

выполняется принципподстановкиПринцип подстановки: говорят, что тип B являетсяподтипом A, если мы можем в любой ситуацииподставить экземпляр класса B вместо экземпляракласса A без каких-либо видимых изменений в пове34 денииПравильные формы наследования(подход "тип−подтип")Для того чтобы класс B был подтипом класса A, ондолжен иметь схожее поведение с классом A во всехсущественных моментахСхожее поведение означает, что класс B долженподдерживать тот же набор методов, что и класс A,при этом семантика реализуемых методов должнабыть сопоставима35Примеры правильных форм наследования(подход "тип−подтип")В любом месте программы вместо классаMyGraphicsPrimitive2D, представляющего собойобобщенный графический примитив на плоскости,можноподставитьклассыMyLine(линия),MyRectangle (прямоугольник) и MyEllipse (эллипс)MyGraphicsPrimitive2Dтип-подтипMyEllipse36MyRectangleMyLineПравильные формы наследования(подход "тип−подтип")(1)Специализация(2) Спецификация(3) Обобщение(4) Расширение(5) Конструирование (очень редко)(6) Варьирование (иногда)(7) Комбинирование37"Абсолютно" правильные формынаследования(1)Специализация(2) Спецификация(3) Расширение - если производный класс естьчастный случай базового(4) Комбинирование - если производный класс естьчастный случай базовых и является подтипомбазовых типов38"Допустимые" формы наследованияЕсли используется готовая библиотека классов, тодопустимы следующие формы наследования:(1)Обобщение(2) Ограничение(3) Варьирование(4) Комбинирование - если производный класс неявляется частным случаем базовых39"Недопустимые" формы наследования• Конструирование всегда является недопустимойформой наследования и всегда может быть заменено на отношение агрегации или использованиямежду классами40Пример различных форм наследованияMyGraphicsPrimitive2DрасширениеспецификацияMyAreaPrimitive2DспецификацияMyEllipseспецификацияMyRectangleспециализацияMyCircle41специализацияMySquareMyLine.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
437
Средний доход
с одного платного файла
Обучение Подробнее