Спец часть (часть 2) (3 поток) (2015) (by Кибитова) (1161602), страница 24
Текст из файла (страница 24)
же достаточноНаследованиеестьнаоченьважноепонятие,поддерживающееконцепциюВыборконкретногодействия(метода)применительнок конкретнойситуациивозлагаетсякомпилятор.Программистузапомиерархическойклассификации.ситуациивозлагаетсянакомпилятор.Программистужедостаточнозапомнить и применить один интерфейс, вместо нескольких, что также упрощает4.работу.Полиморфизм-одинспособностьоперации(функции)с одними тем упрощаетже именем выполнятьнитьи 3)применитьинтерфейс,вместонескольких,что такжеПолиморфизм— механизм,позволяющийиспользоватьодин и тотразличныедействияв зависимостиот типа своих операндов.работу.же интерфейсдляобщегоклассадействий.Различаются статический (реализуется на этапе компиляцииРазличаютсястатическийна этапе (реализуетсякомпиляции вос помощьюперегрузкифункцийи (реализуетсяопераций),Пример:В обычныхязыках: операции+ и -. динамическийПример:с помощьюперегрузкифункций исопераций),динамический(реализуетсявовремя выполненияпрограммыпомощью механизмавиртуальныхфункций)времявыполненияпрограммыспомощьюмеханизмавиртуальныхфункций)ипараметрический(реализуетсянаэтапекомпиляциисиспользованиемИмеются3 типа стекафункциидля хранения:В ОО языках- виртуальныеи параметрический(реализуетсяна этапе компиляции с использованиеммеханизма шаблонов)полиморфизм.— целых чисел,механизмашаблонов)полиморфизм.Полиморфизмбывает статический и динамический.Примечание— чисел с плавающей точкой,ПримечаниеРассмотренныепонятия операцийабстракции,инкапсуляции,наследования, полимор— символов.Статический- перекрытие(Ада,C++,ObjectPascal).физма присущине толькопарадигмеООП.
Так, выполнениеарифметическихРассмотренныепонятияабстракции,инкапсуляции,наследования,полимор-— чисел с плавающейточкой, с помощью которого один объект (про2)— механизм,— Наследованиесимволов.ВООООязыкахязыкахвиртуальныефункцииВизводноговиртуальныефункциикласса) приобретает свойства другого объекта (родительского,— символов.ВместотрехПриподпрограммуправленияв объектно-ориентированнойбазовогокласса).использованиинаследованияновый объект не обязаВместотрехподпрограммуправленияв объектно-ориентированнойПолиморфизмбываетстатическийидинамический.программетребуетсявсегооднаподпрограмма(одинПолиморфизмбываетстатическийидинамический.тельно описывать, начиная с нуля, что существенно интерфейс)упрощает работу пропрограмме требуется всего одна подпрограмма (один интерфейс)граммиста.Наследованиепозволяеткакому-либообъектунаследоватьотОбщая -концепцияполиморфизма:одининтерфейс — многометодов.Статическийперекрытиеопераций(Ада,(Ада,C++,ObjectPascal).СтатическийперекрытиеоперацийC++,ObjectPascal).концепцияполиморфизма:интерфейс —многосвоегоОбщаяродителяобщие атрибуты,а для одинсебя определятьтолькоте методов.характеВыбор конкретного действия (метода) применительно к конкретнойристики,которыеделаютегоуникальнымвнутрикласса.Выборконкретногодействия (метода)применительнок конкретнойДинамическиймеханизмвиртуальныхфункцийситуациивозлагаетсяна виртуальныхкомпилятор.Программистуже достаточнозапомДинамический- -механизмфункцийситуациивозлагаетсякомпилятор.ПрограммистужечтодостаточнозапомНаследованиеестьнаоченьважноепонятие,поддерживающееконцепциюнитьи применитьодининтерфейс,вместонескольких,такжеупрощаетнитьиприменитьодининтерфейс,вместонескольких,чтотакжеупрощаетВиртуальныефункцииявляютсяпримеромполиморфныхфункций.Виртуальнаяфункцияиерархическойклассификации.работу.Виртуальныефункцииявляются примером полиморфных функций.
Виртуальная функцияработу.можетбытьпереопределенапроизводномклассе,следовательноследовательнореализацияможетбытьпереопределенаввпроизводномклассе,еееереализация3)Полиморфизм— механизм,позволяющийиспользоватьодини тотРазличаютсястатический(реализуетсянаэтапе компиляцииРазличаютсястатический(реализуетсяна этапекомпиляциизависитотвсейвсейпоследовательностиметодическихописанийнаследственнойиерархии.жеинтерфейсдляобщегокласса идействий.с помощьюперегрузкифункцийопераций),динамическийво иерархии.зависитотпоследовательностиметодическихописанийии(реализуетсянаследственнойспомощьюперегрузкифункцийиопераций),динамический(реализуетсявовремяименновыполненияпрограммыфункцийс помощьюмеханизмавиртуальныхфункций) типаКакаяименноизвиртуальныхвиртуальныхфункцийбудетвызваназависитдинамическоготипаКакаяизбудетвызваназависитототдинамическоговремявыполнения программыс помощьюмеханизмавиртуальныхфункций)Пример:ипараметрический(реализуетсянаэтапекомпиляциисиспользованиемобъектаииопределяетсяопределяетсяввмоментмоментобращенияобращенияк квиртуальнойвиртуальнойфункции.функции.ДляДляэтогоэтогообъектаи параметрическиймеханизмашаблонов) (реализуетсяполиморфизм.на этапе компиляции с использованиемИмеются3 типавиртуальныхстекадля хранения:используетсятаблицавиртуальныхфункций,определеннаяопределеннаядлядлякаждогокаждогокласса.класса.используетсятаблицафункций,механизмашаблонов)полиморфизм.Примечание— целых чисел,Примечание возможностиДополнительныевозможностиООязыков:языков:ДополнительныеООРассмотренныепонятияабстракции,инкапсуляции, наследования, полимор— чисел с плавающейточкой,физмаприсущи нетолькоабстракции,парадигме ООП.Так, выполнениеарифметическихРассмотренныепонятияинкапсуляции,наследования,полимор— символов.операцийнад целымичисламии числамиснесколькоплавающейточкой арифметическихосуществляютсяфизмаприсущине толькопарадигмеООП.Так, выполнениеНекоторыеязыкипозволяютопределятьспециальныхметодовкласса:класса:Некоторыеязыкипозволяютопределятьнесколькоспециальныхметодоввоперацийпроцессорепоразнымалгоритмам.Однаков данномслучаеполиморфизмцелымичисламии числамис плавающейточкойосуществляютсяВместонадтрехподпрограммуправленияв объектно-ориентированнойпроявляетсянеявно.впроцессорепоразнымалгоритмам.ОднаковданномслучаеполиморфизмКонструкторспециальнаяпроцедураклассадлядлясозданияи/илиинициализацииКонструктор- -специальнаяклассасозданияи/илиинициализациипрограмметребуетсявсегопроцедураоднаподпрограмма(одининтерфейс)проявляется неявно.начальногосостоянияобъекта.частности,конструкторможетинициализироватьначальногообъекта.ВВчастности,конструкторинициализироватьОбщаясостоянияконцепцияполиморфизма:одининтерфейсможет— многометодов.таблицувиртуальныхвиртуальныхфункций.функций.таблицуВыбор конкретного действия (метода) применительно к конкретнойситуациивозлагаетсяна процедуракомпилятор.Программистуже достаточнозапомДеструкторспециальнаяпроцедуракласа,класа,котораяделаетделаетсостояниеобъектаобъектаДеструктор- -специальнаякотораясостояниенить и применить один интерфейс, вместо нескольких, что также упрощаетнеопределенным(или)ликвидируетликвидируетсамобъект.объект.неопределеннымии(или)самТипы данных, создаваемыепользователем(программистом), называютсяработу.Типы данных, создаваемые(программистом),типназываютсяпользовательскимитипамипользователемданных.
ПользовательскийданныхРазличаютсястатический(реализуетсяна этапекомпиляцииНекоторыепреимуществаООНекоторыепреимуществаООподхода:подхода:типамиданных.Пользовательскийтипданныхспользовательскимиполностьюскрытой(инкапсулированной)внутреннейструктуройназывасетсяперегрузкифункцийиопераций),динамический(реализуетсявоспомощьюполностьюскрытой(инкапсулированной)внутреннейструктуройназываабстрактным типом данных (АТД).1.времяИспользованиеобъектногоподходасущественноповышаеткачестворазработкивв1.Использованиеобъектногоподходасущественноповышаеткачестворазработкивыполнения программыс помощьюется абстрактнымтипом данных(АТД).механизма виртуальных функций)ицеломпараметрический(реализуетсянаэтапекомпиляциис компактнымииспользованиемцеломииееООчастополучаютсяболеееефрагментов.фрагментов.ООСистемыСистемычастополучаютсяболеекомпактнымичемчемихихне-ООне-ООмеханизмашаблонов)полиморфизм.9аналогианалоги1.3.
Абстрактные типы данных1.3. Абстрактные типы данныхВиды отношений между классамиПримечание92.2.ИспользованиеобъектногоИспользованиеобъектногоподходаподходаприводитприводитк кпостроениюпостроениюсистемсистемнанаосновеосновеРассмотренные понятия абстракции, инкапсуляции, наследования, полиморстабильныхпромежуточныхописаний,чтопроцессвнесениястабильныхпромежуточныхописаний,чтоупрощаетупрощаетпроцессвнесенияизменений.изменений.ЭтоЭтофизма присущине только парадигмеООП.Так,выполнениеарифметическихоперацийнадцелымичисламиичисламисплавающейточкойосуществляютсядаетдаетсистемесистемевозможностьвозможностьразвиватьсяразвиватьсяпостепеннопостепенноииненеприводитприводитк кееееполнойполнойв процессоре по разным алгоритмам. Однако в данном случае полиморфизмпереработкеввслучаепереработкеслучаесущественныхсущественныхизмененийизмененийисходныхисходныхтребованийтребованийпроявляетсянеявно.Глава 9.1.3.АбстрактныетипыданныхВидыотношениймеждуТипы данных, создаваемые пользователем (программистом), называютсяпользовательскими типами данных.
Пользовательский тип данныхклассамис полностью скрытой (инкапсулированной) внутренней структурой называ-3. Ориентирован на человеческое восприятие мирается абстрактным типом данных (АТД).9Ассоциация представляет смысловую связь между сущностями (объектами),создаваемыми на основе классов. Ассоциация (association) определяется некоторой связью между классами. Когда в системе создаются представителиассоциированных классов, они связываются так, как определяет данная ассоциация.Ассоциации между классами разрабатываются в процессе так называемого семантического моделирования: моделирования структуры данных исходя из их смысла. Для этого полезно использовать ER-диаграммы(Entity — Relationship: Сущность — Связь).9.1.Наследованиеределяемые члены класса.
Производный класс является уточнением базовогос использованием объектно-ориентированной парадигмы, но и при разработкев производном классе указываются толькоВидыдополнительныепереопотношений междуиклассамибаз данных и во многих других приложениях.Основными понятиями,используемымипри построениикласса:Наследование— отношениемежду классами,при которомER-диаграмм,один класс появляются:вторяет— структурудолжен. и поведение другого класса (одиночное наследование) илиclassz: publicy{. .