§17 Проектируйте и документируйте наследование или запрещайте его.

Презентация:



Advertisements
Похожие презентации
§11 Переопределяйте clone() избирательно. interface Cloneable –Особенность Object.clone() –Уникальность интерфейса.
Advertisements

Лекция 3 Принципы объектно- ориентированного программирования.
Принципы объектно-ориентированного программирования Объектная модель Наследование Инкапсуляция Полиморфизм.
1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
§15 Минимизируйте mutability. Признаки immunable класса Не создавайте методов, способных изменить состояние объекта (mutators) Убедитесь, что от класса.
Классы в C# Ссылочный тип, определенный пользователем (аналогично языкам C++ и Java) Единичное наследование классов Множественное наследование интерфейсов.
Наследование. Наследование – это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся.
Кафедра ОСУ, Java 2004 Слайд 1 Наследование Наследование позволяет использовать существующий класс для определения новых классов, т.е. способствует.
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
Введение в объектно- ориентированное программирование.
Java SE: основные понятия Александр Последов
Наследование Полиморфизм ВЫЗОВ КОНСТРУКТОРОВ И ДЕСТРУКТОРОВ ПРИ НАСЛЕДОВАНИИ.
НаследованиеНаследование2 class Point { double x; double y; Color color; }; class Radius { Point center; double radius; };
Часть 1. Основы ООП Наследование и полиморфизм.
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
Конструктор урока.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
ОБЪЕКТНО- ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ (ООП) 1.
OOП Инна Исаева. Подпрограмма – это большая программа, разделённая на меньшие части. В программе одна из подпрограмм является главной. Её задача состоит.
Прикладное программирование кафедра прикладной и компьютерной оптики Наследование.
Транксрипт:

§17 Проектируйте и документируйте наследование или запрещайте его

В классе должно быть описано его собственное использование переопределяемых методов. (переопределяемые – не final и public или protected) По соглашению, это описание следует за описанием метода и начинается со слов This implementation

java.util.AbstractCollection

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

Например, java.util.AbstractList

Единственный способ протестировать класс спроектированный для наследования – это создать наследника. (как правило достаточно 3х экземпляров и как минимум один должен быть написан не автором класса) Такой метод тестирования _настоятельно_ рекомендуется перед опубликованием класса.

Конструкторы не должны вызывать переопределяемые методы.

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