1.1.1. Что такое объект
1.1.1. Что такое объект
В объектно-ориентированном программировании объект — фундаментальное понятие. Объект — это сущность, служащая контейнером для данных и управляющая доступом к этим данным. С объектом связан набор атрибутов, которые в сущности представляют собой просто переменные, принадлежащие объекту. (В этой книге мы будем без стеснения употреблять привычный термин «переменная» в применении к атрибутам.) Кроме того, с объектом ассоциирован набор функций, предоставляющих интерфейс к функциональным возможностям объекта. Эти функции называются методами.
Важно отметить, что любой объектно-ориентированный язык предоставляет механизм инкапсуляции. В общепринятом смысле это означает, во-первых, что атрибуты и методы объекта ассоциированы именно с этим объектом, а во-вторых, что область видимости атрибутов и методов по умолчанию ограничена самим объектом (применение принципа сокрытия информации).
Объект считается экземпляром класса объекта (обычно он называется просто классом). Класс можно представлять себе как чертеж или образец, а объект — как вещь, изготовленную по этому чертежу. Также класс часто называют абстрактным типом, то есть типом более сложным, нежели целое или строка символов.
Создание объекта (экземпляра класса) называют инстанцированием. В некоторых языках имеются явные конструкторы и деструкторы — функции, выполняющие действия, необходимые соответственно для инициализации и уничтожения объекта. Отметим попутно, что в Ruby есть нечто, что можно назвать конструктором, но никакого аналога деструктора не существует (благодаря наличию механизма сборки мусора).
Иногда возникает ситуация, когда некоторые данные имеют широкую область видимости, не ограниченную одним объектом, и помещать копию такого атрибута в каждый экземпляр класса неправильно. Рассмотрим, к примеру, класс MyDogs и три объекта этого класса: fido, rover и spot. У каждой собаки могут быть такие атрибуты, как возраст и дата вакцинации. Предположим, однако, что нужно сохранить еще и имя владельца всех собак. Можно, конечно, поместить его в каждый объект, но это пустая трата памяти, к тому же искажающая смысл дизайна. Ясно, что атрибут «имя владельца» принадлежит не отдельному объекту, а классу в целом. Такие атрибуты (синтаксис их определения в разных языках различен) называются атрибутами класса (или переменными класса).
Есть немало ситуаций, в которых может понадобиться переменная класса. Допустим, например, что нужно знать, сколько всего было создано объектов некоторого класса. Можно было бы завести переменную класса, инициализировать ее нулем и увеличивать на единицу при создании каждого объекта. Эта переменная ассоциирована именно с классом, а не с каким-то конкретным объектом. С точки зрения области видимости она не отличается от любого другого атрибута, но существует лишь одна ее копия для всего множества объектов данного класса.
Чтобы отличить атрибуты класса от обыкновенных атрибутов, последние часто называют атрибутами объекта (или атрибутами экземпляра). Условимся, что в этой книге под словом «атрибут» понимается атрибут экземпляра, если явно не оговорено, что это атрибут класса.
Точно так же методы объекта служат для управления доступом к его атрибутам и предоставляют четко определенный интерфейс для этой цели. Но иногда желательно или даже необходимо определить метод, ассоциированный с самим классом. Неудивительно, что метод класса управляет доступом к переменным класса, кроме того, выполняя действия, распространяющиеся на весь класс, а не на какой-то конкретный объект. Как и в случае с атрибутами, мы будем считать, что метод принадлежит объекту, если явно не оговорено противное.
Стоит отметить, что в некотором смысле все методы являются методами класса. Не нужно думать, что, создав сто объектов, мы породили сотню копий кода методов! Однако правила ограничения области видимости гласят, что метод каждого объекта оперирует данными только того объекта, от имени которого вызван. Тем самым у нас создается иллюзия, будто методы объекта ассоциированы с самими объектами.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Объект WshEnvironment
Объект WshEnvironment Объект WshEnvironment позволяет получить доступ к коллекции, содержащей переменные среды заданного типа (переменные среды операционной системы, переменные среды пользователя или переменные среды текущего командного окна). Этот объект можно создать с помощью
Объект WshSpecialFolders
Объект WshSpecialFolders Объект WshSpecialFolders обеспечивает доступ к коллекции, содержащей пути к специальным папкам Windows (например, к рабочему столу или к меню Пуск (Start)); задание путей к таким папкам может быть необходимо, например, для создания непосредственно из сценария ярлыков на
Объект WshNetwork
Объект WshNetwork Объект WshNetwork предназначен для работы с ресурсами локальной сети; с помощью методов этого объекта можно подключать и отключать сетевые диски и принтеры.Объект WshNetwork создается следующим образом:var objNet=WScript.CreateObject("WScript.Network");Свойства данного объекта приведены
Объект WshRemoteError
Объект WshRemoteError Объект WshRemoteError создается автоматически при возникновении ошибки во время выполнения сценария на удаленной машине и содержит информацию об этой ошибке. Ссылка на объект WshRemoteError хранится в свойстве Error соответствующего объекта WshRemote.Свойства объекта
Объект FileSystemObject
Объект FileSystemObject Объект FileSystemObject является основным объектом, обеспечивающим доступ к файловой системе компьютера; его методы используются для создания остальных объектов (Drives, Drive, Folders, Folder, Files, File и TextStream).Для создания внутри сценария экземпляра объекта FileSystemObject можно
Объект Drive
Объект Drive С помощью объекта Drive можно получить доступ к свойствам заданного локального или сетевого диска. Создается объект Drive с помощью метода GetDrive объекта FileSystemObject следующим образом:var FSO, D;FSO = WScript.CreateObject("Scripting.FileSystemObject");D = FSO.GetDrive("C:");Также объекты Drive могут быть
Объект Folder
Объект Folder Объект Folder обеспечивает доступ к свойствам каталога. Создать этот объект можно с помощью свойства RootFolder объекта Drive или методов GetFolder, GetParentFolder и GetSpecialFolder объекта FileSystemObject следующим образом:var FSO, Folder;FSO = WScript.CreateObject("Scripting.FileSystemObject");Folder = FSO.GetFolder("С:Мои
Объект File
Объект File Объект File обеспечивает доступ ко всем свойствам файла. Создать этот объект можно с помощью метода GetFile объекта FileSystemObject следующим образом:var FSO, F;//Создаем объект FileSystemObjectFSO=WScript.CreateObject("Scripting.FileSystemObject");//Создаем объект FileF=FSO.GetFile("С:Мои документахletter.txt");Также
Объект TextStream
Объект TextStream Объект TextStream обеспечивает последовательный (строка за строкой) доступ к текстовому файлу. Методы этого объекта позволяют читать информацию из файла и записывать ее в него.Создать объект TextStream можно с помощью следующих методов:? CreateTextFile объектов FileSystemObject и
Объект Array
Объект Array Новый объект встроенного класса Array можно создать с помощью оператора new следующими способами:? new Array() — создание массива нулевой длины;? new Array(N) — создание массива длины N;? new Array(а0, a1, ..., aN) — создание массива длины N+1 c элементами а0, a1, ..., aN.Например:var A1, А2, A3;A1 = new
Объект Date
Объект Date Для создания нового объекта встроенного класса Date используется один из трех конструкторов.Конструктор первого вида позволяет создать объект, в котором хранится информация о текущих дате и времени:var d;d = new Date();Здесь время задается по Гринвичу, т.е. с
Объект Enumerator
Объект Enumerator С помощью объекта Enumerator можно получить доступ к любому элементу коллекции (в VBScript для этого служит цикл For…Each). Коллекцией в языке JScript называется множество элементов, которое отличается от массива тем, что к элементам коллекции нельзя получить прямой доступ
Объект Math
Объект Math Встроенный класс Math применяется для математических вычислений и содержит основные математические константы и функции. Замечание Объект Math создается сервером сценариев автоматически и не может быть создан при помощи оператора new, как другие встроенные
1.1.1. Что такое объект
1.1.1. Что такое объект В объектно-ориентированном программировании объект — фундаментальное понятие. Объект — это сущность, служащая контейнером для данных и управляющая доступом к этим данным. С объектом связан набор атрибутов, которые в сущности представляют собой
Объект
Объект Все, что находится в трехмерном виртуальном пространстве сцены — это объекты. Термин "объект" обозначает нечто, находящееся в трехмерном мире. Что бы мы ни создали в виртуальном пространстве, это будет объект.Существует множество видов объектов. Принадлежность
Что такое объект?
Что такое объект? Прежде всего, необходимо напомнить смысл термина "объект". Полная ясность была внесена в предыдущей лекции в виде строгого определения (Определение и объективное правило, см. лекцию 7):Определение: объектОбъект - это экземпляр некоторого классаВо время