Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GoslingJava2.doc
Скачиваний:
139
Добавлен:
23.02.2016
Размер:
2.39 Mб
Скачать

Глава 2 классы и объекты

Начнем с самого начала, хотя порядок может быть и другим. Доктор Who, Meglos

Фундаментальной единицей программирования в Java является класс. Всостав классов входят методы— фрагменты выполняемого кода, в которых происходят все вычисления. Классы также определяют структуру объектов и обеспечивают механизмы для их создания на основе определения класса. Вы можете ограничиваться в своих программах одними лишь примитивными типами (целыми, вещественными и т.д.), но практически любая нетривиальная программа на Java создает объекты и работает с ними.

В объектно-ориентированном программировании между тем, что делается, и тем, как это делается, существуют четкие различия. “Что” описывается в виде набора методов (а иногда и общедоступных данных) и связанной с ними семантики. Такое сочетание(методы, данные и семантика) часто называется контрактом между разработчиком класса и программистом, использующим этот класс, так как оно определяет, что происходит при вызове конкретных методов объекта.

Обычно считается, что объявленные в классе методы составляют все содержание его контракта. Кроме того, в понятие контракта входит и семантика этих операций, даже несмотря на то, что она может быть описана лишь в документации. Два метода могут иметь одинаковые имена и сигнатуры, но они не будут эквивалентными, если обладают различной семантикой. Например, нельзя предположить, что каждый метод с именем print предназначен для вывода копии объекта. Кто-нибудь может создать метод print и вложить в его название иную семантику— скажем, термин может быть сокращением от выражений “process interval” или “prioritize nonterminals”. Контракт (то есть совокупность сигнатуры и семантики) определяет сущность метода.

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

2.1. Простой класс

Основными компонентами класса являются поля (данные) и методы (код для работы с ними). Приведем простой класс Body, предназначенный для хранения сведений о небесных телах:

class Body {

public long idNum;

public String nameFor;

public Body orbits;

public static long nextID = 0;

}

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

Body mercury;

Подобное объявление указывает на то, что mercury является ссылкой на объект класса Body. Оно не создает сам объект, а лишь объявляет ссылку на него. Первоначально ссылка имеет значение null, и объект, на который ссылается mercury, не существует до тех пор, пока вы не создадите его явным образом; в этом отношении Java отличается от других языков программирования, в которых объекты создаются при объявлении переменных.

Первая версия класса Body спроектирована неудачно. Это было сделано намеренно: по мере усовершенствования класса в данной главе мы сможем сосредоточить свое внимание на некоторых возможностях языка.

Упражнение 2.1

Напишите простой класс Vehicle (транспортное средство) для хранения информации об автомашине, в котором предусмотрены (как минимум) поля для задания текущей скорости, текущего направления в градусах и имени владельца.

Упражнение 2.2

Напишите класс LinkedList (связный список), в котором имеется поле типа Object и ссылка на следующий по списку элемент LinkedList.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]