Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория экзамен.doc
Скачиваний:
25
Добавлен:
29.05.2015
Размер:
516.61 Кб
Скачать

24. Общие понятия об ооп

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

Инкапсуляция позволяет ограничить доступ к какой-либо информации. Важно понять, что абстракция и инкапсуляция дополняют друг друга, т.е. абстрагирование направлено на наблюдаемое поведение объекта, а инкапсуляция занимается его внутренним устройством. В этом уроке, в общих чертах, объясняются функции двух модификаторов доступа: private и public.

Наследование – это важнейший механизм, позволяющий одному классу повторять структуру и поведение другого класса. С помощью наследования решается ряд важных задач программирования, среди которых одна из основных – это задача устранения дублирования кода.

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

27. Абстрактные классы и интерфейсыАбстрактным называется класс, на основе которого не могут создаваться объекты. При этом наследники класса могут быть не абстрактными, на их основе объекты создавать, соответсвенно, можно.Для того, чтобы превратить класс в абстрактный перед его именем надо указать модификатор abstract.

Приведение классов Зачем же может потребоваться ссылка ob1, какой объект с ней удастся связать? Ну, например, объект класса-потомка B. Дело в том, что класс A, как родитель, является более универсальным, чем потомок B. Это значит, что любой объект класса потомка может быть явно или даже автоматически приведён к классу родителю.

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

Какой смысл в создании метода без реализации? Ведь его нельзя будет использовать. Для объектов того класса, где метод описан – конечно же использовать нельзя, но вот если унаследовать класс и в потомках переопределить метод, задав там его описание, то для объектов классов потомков метод можно будет вызывать (и работать будут описанные в классах потомках реализации).

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

Когда же уместно использовать абстрактные методы и классы? Сначала рассмотрим пример иерархии классов домашних животных, где нет ни абстрактных классов, ни абстрактных методов.

Интерфейс это консутрукция языка программирования Java, в рамках которой могут описываться только абстрактные публичные (abstract public) методы и статические константyst свойства (final static). То есть также, как и на основе абстрактных классов, на основе интерфейсов нельзя порождать объекты.

Один интерфейс может быть наследником другого интерфейса.

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

Перед описанием интерфейса указывается ключевое слово interface. Когда класс реализуемт интерфейс, то после его имени указывается ключевое слово implements и далее через запятую перечисляются имена тех интерфейсов, методы которых будут полностью описаны в классе.