Проектиране на софтуерни програми

Когато създаваме големи софтуерни проекти, състоящи се от десетки файлове и хиляди редове код трябва още от самото начало да пишем кода си, така че да може лесно да го променяме и обновяваме след това и също така лесно да откриваме грешките в него. Точно за това се използват два популярни принципа в програмирането – силна кохезия и слаба свързаност.

Цел на урока: Да се запознаем с принципите за проектиране на код силна кохезия и слаба свързаност и да можем да ги използваме при създаването на наши програми.

1. Силна кохезия - всеки метод изпълнява точно 1 добре определена функция.

Например, ако имаме метод, който отпечатва числата в интервала от A до B, намира тяхната сумата и средното им аритметично. Добър подход е да разделим този метод на 3 отделни методи и всеки метод да прави само едно нещо. Така ако имаме грешка например в пресмятането на сумата на числата от А до В – ще знаем, че трябва да търсим грешката точно в метода, който отговаря за това. Или пък ако решим, че искаме да променим начина по който отпечатваме числата, вместо всички да са на 1 ред да имаме по 10 числа на ред – ще знаем, че трябва да променим метода, който отговаря за отпечатването на числата, който е по-кратък от първоначалния метод, който правеше 3 различни неща. По този начин в един момент трябва да работим с по-малко код.

За да сме сигурни, че има силна кохезия даден метод е добре да можем лесно да определим неговото смислено наименование. Ако не можем да измислим смислено име на метод, то той най-вероятна прави много и различни неща (както примера по-горе) и това ни обърква.

Друг недостатък на слабата кохезия е, че за да преизползваме метод, който върши много неща трябва да са налице всички проблеми, които този метод решава. За примера по-горе: може да ни се наложи на няколко места да отпечатваме числата и само веднъж да намираме тяхната сума.

2. Слаба свързаност – отделните методи са независими един от друг и промяната на 1 метод не влияе на промяната на останалите.

Това обикновено се постига като добавяме допълнителни параметри към методите.

Пример за добро проектиране е метода CType(value, type), която преобразува дадена стойност(value) в тип променлива, който искаме (type). При този метод ако имаме:

Dym y As Double

Dim x As Integer

x = CType(y, Integer)

Имаме силна кохезия, тъй като метода прави точно 1 нещо – преобразува типа на една променлива в друг тип.

Имаме и слаба свързаност, тъй като можем да променим типа на променливата у на String и това няма да наложи промяна на реда  x = CType(y, Integer). Слабата свързаност се изразява и в това, че можем да използваме метода CType() с други параметри, така че да преобразуваме променливи не само в тип Integer, а и във всеки друг тип.

Примерна задача: Искаме да направим социална мрежа със следните опции: регистрация, вход (Log In) и изпращане на съобщение до друг потребител.
За съхраняване на данните ще използваме 2 двумерни масива:
users(100,3) – за потребителите с колони: username, password, email
messages(1000,3) – за съхраняване на всички изпратени съобщения с колони: fromUser, toUser, messgae.
Като използвате принципите силна кохезия и слаба свързаност реализирате този проект.

Решение: Ще разгледаме какви методи ни трябват, за да реализираме всяка от 3-те функционалности на програмата:

  • регистрация: 1) проверка за коректност; 2) запис в масива с потребители users; 3) визуализация на формата за регистрация
  • вход: 1) търсене в масива users по  username и password; 2) визуализация на формата за вход
  • изпращане на съобщение: 1) писане на текст; 2) намиране на приятел – търсене в масива users 3) запис на кореспонденцията в масива messges; 4) дизайн на формата за писане на съобщение

 

 

 

 

 

 

 

Comments are closed.