Учебные материалы по математике | Базовые понятия ооп | Matematiku5
Вузы по математике Готовые работы по математике Как писать работы по математике Примеры решения задач по математике Решить задачу по математике online

Базовые понятия ооп


Базовые понятия ООП.

В основе ООП лежат три основных понятия: инкапсуляция, наследование и полиморфизм. ООП стоит на следующей логической ступени после модульного программирования. Оно углубляет понятие модульности и добавляет наследовательние и полиморфизм. Применяя ООП, разработчик структурирует программу, разделяя ее на ряд высокоуровневых объектов. Каждый объект моделирует определенный аспект…

//дописать из лекций Русева.

Благодаря этому можно отвлечься от рассмотрения объекта с точки зрения того, как он будет реализован в процессе исполнения программы и неувязность в деталях. В модульном программировании программа состоит из модулей. Объектно-ориентированная программа – из взаимодействующих объектов.

В своей основе объекты похожи на модули, но у них есть много важных отличий. Если в модульном программировании все процедуры имеют доступ к данным, то в ООП многие данные скрыты в объектах, объекты контролируют доступ к ним и действия над ними. Модуль трудно расширить. В ООП механизмы наследования и агрегации позволяют легко создавать одно объекты на основе других. Агрегация – механизм, который позволяет создавать поля одних объектов как объекты других классов. Пример: Форма и компоненты. В ООП так же усилена концепция полиморфизма. Благодаря этому обеспечивается создание гибких легко изменяемых программ. Именно полиморфизм позволяет устранить, присущие модульному программированию, ограничения, связанные с жестким контролем типов.

Инкапсуляция – это объектно-ориентированная характеристика модульности. С помощью инкапсуляции программа разделяется на объекты, выполняющие отдельные функции, детали которых скрыты от внешнего мира. Инкапсуляция позволяет создавать объекты подобные черному ящику. Все знают, что делает черный ящик лишь потому, что представлено в его интерфейсе.

Интерфейс, по сути, реализует контакт с внешним миром. В нем определено, какие запросы внешние объекты могут посылать данному объекту, но не говорится о том, как объект будет выполнять эти запросы. Интерфейс – это пульт управления объектом. При хорошей инкапсуляции, реализация объекта полностью скрыта от внешнего мира, и ее можно в любой момент изменить. Внешние объекты этого не почувствуют. Изменение интерфейса приведет к необходимости изменений во всех фрагментах программы, которые этот объект использует.

Какие программные средства позволяют реализовать инкапсуляцию? Ответ: Уровни доступа. Интерфейс образуют общедоступные члены. Поскольку данные хранятся в полях, то их рекомендуют делать закрытыми, тогда объекты смогут полностью контролировать доступ к ним и смогут защитить от непредвиденного и деструктивного использования. Инкапсуляция делает программу более гибкой, так как соседные объекты не должны учитывать реализацию друг друга. Хорошо инкапсулированный объект легко использовать в других программах, то есть повышается повторное использование кода. Сокрытие реализации объекта способствует написание свободного слабосвязанного программного кода. Слабо связанный программный код – это код, в котором объекты довольно независимы друг от друга. Полностью зависимость между объектами ликвидировать нельзя, так как объектно-ориентированная программа – это совокупность взаимодействующих объектов. Но связанность не должна приводить к сращиванию объектов. Если объект сильно связан с другими, то во-первых его приходится часто модифицировать, так как малейшие изменения окружения требуют этого, а во-вторых затрудняется его повторное использование, поскольку при повторном использовании надо восстановить все его связи. В сильно связанном программном коде затруднительно рассмотрение каждого объекта в отдельности.

Для создания слабо связанного кода, нужно должным образом распределить ответственность, то есть выяснить, что должен делать каждый из объектов. Каждый объект должен выполнять определенную функцию, все члены этого объекта должны быть на нее сориентированный, между ними должна быть логическая связь, «высокое зацепление» (вне связи слабые, внутри – сильные). Объект должен быть некоторым целым. Нет смысла в инкапсуляции случайного набора методов и данных. Для правильной инкапсуляции необходимо хорошо продумать структуру объекта, добиться того, чтобы все элементы объекта были логически связаны и нацелены на решение основной задачи.
Достоинства инкапсуляции:
1. Повторное использование кода.

2. Возможность изменения объекта. Изменения локализуются в объекте, а не превращаются в лавинный поток.

3. Защита от деструктивного использования.

Недостатки инкапсуляции:
1. Может быть скрыта важная для окружающих информация. Например: при проведении приближенных расчетов, важна точность вычислений, и если пользователь не только не в состоянии ее изменить, но и даже узнать о ней, он может отказаться от использования этого объекта. Для преодоления этого недостатка, рекомендуется описывать все возможности объектах в сопровождающих текстах. Если изменение точности не предусмотрена, то надо о ней сообщить., может быть ее значение окажется подходящим.

2. Хорошая инкапсуляция требует больших трудозатрат.

Создание объектно-ориентированной программы – сложный процесс, в нем можно выделить этапы:

1.  Создание модели предметной области. (концептуальные модели)

2.  На основе концептуальной модели построение диаграммы классов. На этом этапе программные классы реализуют понятие предметной области. Происходит частичное распределение обязанностей между ними.

3.  Диаграмма классов дополняется новыми классами, аналогов которым может не быть в концептуальной модели. Новые классы создаются для моделирования поведения системы с учетом того, что в результате должна быть получена слабосвязанная программа, объекты которой имеют сильное зацепление. На третьем этапе для создания новых фрагментов диаграммы класса используются новые шаблоны проектирования (шаблон – это именованный стандартный прием).

4.  Этап реализации (написание и отладка программы).

Наследование.

Наследование позволяет создавать новый класс на основе существующего. При наследовании в производный класс добавляются новые поля и новые методы, некоторые методы класса родителя изменяются. При этом не затрагивается код класса родителя, т. е. повторно используется старый код. Старый код используется и при агрегации, включении в качестве полей объектов других классов. От множественного наследования можно отказаться без потери функциональности при сочетании наследования с агрегацией. В каких случаях надо использовать наследование, а каких – агрегацию? Ответ может быть получен с опорой на здравый смысл, а точнее на концептуальную модель. Есть общие правила: при наследовании происходит расширение возможностей, конкретизируется поведение, но не изменяется типизация объекта, когда можно сказать об объекте дочернего класса, что он есть объект родительского класса.

Глагол ЕСТЬ определяет наследование. ИМЕЕТ, ВКЛЮЧАЕТ, СОДЕРЖИТ – агрегацию. Классы наследники называются часто ПОДКЛАССАМИ, а родительские – НАДКЛАССАМИ. Термин подкласса кажется неестественным, если не знать ничего о моделировании, так как дочерние классы содержат все члены родительского ну и свои некоторые. НО дочерний класс – конкретизирует родительский, объекты дочернего класса можно рассматривать как объекты родительского класса. Множество Волков является подмножеством Псовых.

Полиморфизм.

Данное слово переводится как много форм. Когда нечто одно имеет много форм. На языке программирования «много форм» означает, что одно имя представляет различный код, выбираемый автоматически компилятором в зависимости от ситуации. В качестве реализации полимирфизма могут выступать:

1.  Перегрузка методов и операторов.

2.  Обобщенные классы и методы.

3.  Виртуальные и абстрактные методы.

Наташа

Автор

Наташа — контент-маркетолог и блогер, но все это не мешает ей оставаться адекватным человеком. Верит во все цвета радуги и не верит в теорию всемирного заговора. Увлекается «нефрохиромантией» и тайно мечтает воссоздать дома Александрийскую библиотеку.

Распродажа дипломных

 Скидка 30% по промокоду Diplom2020