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

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

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

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

Вот некоторые типичные причины перепроектирования, а так же паттерны, которые позволяют этого избежать:

Причина Паттерны
При создании объекта явно указывается класс
Зависимость от конкретных операций
Зависимость от аппаратной и программной платформ
Зависимость от представления или реализации объекта
Зависимость от алгоритмов
Сильная связанность
Расширение функциональности за счет порождения классов
Неудобства при изменении классов

 

Все языки ООП обеспечивают механизмы, которые помогают вам реализовать объектно-ориентированную модель. К ним относятся абстракция, инкапсуляциянаследование и полиморфизм. При правильном применении полиморфизм , инкапсуляция и наследование комбинируются так, что создают некую среду программирования, которая обеспечивает намного более устойчивые и масштабируемые программы, чем модель ориентированная на процесс. Удачно спроектированная иерархия классов является базисом для повторно используемого кода, в который вы вложили время и усилия при разработке и тестировании. Инкапсуляция позволяет реализациям мигрировать во времени без разрушения кода, который зависит от public-интерфейса классов. Полиморфизм позволяет создавать ясный, чувствительный и читабельный код.

Паттерны проектирования - описание взаимодействия объектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте.

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

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

Сервисы Контейнер
Web  EJB  Application Client
Concurrency Utilities  
Bean Validation
Batch  
EJB    
EL    
WebSocket    
JSONP
Java Mail
JSONB
JSTL    
JSF    
Java Persistence API (JPA)
Java Transaction API (JTA)  
Connectors  
Java Message Service (JMS)
Management
WS Metadata
Web Services
CDI & DI
JACC  
JAX-RS  
Security  
JASPIC    
HTTP      
HTTPS      
JDBC API      

JNDI (Java Naming and Directory Interface)

     

Двумя самыми заметными стандартами реализации веб-служб являются SOAP и REST.

JAX-WS ( JSR 224 )

JAX-RS (JSR-399)

HTML (Hyper Text Markup Language) - язык разметки гипертекста. В данном случае слово "гипертекст" означает, что с помощью языка HTML вы можете создвать ссылки, позволяющие посетителям быстро и легко перемещаться с одной страницы на другую.