Что такое объект в компьютере

Обновлено: 06.07.2024

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

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

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

Программный объект.

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

Рассмотрите, например, велосипед:

Велосипед, смоделированный как программный объект.

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

Объединение кода в отдельные программные объекты дает ряд преимуществ, в том числе:


Компьютерная программа в основном состоит из двух вещей: структур данных, которые содержат информацию, с которой работает программа, и инструкций, которые обрабатывают эту информацию. Объектно-ориентированное программирование — это, по сути, способ объединения структур данных с наборами инструкций, которые на них воздействуют. Такой набор называется "объектом".

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

Мы можем создать объект Employee, чтобы отслеживать эти данные.

Допустим, когда мы увольняем сотрудника, нам нужно сделать две вещи. Во-первых, нам нужно установить для их отдела нулевое значение (т. е. нет отдела), а во-вторых, нам нужно изменить их активный статус на «ложь». Что мы можем сделать, так это создать метод (набор инструкций), связанный с объектами сотрудников, который делает обе эти вещи. Назовите это методом «огонь».

Теперь из любой точки нашей программы, где мы работаем с объектом Employee, мы можем уволить этого сотрудника, вызвав его метод fire(). Если у меня есть переменная с именем 'currentEmployee', указывающая на объект Employee, я могу сделать это на многих распространенных языках с помощью строки кода, например:

Программисту, пишущему этот код, не нужно беспокоиться о том, чтобы вручную устанавливать активный статус на «ложь» и каждый раз менять отдел. Им вообще не обязательно знать, как внутри работают объекты Employee. Им просто нужно знать, что существует метод fire(), и они должны вызвать его, чтобы пометить сотрудника как уволенного.

Такая модульность имеет ряд важных преимуществ. Например, программистам намного проще работать над большими и сложными программами, потому что им не нужно знать все детали того, как работает код, написанный другими программистами — им нужно знать только о внешних интерфейсах<. /em> объектов. Это также значительно упрощает изменение функциональности программы. Например, предположим, что позже мы решили добавить дату увольнения сотрудника в объект Employee.Все, что нам нужно сделать, это добавить поле данных для этого к объекту и изменить метод объекта fire(). Нам не нужно изменять какие-либо части программы, которые вызывают метод fire(), или сообщать программистам, которые хотят вызвать метод fire(), что что-то изменилось.

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

Это лучший ответ ELI5.

«объекты» в коде ничем не отличаются от объектов реального мира,

Например, в программах/приложениях есть кнопки.

«кнопки» — это объект.

С камерой в телефоне разговаривают в коде, вызывая ее объект в коде.

Пример (поддельный объектно-ориентированный код)

Телефон, дай мне камеру,

Теперь, когда у нас есть объект камеры,

Сделайте снимок, потому что я нажал кнопку объекта.

Это легче понять на примере, например, на игре Pac Man. Предположим, вы пишете эту игру на C. Вы должны начать с создания окна Game с циклом, содержащим игровую логику. При каждом запуске цикл выяснял, что происходит в игре, а затем рисовал это.

Сосредоточившись на первой части, игра должна была отслеживать Призраков, Пакмана и гранулы. Каждый из них имеет координаты X и Y. Поэтому вам понадобятся структуры (которые похожи на прото-объект, но слабее). С четырьмя Призраками вам потребуются 4 структурные переменные, каждая со значениями X и Y. Призраки также могут быть напуганы или нет, поэтому вам понадобится логическое значение. Они также могут быть мертвыми или живыми, еще один бул. В итоге в игре будет 4 структурные переменные, каждая с 2 целыми числами и 2 логическими значениями.

Вам понадобится что-то подобное для Pacman и гранул.

Теперь вам нужно заставить Призраков двигаться. Таким образом, в игре будет метод перемещения призраков, который будет управлять движением призраков. Каждый раз, когда цикл выполняется, он запускает этот метод, чтобы выяснить, что делать с призраками.

На данный момент все очень сложно и запутанно. Будет еще хуже, если вы захотите добавить 5-го призрака или заставить одного из призраков действовать по-другому или что-то в этом роде.

В C++ это было бы проще благодаря объектам. Сначала вы должны определить класс Ghost. У призраков есть такие свойства, как положение, испуганный? и мертвый?. У призраков также есть такие методы, как Move, Die и KillPacMan.

Чтобы добавить в игру 4 призрака, нужно создать 4 объекта-призрака. Теперь, когда у вас есть класс, вы можете создать столько объектов-призраков, сколько захотите. Чтобы переместить призраков, игра должна вызывать метод Move для каждого объекта Ghost. Об этом намного проще думать, и это намного лучше организовано.

С объектами можно делать и более интересные вещи. Например, предположим, что вам нужен Быстрый призрак, который двигался в два раза быстрее других призраков, но поворачивал только влево. Вы можете создать подкласс Ghost под названием Fast Ghost и дать ему новый метод Move. Тогда просто создайте объект Fast Ghost вместо одного из объектов Ghost, и вы получите более интересную игру.

Tldr; Объект — это экземпляр класса. Объектно-ориентированное программирование рассматривает различные части вашего кода как вещи, которые имеют свойства и могут что-то делать. Эти части называются классами, когда вы их пишете, но объектами, когда вы их фактически используете.

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

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

Простым примером объекта может быть учетная запись пользователя, созданная для веб-сайта. Объект может быть определен как класс userAccount и содержать такие атрибуты, как:

  • имя
  • фамилия
  • адрес электронной почты
  • пароль
  • возраст
  • местоположение
  • фото

Вместо того, чтобы воссоздавать эти свойства каждый раз при создании новой учетной записи пользователя, веб-скрипт может просто создать экземпляр объекта userAccount. Данные, назначенные объекту, могут быть сохранены в базе данных, если учетная запись пользователя сохранена.

Более сложный пример объекта — персонаж видеоигры. У персонажа могут быть стандартные атрибуты, такие как имя, здоровье и скорость передвижения. Он также может содержать другие объекты, такие как оружие, доспехи, предметы и т. д.В этом случае персонаж является «родительским объектом», а содержащиеся в нем объекты — «дочерними объектами». И родительский, и дочерний объекты могут иметь свои собственные свойства и методы. Например, у персонажа могут быть такие методы, как «перемещение» и «атака». Команда «атака» может ссылаться на объект «оружие», который имеет свои собственные методы, такие как «взмах» или «выталкивание».

ПРИМЕЧАНИЕ. Хотя объекты обычно ассоциируются с объектно-ориентированным программированием, в общей терминологии компьютерных наук объект может относиться к одному программному элементу, такому как переменная, константа, функция или метод.

Хотите узнать больше технических терминов? Подпишитесь на ежедневный или еженедельный информационный бюллетень и получайте избранные термины и тесты на свой почтовый ящик.

Технический фактор

Связанные термины

Подпишитесь на бесплатную рассылку новостей TechTerms

Спасибо

Мы только что отправили вам электронное письмо для подтверждения вашего адреса электронной почты. Как только вы подтвердите свой адрес, вы начнете получать информационный бюллетень.


Компьютерная программа в основном состоит из двух вещей: структур данных, которые содержат информацию, с которой работает программа, и инструкций, которые обрабатывают эту информацию. Объектно-ориентированное программирование — это, по сути, способ объединения структур данных с наборами инструкций, которые на них воздействуют. Такой набор называется "объектом".

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

Мы можем создать объект Employee, чтобы отслеживать эти данные.

Допустим, когда мы увольняем сотрудника, нам нужно сделать две вещи. Во-первых, нам нужно установить для их отдела нулевое значение (т. е. нет отдела), а во-вторых, нам нужно изменить их активный статус на «ложь». Что мы можем сделать, так это создать метод (набор инструкций), связанный с объектами сотрудников, который делает обе эти вещи. Назовите это методом «огонь».

Теперь из любой точки нашей программы, где мы работаем с объектом Employee, мы можем уволить этого сотрудника, вызвав его метод fire(). Если у меня есть переменная с именем 'currentEmployee', указывающая на объект Employee, я могу сделать это на многих распространенных языках с помощью строки кода, например:

Программисту, пишущему этот код, не нужно беспокоиться о том, чтобы вручную устанавливать активный статус на «ложь» и каждый раз менять отдел. Им вообще не обязательно знать, как внутри работают объекты Employee. Им просто нужно знать, что существует метод fire(), и они должны вызвать его, чтобы пометить сотрудника как уволенного.

Такая модульность имеет ряд важных преимуществ. Например, программистам намного проще работать над большими и сложными программами, потому что им не нужно знать все детали того, как работает код, написанный другими программистами — им нужно знать только о внешних интерфейсах<. /em> объектов. Это также значительно упрощает изменение функциональности программы. Например, предположим, что позже мы решили добавить дату увольнения сотрудника в объект Employee. Все, что нам нужно сделать, это добавить поле данных для этого к объекту и изменить метод объекта fire(). Нам не нужно изменять какие-либо части программы, которые вызывают метод fire(), или сообщать программистам, которые хотят вызвать метод fire(), что что-то изменилось.

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

Это лучший ответ ELI5.

«объекты» в коде ничем не отличаются от объектов реального мира,

Например, в программах/приложениях есть кнопки.

«кнопки» — это объект.

С камерой в телефоне разговаривают в коде, вызывая ее объект в коде.

Пример (поддельный объектно-ориентированный код)

Телефон, дай мне камеру,

Теперь, когда у нас есть объект камеры,

Сделайте снимок, потому что я нажал кнопку объекта.

Это легче понять на примере, например, на игре Pac Man. Предположим, вы пишете эту игру на C. Вы должны начать с создания окна Game с циклом, содержащим игровую логику. При каждом запуске цикл выяснял, что происходит в игре, а затем рисовал это.

Сосредоточившись на первой части, игра должна была отслеживать Призраков, Пакмана и гранулы. Каждый из них имеет координаты X и Y. Поэтому вам понадобятся структуры (которые похожи на прото-объект, но слабее).С четырьмя Призраками вам потребуются 4 структурные переменные, каждая со значениями X и Y. Призраки также могут быть напуганы или нет, поэтому вам понадобится логическое значение. Они также могут быть мертвыми или живыми, еще один бул. В итоге в игре будет 4 структурные переменные, каждая с 2 целыми числами и 2 логическими значениями.

Вам понадобится что-то подобное для Pacman и гранул.

Теперь вам нужно заставить Призраков двигаться. Таким образом, в игре будет метод перемещения призраков, который будет управлять движением призраков. Каждый раз, когда цикл выполняется, он запускает этот метод, чтобы выяснить, что делать с призраками.

На данный момент все очень сложно и запутанно. Будет еще хуже, если вы захотите добавить 5-го призрака или заставить одного из призраков действовать по-другому или что-то в этом роде.

В C++ это было бы проще благодаря объектам. Сначала вы должны определить класс Ghost. У призраков есть такие свойства, как положение, испуганный? и мертвый?. У призраков также есть такие методы, как Move, Die и KillPacMan.

Чтобы добавить в игру 4 призрака, нужно создать 4 объекта-призрака. Теперь, когда у вас есть класс, вы можете создать столько объектов-призраков, сколько захотите. Чтобы переместить призраков, игра должна вызывать метод Move для каждого объекта Ghost. Об этом намного проще думать, и это намного лучше организовано.

С объектами можно делать и более интересные вещи. Например, предположим, что вам нужен Быстрый призрак, который двигался в два раза быстрее других призраков, но поворачивал только влево. Вы можете создать подкласс Ghost под названием Fast Ghost и дать ему новый метод Move. Тогда просто создайте объект Fast Ghost вместо одного из объектов Ghost, и вы получите более интересную игру.

Tldr; Объект — это экземпляр класса. Объектно-ориентированное программирование рассматривает различные части вашего кода как вещи, которые имеют свойства и могут что-то делать. Эти части называются классами, когда вы их пишете, но объектами, когда вы их фактически используете.

Читайте также: