Спајање вс кохезија
Спајање и кохезија су два концепта која се налазе у Јави (и свим осталим језицима оријентисаних објектима). Спајање мери колико сваки од програмских модула зависи од осталих програмских модула. Кохезија мери колико су све функције повезане у модулу. Заправо, било који објектно оријентисани језик (укључујући Јава) има два главна циља повећавања кохезивности и истовременог повезивања, како би се развили најефикаснији програми. Ове две метрике софтверског инжењерства развио је Ларри Цонстантине како би смањио трошкове измена и одржавања софтвера.
Шта је кохезија?
Кохезија мери колико су све функције повезане у програмском модулу. Добро структуриране наставе воде до високо кохезивних програма. Ако одређена класа обавља скуп веома повезаних функција, за ову класу се каже да је кохезивна. С друге стране, ако класа обавља гомилу потпуно неповезаних функционалности, то значи да класа уопште није кохезивна. Важно је разумјети да то што нема кохезивности не значи да цјелокупна апликација нема потребну функционалност. Само што ће без кохезије бити веома тешко управљати функционалношћу јер ће се оне раштркати на многим погрешним местима јер се сложеност апликације с временом повећава. Одржавање, модификовање и продужавање понашања разбацаних по шифри врло је напорно чак и за већину програмера са искуством.
Шта је спајање?
Спајање мери колико сваки од програмских модула зависи од осталих програмских модула. Интеракције између два објекта настају зато што постоји веза. Лако повезани програми су високе флексибилности и проширивости. Јака повезаност никад није добра јер један објект може бити у великој мјери овисан о неком другом објекту. Ово је ноћна мора када је код модификован, јер велико повезивање значи да програмери морају да раде на више места кода чак и за једну промену понашања. Снажно повезивање увек доводи до програма са малом флексибилношћу и мањом скалабилношћу / проширивошћу. Међутим, у програмским језицима као што је Јава, потпуно избегавање повезивања је немогуће. Али препоручује се да се програмери максимално потруде да што више смање спојку. Могуће је и повезивање које ће помоћи објектима да међусобно комуницирају, а да не омете његову скалабилност и флексибилност.
Која је разлика између спајања и кохезије?
Иако се спајање и кохезија баве квалитетом модула у програмском инжењерингу, то су потпуно различити концепти. Кохезија говори о томе колико су функционалности међусобно повезане у модулу, док се повезивање бави колико један модул зависи од осталих програмских модула у целој апликацији. Да би имали најквалитетнији софтвер, кохезија и спајање треба да дођу до два супротна краја њиховог спектра. Другим речима, лабава спрега и јака кохезија пружају најбољи софтвер. Имајући приватна поља, нејавне класе и приватне методе омогућавају лабаво спајање, док чине сви чланови видљивима унутар класе и имају пакет као подразумевану видљивост високу кохезију.