Понятие внедренного объекта. Создание нового внедренного объекта в MS Word
В отличие от связанных объектов внедренные объекты целиком включаются в документ MS Word. При внедрении объектов из существующих файлов связь с файлом отсутствует.
Как уже отмечалось, существует два основных преимущества внедренных объектов:
1) документ MS Word представляет собой единственный файл, который проще хранить и передавать;
2) можно создавать новые объекты в MS Word без необходимости предварительного создания для них отдельного файла.
Внедрение объектов имеет два основных недостатка:
1) каждый внедренный объект увеличивает объем файла документа MS Word на объем внедренного объекта;
2) часто возникают сложности при изменении подобных объектов (иногда, чтобы получить измененный объект, его требуется создавать заново).
3.2. Создание нового внедренного объекта
Для создания нового внедренного объекта следует использовать режим Вставка ® Объект.
Предположим, Вам требуется подготовить какую-то иллюстрацию (например, нарисовать эмблему Вашей фирмы). Самый простой вариант – это запустить графический редактор, создать рисунок, а затем скопировать его в документ MS Word через Буфер обмена.
Однако в MS Word есть возможность проделать эту операцию проще:
1) поместите текстовый курсор в конец данного задания (пусть это будет место, куда необходимо вставить внедренный объект);
2) выберите команду Вставка ® Объект; после этого на экране появится окно Вставка объекта;
3) на следующем шаге выберите тип объекта в списке в центральной части окна; выберите Точечный рисунок. Обратите внимание, что в области Результат в нижней части окна диалога отображается краткое описание объекта выбранного типа;
F В случае, если изображение объекта не требуется (звук, презентация), оно отмечается значком. Для этого достаточно установить флажок в окне В виде значка. При использовании этого режима для просмотра данных объекта следует дважды щелкнуть на отображаемом в документе значке.
4) щелкните кнопку ОК для вставки объекта. При этом Word откроет программу, необходимую для создания объекта (в данном случае – Paint);
5) нарисуйте в появившемся окне эмблему; после этого щелкните в область документа MS Word – внешнее приложение и закроется, а объект останется.
4. Резюме
Поскольку методы вставки внедренных и связанных объектов имеют много общего, бывает трудно определить, является объект связанным или внедренным. В данной таблице приводится ряд различий этих объектов.
Связанный объект
Внедренный объект
При двойном щелчке для редактирования объекта всегда открывается отдельное окно программы.
При двойном щелчке на объектах меню Word заменяется на меню этих программ.
Данные объекта копируются в окно исходной программы для редактирования.
Редактирование данных выполняется непосредственно в документе Word
Выясните, какие из приведенных ниже объектов являются связанными, а какие – внедренными.
Связанные объекты и внедренные объекты
Когда содержимое вставляется как объект, создается динамическая связь между вставляемым содержимым и содержимым, которое было создано в другой программе Microsoft Office. В отличие от процедуры обычной вставки содержимого (нажатием клавиш CTRL+V) вставка его как связанного или внедренного объекта позволяет работать с ним в исходной программе.
Например, когда ячейки электронной таблицы вставляются в документ как объект Excel, из приложения Word можно, дважды щелкнув ячейку, запустить приложение Excel и использовать команды Excel для работы с содержимым листа.
Различие между связанными и внедренными объектами
Главное различие между связанными и внедренными объектами состоит в том, где хранятся данные и как они обновляются после их помещения в файл Word.
В документ помещается либо ссылка на объект, либо его копия. Таким образом, можно вставлять объекты из любой программы, поддерживающей технологию связывания и внедрения объектов (OLE).
Например, ежемесячный отчет о состоянии может содержать данные, которые независимо поддерживаются на листе Excel. Если связать отчет с листом, данные отчета будут всегда обновляться вместе с обновлением данных исходного файла. Если внедрить лист в отчет, то отчет будет содержать статическую копию данных.
1. Внедренный объект
2. Связанный объект
3. Исходный файл
Связанные объекты
Когда объект связан, данные при изменении исходного файла могут обновляться. Связанные данные хранятся в исходном файле. Файл Word, или конечный файл, хранит только путь к исходному файлу и отображает представление связанных данных. Если размер файла имеет значение, пользуйтесь связанными объектами.
Связывание полезно также, когда нужно включить в документ данные, которые поддерживаются независимо, как, например, данные, собираемые другим отделом, или когда необходимо постоянно обновлять данные в документе Word.
Внедренные объекты
Когда объект Excel внедрен, данные в файле Word при изменении исходного файла Excel не изменяются. Внедренные объекты становятся частью файла Word, и после того как они вставлены, объекты больше не являются частью исходного файла.
Поскольку вся информация полностью содержится в документе Word, внедрение полезно, когда не нужно отображать ее изменение в исходном файле или когда нежелательно, чтобы получателям документа пришлось обновлять связанные данные.
Различие между связанными и внедренными объектами
Главное различие между связанными и внедренными объектами состоит в том, где хранятся данные и как они обновляются после их помещения в файл Word.
В документ помещается либо ссылка на объект, либо его копия.
Если связать таблицу Excel с документом Word, данные в этом документе будут всегда обновляться вместе с обновлением данных исходного файла. Если внедрить лист в отчет, то отчет будет содержать статическую копию данных (рис. 3.132).
Рис. 3. 132. Принцип «внедрения» и «связывания» объектов
1. Внедренный объект
2. Связанный объект
3. Исходный файл
Связанные объекты
Когда объект связан, данные при изменении исходного файла могут обновляться. Связанные данные хранятся в исходном файле. Файл Word, или конечный файл, хранит только путь к исходному файлу и отображает представление связанных данных. Если размер файла принимается во внимание, пользуйтесь связанными объектами.
Связывание полезно также, когда требуется включить в документ данные, которые поддерживаются независимо или когда необходимо поддерживать в документе Word новейшие данные.
Внедренные объекты
Когда объект Excel внедрен, данные в файле Word при изменении исходного файла Excel не изменяются. Внедренные объекты становятся частью файла Word, и после того как они вставлены, объекты больше не являются частью исходного файла.
Поскольку вся данные полностью содержатся в документе Word, внедрение полезно, когда не нужно отображать их изменение в исходном файле или когда нежелательно, чтобы получателям документа пришлось обновлять связанные данные.
G Примечание. Операции копирования и связывания объектов Excel и Word выполняются только отдельно для каждого объекта (таблицы или диаграммы).
Выполните копирование таблицы Excel в Word.
F Выполнение задания
— Выделите диапазон ячеек A1:F9 листа «Основной» и скопируйте его.
— Перейдите в документ Word и щелкните правой кнопкой мыши в первой свободной строке. Из контекстного меню выберите команду «Вставить».
Таблица Excel будет скопирована и превратится в таблицу Word (рис. 3.133).
Рис. 3. 133. Результат копирования таблицы Excel в таблицу Word
С ней можно выполнять все операции, присущие таблицам Word (п.2.6).
— Выделите вставленную таблицу и удалите ее.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Объекты-сущности, Объекты-значения и внедренные объекты — Python: Объектно-ориентированный дизайн
В объектно-ориентированном программировании (ООП) особое внимание уделяется представлению и манипуляции реальных объектов или концепций. Но не все объекты имеют одинаковые свойства и характеристики.
Важно понимать различия между объектами-сущностями, объектами-значениями и внедренными объектами. Благодаря этому можно эффективно структурировать код и обеспечивать его поддержку. В этом уроке мы изучим эти три концепции.
Объекты-сущности (Entity Objects)
Когда говорят про ООП, рассуждают про сущности предметной области, например: пользователи, заказы, товары. У такого использования объектов есть определенные условия, которые должны соблюдаться для обеспечения нормального функционирования.
Подобное использование ООП хоть и описывается во всех учебниках как пример нужности ООП, имеет слабое отношение к реальному коду. На практике большинство существующих классов и объектов в коде приложений, библиотек и фреймворков не имеют связи с предметной областью. Их появление и использование крутится вокруг такой темы как полиморфизм, которая изучается в соответствующем курсе.
Объекты-сущности (entities) создаются не ради одноразового использования. Они живут определенный период во время запуска программы или между запусками в неком хранилище.
Например, пользователи Хекслета представлены объектами класса User . Они создаются во время регистрации и потом существуют в системе бесконечное время. Изредка они удаляются по инициативе самих пользователей.
Для отличия одного пользователя от другого мы не можем просто использовать имя и фамилию, так как они могут быть не уникальными или изменяться со временем. Поэтому для обеспечения уникальности каждого пользователя мы используем искусственные идентификаторы, которые обычно генерируются базой данных. Сравнение пользователей происходит по их идентификаторам.
В Python объекты-сущности можно представить с использованием классов:
class User: def __init__(self, id, name): self.id = id self.name = name def __eq__(self, other): return self.id == other.id # Создаем двух пользователей с одинаковым именем и идентификатором. user1 = User(1, 'John') user2 = User(1, 'John') user3 = User(3, 'John') print(user1 == user2) # Вывод: True print(user1 == user3) # Вывод: False
В этом примере объекты User создаются для представления пользователей в системе. Их идентификация осуществляется посредством уникального идентификатора, что делает их объектами-сущностями.
Объекты, у которых есть свой идентификатор и время жизни, называют объектами-сущностями. Но кроме них существует и другая разновидность объектов. Она тоже связана с предметной областью – это объекты-значения.
Объекты-значения (Value Objects)
Объекты-значения отличаются от объектов-сущностей тем, что их идентичность определяется их состоянием, а не уникальным идентификатором. Например, два объекта «деньги» равны, если они представляют одну и ту же сумму в одной и той же валюте.
Например, когда у нас в кошельке лежит 10$, то нам неважно, какая конкретно это купюра. Мы легко можем взять эту купюру, поменять ее на другую эквивалентную по номиналу. Для нас в этот момент ничего не меняется. Десять долларов остались десятью долларами.
То же можно сказать и про многое другое, например: адреса доставки, страна проживания, путь до файла, адрес страницы сайта, точки на плоскости. Во всех этих ситуациях нас волнует само значение — факт его существования.
Представим систему, в которой идет работа с деньгами в разных валютах. В такой ситуации удобно представить деньги в виде объекта, который помимо номинала хранит информацию о валюте. В таком случае сравнение будет работать следующим образом:
m1 = Money(150, 'USD') m2 = Money(130, 'EUR') # Предположим, что 150 долларов по текущему курсу равны 130 евро # Функция конвертирует деньги для сравнения print(m1.equals(m2)) # => True
В этом примере два объекта Money равны, потому что они представляют одну сумму в одной валюте. Их идентичность определяется их состоянием, а не уникальным идентификатором.
Получается, что нам не важны объекты, нам важны значения. Объект здесь — способ организации кода, но он не идентифицирует хранящиеся внутри него данные. Такие объекты называют объектами-значениями .
При этом одни и те же вещи могут быть как объектами-значениями, так и объектами-сущностями. Все зависит от конкретной предметной области. Для большинства компаний деньги — это просто значения, но не для тех кто их печатает. Вторым важно различать купюры между собой. Поэтому на каждой из них есть уникальный номер, который и позволяет проводить идентификацию.
Рассмотрим третью разновидность объектов.
Встраиваемые объекты (Embedded Objects)
Данные, с которыми работают веб-приложения, обычно хранятся в реляционных базах данных. В этих базах каждая сущность представлена строкой в таблице, где каждое поле соответствует атрибуту объекта.
Иногда возникают ситуации, когда несколько атрибутов сущности объединяются в одну группу, описывающую какую-то особенность или характеристику. Например, почтовый адрес:
# Предположим, что у нас есть функция find(), которая ищет пользователя по идентификатору. # Это гипотетический код user = find(5) print(user.street) # 'lenina' print(user.zipcode) # 432111 print(user.house) # 10
Существуют два подхода для работы с такими группами атрибутов. По первому подходу любая логика работы с этими атрибутами описывается внутри самой сущности. Например, вывод адреса в виде текста:
class User: def get_full_address(self): return f"self.street>, self.house>, self.zipcode>" print(user.get_full_address())
Основная проблема этого подхода — возможное дублирование кода, если адрес используется где-то еще кроме пользователя. В этом случае придется реализовывать методы работы с этими данными в каждом месте, где они встречаются.
Второй подход предполагает создание отдельного класса и внедрение объекта этого класса в основной объект. Это может звучать сложно, но на практике это довольно просто:
class Address: def __init__(self, street, house, zipcode): self.street = street self.house = house self.zipcode = zipcode def __str__(self): return f"self.street>, self.house>, self.zipcode>" class User: def __init__(self, address): self.street = address['street'] self.house = address['house'] self.zipcode = address['zipcode'] def get_address(self): # Поскольку у нас объект-значение, # мы можем создавать его столько раз, сколько нам нужно, # но при необходимости этот процесс можно оптимизировать return Address(self.street, self.house, self.zipcode) address = 'street': 'pushkina', 'house': 42, 'zipcode': 42000> user = User(address) print(user.get_address()) #=> pushkina, 42, 42000
В этом примере Python мы показываем, как можно инкапсулировать логику работы с адресом пользователя в отдельном классе Address . Метод __str__ в классе Address предназначен для преобразования объекта в строку.
Подход с использованием встроенного объекта позволяет упростить код и избежать дублирования, поскольку весь код, связанный с адресом, теперь находится в одном месте.
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях: