Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Абстрагирование





Абстрагирование заложено в самих языках программирования и связано с тем, как данная проблема представлена в пространстве программы. Большинство объектно-ориентированных языков отстраняют вас (абстрагируют) от множества мелких деталей и подробностей, мешающих разработчику увидеть самое существенное в объектах реального мира, позволяя при решении какой-либо прикладной задачи сосредоточиться только на главных особенностях.

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

Для большей ясности воспользуемся аналогией с работой, которая происходит внутри торговых автоматов. Дело в том, что подробное описание такой работы довольно трудно. Чтобы выполнить свою задачу, автомат должен принять деньги, что-то рассчитать, дать сдачу и только после этого - выдать требуемый товар. Однако покупателям - пользователям автомата представляются для использования только несколько его элементов. Такими элементами автомата являются: щель для приема денег, кнопки выбора товара, рычаг для запроса сдачи, лоток, куда поступает сдача, и желоб подачи товара. Следует отметить тот факт, что со времени изобретения торговых автоматов их внешний почти не изменяется. Это связано с тем, что, несмотря на то, что, по мере развития технологии, их внутренняя организация и совершенствовалась, но основной интерфейс не нуждался в больших переменах. Это говорит о том, что достаточно глубокое понимание предметной области и ее особенностей помогает разработчику создать интерфейс, предоставляющий пользователям доступ к нужной им информации и методам, но изолирующий их от знания внутреннего устройства класса. При разработке интерфейса следует думать не только о решении текущей задачи, но и о том, чтобы обеспечить такое абстрагирование от внутреннего устройства класса, которое позволит неограниченно модифицировать (изменять) закрытые члены класса, не затрагивая его открытого интерфейса.

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

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

При разработке своих классов всегда необходимо ставить себя на место программиста, которому предстоит работать либо с экземплярами этих классов либо с производными от них классами.

Date: 2015-07-24; view: 411; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию