Рубрики
Без рубрики

Аспектно-Ориентированного программирования

Давая последовательность моих исследований о том, Micronaut, дал парень, с концепцией, которая не знала… С пометкой бразильский разработчик, java, ооп, функционал.

Давая последовательность моих исследований о том, Micronaut, дал парень, с концепцией, которая не знала слишком много, и я решил искать больше.

На этот раз, я имею в виду аспектно-Ориентированного Программирования, которые, к удивлению никого, Spring работает также с ней (если вы хотите).

Программа, ориентированная на аспекты aaa (ou Аспектно-ориентированное программирование – AOP), была разработана специально для авторов: Грегор Кичалес, Джон Лэмпинг, Анураг Мендекар, Крис Маэда, Кристина Видейра Лопес, Жан-Марк Луангтье, Джон Ирвин, 1997.

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

За счет того, авторы представляют новую технику программирования, ориентированных на аспекты, в которых можно использовать изоляцию надлежащим образом, повторное использование кода, и композиция все было основано на внешний вид кода. То, что я считаю хорошо актуальны на статье этого галера, на некоторое время, они не говорят, что объектно-ориентированного программирования, Программирования Си (или даже Функциональное Программирование-это плохо, но то, что ГПП-это способ дополнить эти графики в точках, которые, как правило, оставляют развития с кодом комплекса должна быть разработана и впоследствии обслуживать.

Ок, но что именно-это внешний вид в программировании?

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

Фонте: Аспектно-ориентированное программирование традузидо пор: Каролина Фонсека

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

” Многие проблемы, связанные с производительностью, являются аспектами, поскольку оптимизация производительности часто использует информацию о контексте выполнения, охватывающем компоненты.”

Многие проблемы, связанные с производительностью, имеют аспекты. Потому, что оптимизация всегда исследует информации о контексте выполнения, где компоненты.

Рука в код

Давайте посмотрим, например, с помощью Java базы, в случае, если мы будем использовать на Цифровой Библиотеки, предложенные в предыдущее изображение:

public class Livro {
    String título, autor;
    int isbn;  

    public String getTitulo(){
        return título;  
    }
    public String getAutor(){
        return autor;  
    }
    public int getIsbn() {
        return isbn;  
    }
}

public class Repository {
    private Livro livros[];
    private int nlivros = 0;

    public Repository (int dbsize)  {    
        livros = new Livro[dbsize];  
    }

    public void registrar (Livro liv)  {    
        livros [nlivros++] = liv;  
    }

    public void retirar (Livro liv)  {    
            ... 
    }

}   

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

Наиболее подходящим будет использование reflection для доступа к этой связи в распределенных, однако, создать отражение на уровне детализации, как и в ООП нужно, в конце концов становится чем-то очень сложным.

Именно здесь, где у нас есть реальная возможность, если использовать АОП:

remote Repository { 
        void registrar (Livro); 
        void retirar (Livro: copy isbn); 
        Livro: copy isbn busca(String);}

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

O Присоединяйтесь к e как отражения

В АОП, у нас есть концепция, называемая Join, что это не более чем момент, когда мы подключаем наш компонента на свой внешний вид, поскольку в английском языке, join означать, объединить, это понятие имеет полный смысл.

И она это делает больше смысла, еще, когда мы говорим reflection и metaobjetos, потому что системы, отражающей предоставляет базу семантики и реализация языка, который мы используем. Говоря о мета-язык , у нас есть доступ к все вызовы функций, и стек выполнения, что на уровне человека, но нам никогда не удавалось увидеть. Видя это угол, на низкий уровень, где можно применить к joins АОП таким образом, что отражение сделайте все остальные задания, таким образом, у нас есть свои аспекты, созданные для целей управления экземпляров и связаны reflection что нам даже не нужно создавать уже, что мы используем, самого языка для этого.

Завершение

Признайтесь, что вы спрашиваете о том, что такое искусство, о том, как “кричать” об АОП, на эспераву, о том, как размышлять о неле, о том, как пройти мимо, о том, как почувствовать, что такое сравнение, о том, как не бывает весны и микронавтов.

Весна уже делает reflections все сразу, то есть, уже мы будем делать сопоставление аспектов во время компиляции, тогда как Micronaut также делает это управление аспекты, но только от того, что на самом деле используется в приложении, но во время предварительной компиляции, но я расскажу об этом в следующих статьях 😉

Я надеюсь, что вам понравилось, и если вы думаете, что пропустили что-то или я написал что-то без смысла, призывает меня говорили!

Фонте: https://www.cs.ubc.ca/~грегор/документы/кичалес-ECOOP1997-AOP.pdf

Оригинал: “https://dev.to/diariodeumacdf/programacao-orientada-a-aspectos-54bn”