глоссариум ооп: к

Квалификатор (qualifier) – атрибут, однозначно идентифицирующий отдельный целевой объект.

Класс (class) – множество объектов, имеющих общую структуру и общее поведение. Термины класс и тип (но не всегда) являются синонимами. Класс отличается от типа тем, что он концентрируется на классификации структуры и поведения.

Клиент (client) – объект, пользующийся услугами другого объекта, либо выполняя операции над последним, либо ссылаясь на его состояние.

Ключевая абстракция (key abstraction) – класс или объект, являющийся частью словаря предметной области.

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

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

Конкретизация (инстанциирование) (instantiation) – процесс подстановки параметров шаблона обобщенного или параметризированного класса для создания класса, который может иметь экземпляры.

Конкретный класс (concrete class) – класс, реализация которого является завершенной и который, благодаря этому, может иметь экземпляры.

Конструктор (constructor) – операция, создающая объект и/или инициализирующая его стостояние.

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

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

jQuote №1

В главе 4 книги Рефакторинг Мартин Фаулер написал следующее.

Если обратить внимание на потраченное разработчиками время, можно заметить, что написание кода на самом деле составляет небольшую его часть. Некоторое время тратится на постановку задачи, некоторое – на проектирование, но большая его часть уходит на отладку. Каждый читатель может вспомнить долгие часы отладки (часто до глубокой ночи). Любой разработчик может рассказать историю об ошибке, исправление которой потребовало целого дня (или даже больше). На самом деле много времени для исправления ошибки не нужно. А вот найти ошибку – совсем другое дело. Не забывайте, что после исправления одной ошибки всегда существует вероятность появления другой, которая остается незаметной очень долго. И ещё больше времени потребуется на ее обнаружение.

Новый релиз Apache Wicket 1.4

Находясь в больничном отпуске, довольно закономерным является факт прочтения различного рода литературы, в том числе и знакомство с новыми технологиями, фреймверками и т.п., в связи с чем InfoQ стал стартовой страницей моего любимого браузера. Вода-водой, а переходить нужно к сути:  признаюсь, с викетом никогда раньше работать не приходилось, но услышав от девелоперов больше позитивных поинтов чем негативных, всё-таки решил с ним познакомиться. Погуглив страниц десять, я не только нашёл домашнюю страницу фреймверка :) )) , но и узнал о том, что совсем недавно был анонсирован новый релиз такой замечательной плюшки, как Apache Wicket. С чем с вами дорогие читатели и решил поделиться. Более детальную информацию о релизе читаем здесь.

P.S. В то время, как я знакомлюсь с этим фреймверком (пост-репорт будет обязательно), хотелось бы узнать вьюпоинт тех девелоперов, которым с ним уже работать приходилось. В чем плюсы? В чем минусы? Какие приемущества и недостатки перед другими аналогичными фреймверками?

Google выбирает Jetty для App Engine

Google App Engine изначально использовал Apache Tomcat в качестве контейнера сервлетов, который в конечном итоге был заменён на Jetty. Это событие породило ряд дискуссий в сообществах программистов, так как довольно интересным остается следующий вопрос – по какой причине этот переход был осуществлён ? Ответы на данный вопрос даёт InfoQ (кликаем сюда).

Ключевые определения в JSF

Как и большенство технологий, JSF имеет свой собственный набор определений, таких как элементы пользовательского интерфейса, валидаторы и рендеры. Должно быть вы имеете представление о том, зачем эти элементы предназначены в целом, но для того, что бы написать Faces приложение, вы обязаны иметь представление о том, какую ключевую роль каждый из них играет в мире JSF.  Итак, давайте рассмотрим следующие базовые определения, на основе которых JSF вертится вокруг своей оси:

UI компонент (UI component) – стейтфул объект, хранящийся на сервере, который предоставляет функциональность для взаимодействия с конечным пользователем.  UI компонентами являются объекты JavaBeans со свойствами, методами и событиями.  Они организованны в виде (элемент модели MVC), который  состоит из дерева компонентов, обычно отображаемого на странице.

Рендер (Renderer) – ответственный за отображение UI компонента и преобразование вводимых пользователем данных в значения, понятные для компонента. Рендер может работать с одним или более UI компонентом, а UI компонент может иметь ассоциацию со множеством рендеров.

Валидатор (Validator) – несёт ответственность за проверку вводимых пользователем данных на предмет соответсвия их с допустимыми значениями. С одним UI компонентом может быть ассоциирован один или более валидаторов.

Бэкинг бины (Backing beans) – специальные JavaBeans’ы, которые собирают значения из UI компонентов и реализуют методы, ответственные за обработку событий.

Конвертер (Converter) – конвертирует значение компонента из  и в строку для дальнейшего отображения.

События и слушатели (Events and listeners) – JSF использует модель событие/слушатель (так же используемую в Swing). UI компоненты (и другие объекты) генерируют события, а зарегистрированные слушатели обрабатывают эти события.

Сообщения (Messages) - информация, которая возвращается пользователю при вводе в действие бекинг бина, валидатора, конвертера и др.

Навигация (Navigation) – предоставляет возможность навигации с одной страницы на другую. JSF имеет мощную навигационную систему, интегрированную со специализированными слушателями событий.

Совокупность всех вышеперечисленных определений является краеугольным камнем JSF.