Middle
Программалоодо байланыштуу жана байланыштуу эмне?
sobes.tech AI
AIден жооп
Коһезия (Cohesion) — бул модулдун (класа, функция) ичинде элементтердин канчалык тыгыз байланышта экенин өлчөөчү көрсөткүч. Жогорку коһезия дегенде, модулдун элементтери бир гана тапшырма же концепцияга багытталган болот. Жакшы долбоорлонгон модуль жогорку коһезияга ээ.
Коһезиянын деңгээлдеринин мисалдары (азыркыдан жогору):
- Кездейсок (Coincidental): Элементтер кездейсок байланышкан, логикалык байланышы жок.
- Логикалык (Logical): Элементтер логикалык байланыштуу аракеттердин топтомун аткарат, бирок тандоо сырттан код тарабынан жасалат.
- Убакыттык (Temporal): Элементтер бир убакта аткарылат деген негизде байланышкан.
- Процедуралык (Procedural): Элементтер аткаруу процедурасын көздөйт.
- Комуникациялык (Communicational): Элементтер бирдей маалыматтар менен иштейт.
- Тизме (Sequential): Бир элементтин чыгышы башкасына кириш болуп саналат.
- Функционалдык (Functional): Бардык элементтер бир анык функцияны аткарууга салым кошот.
Кеп (Coupling) — бул ар башка модулдар арасындагы көзкарандылык деңгээли. Төмөнкү кеп модулдар бир-биринен салыштырмалуу көзкаранды эмес. Кепти азайтуу системаны ийкемдүү, оңой тейлөө жана тестирлөө мүмкүнчүлүгүн жогорулатат.
Кептин деңгээлдеринин мисалдары (жогоркудан төмөнгө):
- Мазмуну боюнча (Content): Бир модуль түздөн-түз башка модулдун ички маалыматтарына же ишке ашырылышына кайрият кылат.
- Жалпы (Common): Модулдар жалпы глобалдык маалымат аймагын колдонушат.
- Баскаруу боюнча (Control): Бир модуль башка модулдун иш-аракетин аныктаган башкаруу белгисин берет.
- Стамп боюнча (Stamp): Күрөң маалыматтарды өткөрүү (объекттер, структуралар), бирок модуль алардын тек бөлүгүн гана колдонуп жатат.
- Маалымат боюнча (Data): Жөнөкөй маалыматтарды параметрлер катары өткөрүү.
- Хабарлар аркылуу (Message): Модулдар билдирүүлөрдү алмашат (мисалы, окуялар, интерфейстер аркылуу). Бул эң алсыз кеп түрү.
Жакшы дизайндин максаты: жогорку коһезия (модулдардын ичинде) жана төмөн кеп (модулдар ортосунда).
<?php
// Жогорку коһезиянын мисалы (Функционалдык коһезия)
// Бул класс гана колдонуучуларды иштетүүгө багытталган
class UserManager {
private array $users = [];
public function addUser(string $name): void {
$this->users[] = $name;
}
public function getUsers(): array {
return $this->users;
}
public function deleteUser(string $name): void {
$this->users = array_filter($this->users, fn($user) => $user !== $name);
}
}
// Төмөн кептин мисалы (Маалымат байланышы)
// 'processOrder' гана берилген маалыматтарга ($orderId, $amount) көзкаранды.
class OrderProcessor {
public function processOrder(int $orderId, float $amount): bool {
// Тапшырыкты иштетүү логикасы...
// Башка класстардын ишке ашырылышына түздөн-түз көзкаранды эмес,
// гана кирүү маалыматтарына көзкаранды.
echo "Processing order ID $orderId with amount $amount\n";
return true;
}
}
// Мисал, UserManager жана OrderProcessor бири-бирине катуу көзкаранды эмес.
// Алар өз алдынча же бирге колдонулушу мүмкүн, бирок алардын ички өзгөрүүлөрү
// бири-бейне таасир этпейт.
?>