Показаны сообщения с ярлыком классы. Показать все сообщения
Показаны сообщения с ярлыком классы. Показать все сообщения
Классы и объекты в Java
Оглавление:
- Базовая терминология и концепции ООП
- Ассоциации: агрегация и композиция
- Базовые элементы декларации класса
- Инстанцирование
- Запуск методов
- Статические члены класса
Базовая терминология и концепции ООП
Классы обозначают категории объектов, и используются как чертежи, по которым строятся объекты. Класс моделирует абстракцию путем определения свойств и поведения для объектов представляющих эту абстракцию. Объект проявляет те свойства и поведение, которые определены для него классом.
Свойства объекта класса также называют атрибутами. Атрибуты определяются с помощью полей в Java. Поле класса - это переменная, которое хранит значение представляющее свойство объекта.
Поведение объекта класса также называют операциями. Операции определяются с помощью методов Java.
Поля и методы в объявлении класса называются общим словом - члены.
Класс предоставляет своим объектам контракт и имплементацию. Контракт определяет какие сервисы предоставляются классом. Имплементация определяет каким образом эти сервисы предоставляются. Клиентам (т.е. другим объектам) чтобы воспользоваться сервисами объекта нужно знать только контракт объекта, а не его имплементацию.
Объявление метода с таким же именем как у класса называется конструктором. Конструктор выполняется при создании объекта из класса.
Процесс создания объектов из классов называется инстанцированием. Объект - это экземпляр класса. Объект - это конкретный экземпляр той абстракции, которую представляет собой класс.
При создании объекта возвращается ссылочное значение (reference value). Ссылочное значение отсылает к объекту. Переменная метит место в памяти, куда может быть сохранено значение. Ссылка на объект (object reference) это переменная, которая хранит ссылочное значение. В Java объектами можно манипулировать только посредством их ссылочных значений или, что то же самое, посредством ссылок, которые содержат ссылочные значения.
Несколько ссылок могут ссылаться на один и тот же объект, т.е. они хранят ссылочное значение одного и того же объекта. Такие ссылки называются псевдонимами. Объектом можно управлять через любой из его псевдонимов.
Когда на объект больше нет ссылок, то его память при необходимости забирается и перераспределяется для других объектов. Этот процесс называется автоматическая сборка мусора. В Java эту заботу берет на себя среда исполнения.
Каждый созданный объект имеет свою копию полей определенных в классе. Поля объекта называются переменными экземпляра (instance variables). Значения переменных экземпляра конституциируют состояние объекта (state). Два разных объекта могут иметь одно и то же состояние, если их переменные экземпляра имеют одни и те же значения. Методы объекта определяющие его поведение называются методами экземпляра (instance methods). Эти методы принадлежат каждому объекту класса. Имплементация этих методов находится в общем использовании у всех объектов класса. Переменные и методы экземпляра, которые принадлежат объектам называются общим термином члены экземпляра (instance members).
В некоторых случаях члены должны принадлежать только классу, т.е. они не должны быть частью ни одного из экземпляров класса. Члены, которые принадлежат только классу называются статическими членами (static members). Поля объявленные с ключевым словом static называются статическими переменными (static variable). Статическая переменная инициализируется при загрузке класса в среду исполнения. Также существуют статические методы (static methods), которые принадлежат скорее к классу, чем к объектам этого класса.
Объекты взаимодействуют друг с другом через передачу сообщений. В Java это делается вызовом метода у объекта посредством бинарного оператора точки. Вызов метода содержит: получателя сообщения, метод для запуска, аргументы метода. Метод запускаемый у получателя может вернуть информацию отправителю посредством одиночного возвращаемого значения. Вызываемый метод должен быть определен для объекта, иначе будет ошибка компиляции.
Dot (.) нотация может использоваться вместе с ссылкой для доступа к полям объекта. При использовании dot нотации учитывается доступность (accessibility) члена. Члены в классе имеющие уровень доступности private не доступны извне класса.
Процесс создания объектов из классов называется инстанцированием. Объект - это экземпляр класса. Объект - это конкретный экземпляр той абстракции, которую представляет собой класс.
При создании объекта возвращается ссылочное значение (reference value). Ссылочное значение отсылает к объекту. Переменная метит место в памяти, куда может быть сохранено значение. Ссылка на объект (object reference) это переменная, которая хранит ссылочное значение. В Java объектами можно манипулировать только посредством их ссылочных значений или, что то же самое, посредством ссылок, которые содержат ссылочные значения.
Несколько ссылок могут ссылаться на один и тот же объект, т.е. они хранят ссылочное значение одного и того же объекта. Такие ссылки называются псевдонимами. Объектом можно управлять через любой из его псевдонимов.
Когда на объект больше нет ссылок, то его память при необходимости забирается и перераспределяется для других объектов. Этот процесс называется автоматическая сборка мусора. В Java эту заботу берет на себя среда исполнения.
Каждый созданный объект имеет свою копию полей определенных в классе. Поля объекта называются переменными экземпляра (instance variables). Значения переменных экземпляра конституциируют состояние объекта (state). Два разных объекта могут иметь одно и то же состояние, если их переменные экземпляра имеют одни и те же значения. Методы объекта определяющие его поведение называются методами экземпляра (instance methods). Эти методы принадлежат каждому объекту класса. Имплементация этих методов находится в общем использовании у всех объектов класса. Переменные и методы экземпляра, которые принадлежат объектам называются общим термином члены экземпляра (instance members).
В некоторых случаях члены должны принадлежать только классу, т.е. они не должны быть частью ни одного из экземпляров класса. Члены, которые принадлежат только классу называются статическими членами (static members). Поля объявленные с ключевым словом static называются статическими переменными (static variable). Статическая переменная инициализируется при загрузке класса в среду исполнения. Также существуют статические методы (static methods), которые принадлежат скорее к классу, чем к объектам этого класса.
Объекты взаимодействуют друг с другом через передачу сообщений. В Java это делается вызовом метода у объекта посредством бинарного оператора точки. Вызов метода содержит: получателя сообщения, метод для запуска, аргументы метода. Метод запускаемый у получателя может вернуть информацию отправителю посредством одиночного возвращаемого значения. Вызываемый метод должен быть определен для объекта, иначе будет ошибка компиляции.
Dot (.) нотация может использоваться вместе с ссылкой для доступа к полям объекта. При использовании dot нотации учитывается доступность (accessibility) члена. Члены в классе имеющие уровень доступности private не доступны извне класса.
Краткое резюме по терминологии членов класса:
- Члены экземпляра: переменные и методы экземпляра. Они могут быть доступны или запущены только через ссылку на объект.
- Переменная экземпляра - это поле аллоцированное при инстанцировании класса (т.е. при создании экземпляра класса). Также называется non-static полем или просто полем, когда контекст очевиден.
- Метод экземпляра. Объекты одного класса разделяют между собой имплементацию методов принадлежащих к экземпляру класса.
- Статические члены: статические переменные и методы класса. Они могут быть доступны и запущены посредством имени класса или ссылки на объект.
- Статическая переменная - это поле аллоцированное при загрузке класса. Оно принадлежит классу и не принадлежит ни одному из объектов класса. Также называется статическим полем или переменной класса.
- Статический метод - принадлежит классу и не принадлежит ни одному из объектов класса. Также называется методом класса.
Определение классов в языке Python
Все данные в языке Python представлены объектами и отношениями между объектами. У любого объекта есть тип. Для определения собственных типов в языке Python есть классы. Классы позволяют описать поведение объектов данного класса.
class MyClass: a = 10 def func(self): print('Hello')
В отличие от функций тело классов исполняется в момент определения самого класса. Для тела класса также как и для функций создается отдельный неймспейс и те имена, которые в этом неймспейсе остались затем закрепляются за объектом класса:
- MyClass.a
- MyClass.func
a и func являются атрибутами класса MyClass.
Подписаться на:
Сообщения (Atom)