при проектировании приложений существуют критерии, правила и принципы.
Критерии:
-декомпозиция
-композиция
-понятность
-непрерывность
-защищенность
Правила:
-прямое отображение
-минимум интерфейсов
-слабая связность
-явная интерпретация
-сокрытие информации
Необходимо привести примеры в словесной форме того, как эти критерии и принципы могут нарушаться и соблюдаться при проектировании приложений в ООП.
Другие языки программирования и технологии
привести примеры нарушения и соблюдения критериев и правил при проектировании приложений.
Для начала, что такое критерии:
Критерии, это признаки, по которым наблюдаемый объект можно отнести к тому или иному классу.
Критерии проектирования - это признаки, по которым можно судить проводилось ли проектирование ВООБЩЕ. Проблема в том, что использующийся в ОО программировании метод проектирования OOA&D уже удовлетворяет большинству критериев, так как подразумевает разбиение на классы, объединение классов в пакеты. Понятность достигается правильным названием и описанием, а непрерывность обеспечивается наличием классов. Проблемы с защищённостью решаются наличием исключений.
Почему так получилось? А потому, что этот метод СПЕЦИАЛЬНО так разработали, чтобы АВТОМАТИЧЕСКИ удовлетворять критериям.
С правилами всё интереснее:
ПРЯМОЕ ОТОБРАЖЕНИЕ - все сущности, модели которых были построены при анализе предметной области ОБЯЗАНЫ войти в виде классов. Пример+, пользователь, вводящий данные, представлен классом UserInput, весь ввод идёт только через него. Пример-, ввод данных для каждой из форм интерфейса выполнен независимо друг от друга.
МИНИМУМ ИНТЕРФЕЙСОВ - основные действия должны осуществляться внутри класса, сократить количество публичных методов классов до необходимого минимума. Пример+ не допускать такого для списка: вызвать Init - для создания, потом SetSize(size) для установки числа элементов, нужно Init(size). Пример- наличие "библиотечных" классов алгоритмов, которые вызываются кем угодно и когда угодно для выполнения сортировок, итераций и т. п.
СЛАБАЯ СВЯЗНОСТЬ - минимизировать ОБЪЁМ передаваемых данных, сократить количество параметров методов. Пример+ метод с 15 параметрами смотрится очень интересно, но лучше вместо него создать класс, который может содержать несколько методов для работы с этими данными, вместо одного сложного. Пример- не всегда есть необходимость в объединении параметров, функция printf работает нормально при любом количестве параметров.
ЯВНАЯ ИНТЕРПРЕТАЦИЯ - не должно быть скрытого взаимодействия между классами. Пример+ использование глобальных данных очень удобно, но отследить, кто их поменял, потребует усилий. Пример- совместная работа над ОДНИМИ данными - основной принцип многопоточного программирования.
СОКРЫТИЕ ИНФОРМАЦИИ - это основа ОО программирования, public и private - просто есть в любом классе.
ЗЫ
Примеры СПЕЦИАЛЬНО подбирались так, чтобы ни на одной стороне не было перевеса.
Критерии, это признаки, по которым наблюдаемый объект можно отнести к тому или иному классу.
Критерии проектирования - это признаки, по которым можно судить проводилось ли проектирование ВООБЩЕ. Проблема в том, что использующийся в ОО программировании метод проектирования OOA&D уже удовлетворяет большинству критериев, так как подразумевает разбиение на классы, объединение классов в пакеты. Понятность достигается правильным названием и описанием, а непрерывность обеспечивается наличием классов. Проблемы с защищённостью решаются наличием исключений.
Почему так получилось? А потому, что этот метод СПЕЦИАЛЬНО так разработали, чтобы АВТОМАТИЧЕСКИ удовлетворять критериям.
С правилами всё интереснее:
ПРЯМОЕ ОТОБРАЖЕНИЕ - все сущности, модели которых были построены при анализе предметной области ОБЯЗАНЫ войти в виде классов. Пример+, пользователь, вводящий данные, представлен классом UserInput, весь ввод идёт только через него. Пример-, ввод данных для каждой из форм интерфейса выполнен независимо друг от друга.
МИНИМУМ ИНТЕРФЕЙСОВ - основные действия должны осуществляться внутри класса, сократить количество публичных методов классов до необходимого минимума. Пример+ не допускать такого для списка: вызвать Init - для создания, потом SetSize(size) для установки числа элементов, нужно Init(size). Пример- наличие "библиотечных" классов алгоритмов, которые вызываются кем угодно и когда угодно для выполнения сортировок, итераций и т. п.
СЛАБАЯ СВЯЗНОСТЬ - минимизировать ОБЪЁМ передаваемых данных, сократить количество параметров методов. Пример+ метод с 15 параметрами смотрится очень интересно, но лучше вместо него создать класс, который может содержать несколько методов для работы с этими данными, вместо одного сложного. Пример- не всегда есть необходимость в объединении параметров, функция printf работает нормально при любом количестве параметров.
ЯВНАЯ ИНТЕРПРЕТАЦИЯ - не должно быть скрытого взаимодействия между классами. Пример+ использование глобальных данных очень удобно, но отследить, кто их поменял, потребует усилий. Пример- совместная работа над ОДНИМИ данными - основной принцип многопоточного программирования.
СОКРЫТИЕ ИНФОРМАЦИИ - это основа ОО программирования, public и private - просто есть в любом классе.
ЗЫ
Примеры СПЕЦИАЛЬНО подбирались так, чтобы ни на одной стороне не было перевеса.
Похожие вопросы
- Что такое дискриптор в С++? Обьясните пожалуйсто на понятном языке, и если можно то приведите примеры.
- Можете ли вы привести пример применения сложных математических расчётов в программировании?
- приведите примеры понравившихся дизайнов сайтов организаций.
- народ подскажите фотошоп это векторный или растровый редактор? и приведите примеры(или как их сделать)
- помогите. паскаль. приведите пример програмы в паскале,любую program P1 var и т.д.
- какие есть виды алгоритмы?? приведи примеры
- Visual Basic : приведите примеры на операторы выбора
- приведите примеры программ написанных на языке делфи или игр
- Приведите пример конкретных (с учетом специализации) карьерных лифтов программиста, старт без опыта. "умники" мимо
- Помогите привести примеры использования компьютерной графики для вычислительного эксперимента