Страница 8 из 10
Объект курса может иметь значения атрибутов, такие как определенное количество учащихся, стоимость и предварительные условия, а также конкретные поведения, связанные с этими значениями атрибутов.
И класс курса определяет основные атрибуты и поведение всех объектов курса.
Инкапсуляция включает в себя три идеи.
Как следует из названия, речь идет о создании своего рода капсулы. Капсула содержит что-то внутри.
И некоторое из этого что-то вы можете получить снаружи, а некоторое вы не можете.
Во-первых, вы объединяете значения атрибутов или данные, а также поведение или функции, которые совместно используют эти значения в автономном объекте.
Во-вторых, вы можете выставить наружу определенные данные и функции этого объекта, к которым можно получить доступ из других объектов.
В-третьих, вы можете ограничить доступ к определенным данным и функциям только внутри этого объекта.
Короче говоря, инкапсуляция формирует автономный объект путем связывания данных и функций, которые он требует для работы, предоставляет интерфейс, посредством которого другие объекты могут обращаться к нему и использовать его, и ограничивает доступ к некоторым внутренним деталям.
И вы определяете класс для данного типа объекта.
Абстракция помогает определить, какие атрибуты и поведение имеют отношение к концепции в некотором контексте.
Инкапсуляция гарантирует, что эти характеристики объединены вместе в одном классе.
Отдельные объекты, созданные таким образом из определенного класса, будут иметь свои собственные значения данных для атрибутов и будут демонстрировать результат поведения.
Вы обнаружите, что программирование проще, когда данные и код, который управляет этими данными, расположены в одном месте.
Данные объекта должны содержать только то, что подходит для этого объекта.
Помимо атрибутов, класс также определяет поведение через методы.
Для объекта класса методы управляют значениями атрибутов или данными в объекте для достижения фактического поведения.
Вы можете предоставить определенные методы для доступа объектам других классов, таким образом, предоставляя интерфейс для использования класса.
И инкапсуляция помогает с целостностью данных.
Вы можете определить определенные атрибуты и методы класса, которые должны быть ограничены извне для доступа.
И на практике вы часто представляете внешний доступ ко всем атрибутам через определенные методы.
Таким образом, значения атрибутов объекта не могут быть изменены непосредственно через назначения переменных.
В противном случае такие изменения могут нарушить некоторое допущение или зависимость для данных внутри объекта.
Кроме того, инкапсуляция может обеспечить конфиденциальность информации.
Например, вы можете разрешить классу студента сохранять среднюю оценку баллов.
Сам класс студента может поддерживать запросы, связанные со средней оценкой баллов, но без необходимости показывать фактическое значение баллов.
Инкапсуляция помогает с изменениями программного обеспечения.
Доступный интерфейс класса может оставаться неизменным, а реализация атрибутов и методов может измениться.
Пользователям, использующим класс, не нужно заботиться о том, как реализация фактически работает за интерфейсом.
В программировании такого рода подход обычно называют черным ящиком.
Подумайте о классе, как о черном ящике, который вы не можете видеть внутри, для получения подробной информации о том, как представлены атрибуты или как методы вычисляют результат, но вы предоставляете входные данные и получаете результаты посредством вызова методов.
Так как внутренняя работа не имеет отношения к внешнему миру, это обеспечивает абстракцию, которая эффективно снижает сложность для пользователей класса.
И это увеличивает повторное использование, потому что другому классу нужно знать только правильный метод вызова, чтобы получить желаемое поведение, какие аргументы поставлять в качестве входных данных и что будет отображаться как результат.
Инкапсуляция является ключевым принципом разработки в хорошо написанной программе.
Она поддерживает модульность и простоту работы с программным обеспечением.
Декомпозиция берет целую вещь и делит ее на разные части.
Или, с другой стороны, берет кучу отдельных частей с различными функциональными возможностями и объединяет их вместе, чтобы сформировать целое.
Разложение позволяет вам разложить проблему на части, которые легче понять и решить.
Разделяя вещь на разные части, вы можете более легко разделить обязанности этой вещи.
Общее правило для разложения состоит в том, чтобы посмотреть на разные обязанности чего-то целого и оценить, как вы можете разделить это целое на разные части, каждую со своей конкретной обязанностью.
Это связывает целое с несколькими различными частями.
Иногда целое делегирует конкретные обязанности своим частям.
Например, холодильник делегирует замораживание пищи и хранение этой пищи в морозильной камере.
Так как разложение позволяет создавать четко определенные части, вполне естественно, что эти части являются отдельными.
Целое может иметь фиксированное или динамическое число частей определенного типа.
Если существует фиксированное число, то за время жизни всего объекта он будет иметь именно это количество объектов частей.
Например, холодильник имеет фиксированное количество морозильников, только один.
Это не меняется со временем, но иногда есть части с динамическим числом.
Объект может получить новые экземпляры объектов частей за время его существования.
Например, холодильник может иметь динамическое количество полок с течением времени.
И сама часть может также служить целым, содержащим дополнительные составные части.
В декомпозиции играет роль время жизни всего объекта, а также время жизни объектов частей и то, как они могут соотноситься между собой.
Например, холодильник и морозильник имеют одинаковый срок службы.
И одно не может существовать без другого.
Если вы откажетесь от холодильника, вы также избавитесь от морозильной камеры.
Но срок жизни также может быть не связан.
У холодильника и продуктов питания разные сроки службы. И каждый может существовать независимо.
Также вы можете иметь целые вещи, которые имеют общие части в одно и то же время.
Например, человек, у которого есть дочь в одной семье, а также супруга в другой семье.
Эти две семьи считаются отдельными целыми, но они одновременно имеют одну и ту же общую часть.
Однако иногда совместное использование невозможно.
Например, пищевой продукт в холодильнике не может одновременно находиться в духовке.
В целом, разложение помогает разбить задачу на более мелкие части.
И сложная вещь может быть составлена из отдельных более простых частей.
И важным является понимания – это то, как части относятся к целому, фиксированное или динамическое их число, их время жизни и совместное использование.
Идея объектно-ориентированного моделирования и программирования заключается в создании компьютерного представления концепций в пространстве задачи.
И принцип проектирования, называемый обобщением, помогает сократить избыточность при решении задачи.
Многие виды поведения в реальном мире действуют посредством повторяющихся действий.
И мы можем моделировать поведение с помощью методов.
Это позволяет нам обобщать поведение и устраняет необходимость иметь идентичный код, разбросанный во всей программе.
Например, возьмите код создания и инициализации массива.
Мы можем обобщить этот повторяющийся код, сделав отдельный метод. Это помогает нам уменьшить количество почти идентичного кода в нашей системе.