Спец часть (часть 2) (3 поток) (2015) (by Кибитова) (1161602), страница 23
Текст из файла (страница 23)
Основная идеяделенныеабстракции.следующиеусловия:данного подхода заключается в формализованном определенииОбъектно-ориентированноепрограммирование(ООП)ПринесоблюденииуказанныхтребованийпрограммаперестаетбытьбытьОО.ОО.(В(Вфункции,которую хотявыполняетобразом,вместо перестаетПринесоблюдениихотя быбы 11 изизпрограмма.указанных Такимтребованийпрограмма1.ИмеетсяподдержкаобъектовввидеабстракцииданныхимеющихинтерфейснуюПример:частностипринарушениипрограммированиенаосновеосновеАбстрактныхТиповТиповчастьопределениячерез которыедолженчастностиприпоследовательностинарушении 33 имеемимеемсостояний,программированиенаАбстрактныхвпройтивидеЗадачапоименованныхоперацийи защищеннуюобласть локальныхкомпьютер,чтобыполучитьтребуемыйнеобхо- данныхДанных)составлениярасписаниязанятий.
результат,Данных)димо определить функцию, при применении которой к исходнымНеобходимыеабстракции:студент,курслекций,преподаватель,ау2.Объектыотносятсятребуемоек соответствующимтипамданнымполучаетсярешение:ЯзыкпрограммированияназываетсяОО тогдатогдаи (классам)толькотогда,когдавыполненывыполненыЯзыкпрограммированияназываетсяООитолькотогда,когдадитория.следующиеусловия:Центральнойидеей ООПпонятия «абстракция». Смыслусловия:y =являетсяf (x) реализация3.следующиеКлассымогутнаследоватьатрибутыи методы от суперклассов (базовых классов)Операции:абстракциизаключается в том, что сущность произвольной сложностиРазработкаприэтомподходесводитсяк конструированию1.1.Имеетсяподдержкаобъектоввидеабстракцииданныхимеющихимеющихинтерфейснуючастьрассматривать,а такжепроизводитьопределенныедействиянад ней,— программыОпределитьстудентав ввгруппуИмеетсяподдержкаобъектоввидеабстракцииданныхинтерфейснуючасть4. можноИмеетсяподдержкаполиморфныхфункцийсложнойвфункцииизимеющихсястандартныхпростыхфункций:какнадединымцелым,невдаваясьвдеталивнутреннегопостроенияпоименованныхоперацийиобластьлокальныхлокальныхданныхданныхНазначить аудиториюдлягруппыввидевиде—поименованныхоперацийи защищеннуюзащищеннуюобластьифункционирования.ОО подходуэлемента:— .
. . соответствуют.y. . =. . .f. ( f ( f4 главных) (классам)1 кк соответствующим23 (...), f 4 (...),...)2.2.Объектыотносятсятипам(классам)ОбъектыотносятсясоответствующимтипамПри создании программного комплексанеобходимо разработать опреОднимизосновныхспособовсозданияабстракцииявляется использоАбстрагированиеЯзыками,поддерживающимитакую парадигму, являются, например,деленныеабстракции.ваниеконцепциииерархическойклассификации.Ее представсуть (базовыхзаключается3.3.Классымогутнаследоватьи такметодыот суперклассовсуперклассов(базовыхклассов)Классымогутнаследоватьатрибутыиметодыотклассов)языки LISPи ML.Данныепритакоматрибутыподходе,же, каки код,втом,чтосложныесистемыразбиваютсянаболеепростыефрагменты.Инкапсуляция(Ограничение доступа)Пример:4.4.ИмеетсяподдержкафункцийИмеетсяподдержкаполиморфныхфункцийПрактически всеполиморфныхсложные системыиерархичны, и уровни их иерархииЗадачасоставлениярасписаниязанятий.Иерархия(вчастностинаследование)6отражают различные уровни абстракции.
Для каждой конкретной задачиООподходусоответствуют44 главных элемента:элемента:ООподходусоответствуютНеобходимыеабстракции:студент,лекций,преподаватель,аурассматриваетсясоответствующийуровень.курсВыборнизшегоуровня абстПолиморфизмдитория.ракции достаточно произволен. Выбранный уровень в одном случаеАбстрагированиеАбстрагированиев качественизшего уровня может оказаться уровнем достаточно высокойОперации:1. Абстракция- это такие существенные характеристики некоторого объекта, которыеабстракции в (Ограничениедругом проекте.Инкапсуляциядоступа)Инкапсуляция— егоОпределитьстудентав группуотличаютот(Ограничениевсех другихвидовобъектов, и, таким образом четко определяютРазличаюттиповуюиерархиюи структурную иерархию, которые да— Назначитьдля группыособенностиданного аудиториюобъектас точкизрения дальнейшего рассмотрения и анализа.Иерархия(внаследование)Иерархия(вчастностичастностинаследование)лее мы будемназыватьсоответственно структурой классов и структурой— ..........объектов.Абстрагированиеконцентрирует внимание на внешних особенностях объекта и позволяетПолиморфизмПолиморфизмОдним из основных способов создания абстракции является использоВо самыевсех объектно-ориентированныхязыкахпрограммированияреалиотделитьсущественныеособенностиповеденияотЕедеталейосуществления.вание концепциииерархическойклассификации.суть ихзаключаетсязованыследующиеосновныемеханизмы(постулаты)ООП:это такиетакиесущественныехарактеристикинекоторогообъекта,1.1.Абстракция--этосущественныехарактеристикинекоторогообъекта,которыекоторыевАбстракциятом, что сложныесистемыразбиваютсяна более простыефрагменты.—инкапсуляция,отличаютегоегоототвсехвсех другихдругих видов объектов, и, такимотличаюттаким образомобразомчеткочеткоопределяютопределяютПрактически все сложные системы иерархичны, и уровни их иерархии—наследование,особенностиданного объектаобъектазрения дальнейшегоиианализа.особенностис точкидальнейшегорассмотренияанализа.отражают данногоразличныеуровниабстракции.Для каждойрассмотренияконкретной задачи— полиморфизм.рассматриваетсясоответствующий уровень.
Выбор низшего уровня абстАбстрагированиеконцентрируетна внешнихособенностяхобъектаиипозволяетАбстрагированиеконцентрируетвниманиевнешнихособенностяхобъектапозволяетракциидостаточноВыбранныйуровеньв одномслучаеВсе эти механизмыпроизволен.важны для разработкии использованияабстракций.отделить самые существенные особенности поведения от деталей их осуществления.1.2. Основные принципы ООП1.2. Основные принципы ООПв качестве низшего уровня может оказаться уровнем достаточно высокойабстракциив другомпроекте.минимизироватьзатратынаиерархиюэтот процесс.Различаюттиповуюи структурную иерархию, которые далее мыбудем называтьсоответственноструктурой иерархию,классов и структуройРазличаюттиповуюиерархию и структурнуюкоторые даАбстрагированиеи ограничение доступа дополняют друг друга: абстрагированиеобъектов.лее мы будем называть соответственно структурой классов и структуройфокусируетвнимание на внешних особенностях объекта, а ограничение доступа необъектов.Во всех объектно-ориентированных языках программирования реалипозволяет объектам-пользователям различать внутреннее устройство объекта.зованыосновные механизмы (постулаты)ООП:Воследующиевсех объектно-ориентированныхязыках программированияреалиосновныемеханизмы(постулаты)ООП:— следующиеинкапсуляция,Взованыописаниикласса можновыделитьдве части:интерфейс иреализацию.
Интерфейсинкапсуляция,—наследование,отражает внешнее проявление объекта, создавая абстракцию поведения всех объектовнаследование,— полиморфизм.данногокласса. Внутренняя реализация описывает механизмы достижения желаемого—полиморфизм.поведенияобъекта.В интерфейснойсобрановсе, что касаетсяабстракций.взаимодействияВсе этимеханизмыважны длячастиразработкии использованияданногос любымидругимиреализацияскрываетдругих объектовВсеобъектаэти механизмыважныдляобъектами;разработкии использования1)Инкапсуляция—механизм,связывающийвместекодабстракций.иотданные,вседетали,не имеющиеотношениек процессувзаимодействияобъектов.которымионманипулирует,и одновременнозащищающийих отпроиз1) Инкапсуляция— механизм,связывающийвместе коди данные,вольногодоступасостороныдругогокода,внешнегопоотношениюк раскоторыми он манипулирует, и одновременно защищающий их от произИзменениереализации,вообщеговоря,невлечетзасобойизменениеинтерфейса.сматриваемому.к кодудругогои даннымжесткоконтролируетсяинтерфейвольного доступаДоступсо стороныкода,внешнегопо отношениюк рассом.сматриваемому.
Доступ к коду и данным жестко контролируется интерфей3. Иерархиясом. Основой инкапсуляции при ООП является класс.Объектно-ориентированное программирование (ООП)Иерархия- это ранжированнаяилиупорядоченнаяиерархия абстракций.Основойинкапсуляции приООПявляется класс.Объектно-ориентированное программирование (ООП)Основными видами иерархических структур применительно к сложным системамМеханизма инкапсуляции позволяет оставлять скрытыми от пользоваявляются структура классов(иерархия по номенклатуре) и структура объектов (иерархиятелянекоторыедетали реализациикласса(то естьинкапсулироватьМеханизмаинкапсуляциипозволяетоставлятьскрытымиот пользова- ихпо всоставу)8классе), что упрощает работу с объектами этого класса.теля некоторые детали реализации класса (то есть инкапсулировать их8в классе),чтоупрощает работус объектамиэтого класса.Наследование— механизм,с помощьюкоторого один объект (проПримеры2)иерархий:изводногокласса) приобретаетдругогообъекта2) Наследование— механизм,свойствас помощьюкоторогоодин (родительского,объект (пробазового класса)класса).ПрииспользованииновыйобъектобязаНаследованиеозначаеттакоесоотношениемеждуклассами,когдаодиннеклассиспользуетизводногоприобретаетсвойстванаследованиядругогообъекта(родительского,тельноописывать,начинаяснуля,чтосущественноупрощаетработупробазовогокласса).Прииспользованиинаследованияновыйобъектнеобязаструктурную или функциональную часть одного или нескольких других классовграммиста.Наследованиекакому-либообъектунаследоватьтельноописывать,начинаяс позволяетнуля, что существенноупрощаетработупро- от(соответственнопростоеили множественноенаследование).Инымисловами,своего родителяобщие атрибуты,для себя определятьте характеграммиста.Наследованиепозволяет акакому-либообъекту тольконаследоватьотнаследование - такая иерархия абстракций, в которой подклассы наследуют строение отристики,которыеделаютегоуникальнымвнутрикласса.своего родителя общие атрибуты, а для себя определять только те характеодногоилинесколькихсуперклассов.(Иерархияобобщение-специализция)ристики,которыеделаютуникальнымвнутрикласса.Наследованиеестьегооченьважное понятие,поддерживающееконцепциюиерархическойклассификации.Наследованиеесть оченьважное понятие,поддерживающееконцепциюАгрегирование(отношениепо составу).Объект состоитиз подобъектов.иерархическойклассификации.3) Полиморфизм— механизм,позволяющий использоватьодин(ООП)и тотОбъектно-ориентированноепрограммированиеПринципыабстрагирования,ограничениядоступа и иерархииконкурируютсобой.же 3)интерфейсдля общегокласса действий.Полиморфизм— механизм,позволяющийиспользоватьодин и междутотАбстрагированиеустановлении жестких границ, защищающих состояниеже интерфейс дляданныхобщегосостоиткласса вдействий.и функцииобъекта; инкапсуляциипринцип наследованиятребуетоткрытьдоступ иотк пользовасостоянию, и кПример:Механизмапозволяетоставлятьскрытымифункциямобъекта3дляпроизводныхклассов.В связиэтиминкапсулироватьинтерфейсная частьтеляПример:некоторыедеталиреализациикласса(то сестьихклассаИмеютсятипастекадля хранения:в классе),чтоработус объектами этого класса.можетбытьразделенана тричасти:Имеются3упрощаеттипастекадляхранения:— целыхчисел,Наследование— механизм,—2)—целыхчисел,чиселс плавающейточкой, с помощью которого один объект (производногокласса)приобретаетдругого объекта (родительского,——чиселс плавающейточкой,свойствасимволов.Обособленную(private)- видимаятолькодля самого классабазовогокласса).Прииспользованиинаследованияновый объект не обяза— символов.Вместотрехподпрограммуправлениявобъектно-ориентированнойтельно описывать, начиная с нуля, что существенно упрощает работу проЗащищенную(protected)- видимуютакже и дляв подклассовВместо Наследованиетрехподпрограммобъектно-ориентированнойпрограмметребуетсявсегоодна управленияподпрограмма(одининтерфейс)граммиста.позволяеткакому-либообъектунаследовать отпрограмметребуетсявсегооднаподпрограмма(одининтерфейс)своего Общаяродителяобщие атрибуты, а для одинсебя определять только те характеконцепцияОбщедоступную(public) - полиморфизма:видимую для всех интерфейс — много методов.ристики,которыеделаютегоуникальнымкласса.Общая концепция полиморфизма: одинвнутриинтерфейс— много методов.Выбор конкретного действия (метода) применительно к конкретнойНаиболееполноконтрольвидимостиреализованв C++.