Tuesday, March 4, 2008
Конфуций... вот прав мужик
«Что можно сказать о человеке, если все в деревне его любят?» — «Это никчемный человек», — ответил Конфуций. «А что можно сказать о человеке, которого все в деревне ненавидят?» — «И это никчемный человек, — сказал Конфуций. — Лучше, когда хорошие люди из этой деревни его любят, а дурные — ненавидят».
Tuesday, February 26, 2008
Жикаренцев
Законы этой жизни таковы, что вы можете решать в ней любые проблемы, неважно, где находятся их корни и кто их породил. Действуйте, а помощь придёт всегда.
Saturday, February 23, 2008
О течениях
"Если вас внезапно подхватило течение ..... не пытайтесь бороться с течением и плыть против него. Вместо этого плывите перпендикулярно течению." учебник OWD стр 129.
Судя по всему это будет работать и в большинстве жизненных ситуаций....
Судя по всему это будет работать и в большинстве жизненных ситуаций....
Monday, February 11, 2008
Жаль что не я придумал.....
По настоящему счастлив лишь тот, кто зависит только сам от себя (Цицерон)
Friday, January 4, 2008
Введение в AspectJ
Введение в AspectJ
Этот раздел кратко познакомит Вас с основными возможностями AspectJ, которые встретятся далее в этой главе. Эти возможности – ядро языка, но тем не менее не полное его описание.
Особенности языка мы рассмотрим на примере простого графического редактора, где есть фигуры (Figure) состоящие из частей FigureElements, которые, в свою очередь, могут быть либо точками (Point) либо линиями (Line). Класс Figure предоставляет фабричные функции (имеется в виду GoF Abstract Factory, прим перев). Существует, также, класс Display. Большинство примеров данной главы базируются на данной системе.

UML для системы FigureEditor
Основным фактором, побуждающим использовать AspectJ (или использовать AOP в целом), является понимание того, что существуют проблемы, которые плохо решаемы при помощи традиционных методологий программирования. Рассмотрим, к примеру, проблему обеспечения безопасности некоторого приложения. По своей природе, безопасность пронизывает множество модулей системы. Более того, в силу постоянной эволюции системы, безопасность должна равномерно охватывать и все новые модули системы. Сама система безопасности тоже может эволюционировать. Путь использования традиционных подходов для решения таких проблем как политика безопасности является сложным и порождает множество ошибок.
Концепции, вроде безопасности, пронизывают элементарные части системы. В ООП языках, элементарная часть системы является классом. Но в ООП языках внедрение сквозных концепций является затруднительным, так как приходится изменять сами классы, что в свою очередь, делает повторное использование кода практически невозможным. Такие классы сложно улучшать, от них сложно наследоваться, потом такие классы неконтролируемо распространяются по всей системе… короче – не удобно и все тут.
Аспектно - ориентированное программирование – способ обобщения сквозного подхода, равно как ООП является способом обобщения общих концепций предметной области. AspectJ – реализация АОП для Java.
AspectJ добавляет в Java лишь одну новую концепцию – join point - в реальности, это лишь название для уже существующей в Java концепции. А также добавлены еще несколько новых конструкций – pointcut, advice, объявление inter-type и aspects. (я даже не буду пытаться перевести эти, всем понятные термины на русский язык, чтобы не быть оплеванным – прим переводчика ). Pointcuts и Advice влияют на выполнение программы динамически, определения inter-type на иерархию классов системы статически, а аспекты инкапсулируют эти новые конструкции.
Join point – явно определенная точка программы. Pointcut консолидирует набор join point и данных в них. Часть кода advice будет выполнена в том случае, когда будет достигнута join point. Это были динамические составляющие AspectJ.
AspectJ содержит различные виды inter-type определений, которые позволяют разработчику модифицировать статическую структуру программы, а именно – члены классов и зависимости между классами.
AspectJ's aspect является базовой сущностью сквозного подхода. Их поведение напоминает Java классы, но может содержать pointcuts, advice и определения inter-type.
(Далее по тексту будут использоваться слова джоинпоинт, поинткат, адвайс, аспект, интертайп – прим перев.)
В разделах, которые последуют прямо сейчас, мы собираемся рассмотреть джинпоинты и то, как их объединять в поинткаты. Потом мы рассмотрим адвайс: код, который запускается в момент достижения поинтката. Мы рассмотрим, как комбинировать поинткаты и адвайсы в аспекты – базовые сущности AspectJ, которые доступны для повторного использования и наследования. И, наконец, мы рассмотрим, как использовать интертайп определения для обеспечения сквозного подхода в контексте классов программы.
Этот раздел кратко познакомит Вас с основными возможностями AspectJ, которые встретятся далее в этой главе. Эти возможности – ядро языка, но тем не менее не полное его описание.
Особенности языка мы рассмотрим на примере простого графического редактора, где есть фигуры (Figure) состоящие из частей FigureElements, которые, в свою очередь, могут быть либо точками (Point) либо линиями (Line). Класс Figure предоставляет фабричные функции (имеется в виду GoF Abstract Factory, прим перев). Существует, также, класс Display. Большинство примеров данной главы базируются на данной системе.

UML для системы FigureEditor
Основным фактором, побуждающим использовать AspectJ (или использовать AOP в целом), является понимание того, что существуют проблемы, которые плохо решаемы при помощи традиционных методологий программирования. Рассмотрим, к примеру, проблему обеспечения безопасности некоторого приложения. По своей природе, безопасность пронизывает множество модулей системы. Более того, в силу постоянной эволюции системы, безопасность должна равномерно охватывать и все новые модули системы. Сама система безопасности тоже может эволюционировать. Путь использования традиционных подходов для решения таких проблем как политика безопасности является сложным и порождает множество ошибок.
Концепции, вроде безопасности, пронизывают элементарные части системы. В ООП языках, элементарная часть системы является классом. Но в ООП языках внедрение сквозных концепций является затруднительным, так как приходится изменять сами классы, что в свою очередь, делает повторное использование кода практически невозможным. Такие классы сложно улучшать, от них сложно наследоваться, потом такие классы неконтролируемо распространяются по всей системе… короче – не удобно и все тут.
Аспектно - ориентированное программирование – способ обобщения сквозного подхода, равно как ООП является способом обобщения общих концепций предметной области. AspectJ – реализация АОП для Java.
AspectJ добавляет в Java лишь одну новую концепцию – join point - в реальности, это лишь название для уже существующей в Java концепции. А также добавлены еще несколько новых конструкций – pointcut, advice, объявление inter-type и aspects. (я даже не буду пытаться перевести эти, всем понятные термины на русский язык, чтобы не быть оплеванным – прим переводчика ). Pointcuts и Advice влияют на выполнение программы динамически, определения inter-type на иерархию классов системы статически, а аспекты инкапсулируют эти новые конструкции.
Join point – явно определенная точка программы. Pointcut консолидирует набор join point и данных в них. Часть кода advice будет выполнена в том случае, когда будет достигнута join point. Это были динамические составляющие AspectJ.
AspectJ содержит различные виды inter-type определений, которые позволяют разработчику модифицировать статическую структуру программы, а именно – члены классов и зависимости между классами.
AspectJ's aspect является базовой сущностью сквозного подхода. Их поведение напоминает Java классы, но может содержать pointcuts, advice и определения inter-type.
(Далее по тексту будут использоваться слова джоинпоинт, поинткат, адвайс, аспект, интертайп – прим перев.)
В разделах, которые последуют прямо сейчас, мы собираемся рассмотреть джинпоинты и то, как их объединять в поинткаты. Потом мы рассмотрим адвайс: код, который запускается в момент достижения поинтката. Мы рассмотрим, как комбинировать поинткаты и адвайсы в аспекты – базовые сущности AspectJ, которые доступны для повторного использования и наследования. И, наконец, мы рассмотрим, как использовать интертайп определения для обеспечения сквозного подхода в контексте классов программы.
Subscribe to:
Posts (Atom)

