- Основни и спомагателни модули
- Функции за модулно програмиране
- модулност
- Определение на функцията
- Обхват на променливите
- Това е процедурно
- Примери за модулно програмиране
- Модулност в реалния живот
- Функции в Java
- предимство
- Независимо програмиране на проекти
- Ефективно разработване на програма
- Многократна употреба на модули
- Лесно отстраняване на грешки и модификации
- Недостатъци
- Прекалено обектно-ориентирана структура
- Модулите са твърде малки
- Разлагайте без причина
- Приложения
- C език
- Препратки
В модул е техника, използвана за разработка на софтуер, където програмата е разделена на много малки парчета, или самостоятелни компонента, наречени модули, които са управляеми, логически и функционален.
Модулът е блок от оператори, който решава конкретен проблем. Всеки модул съдържа всичко необходимо за изпълнение на собствената му функционалност и може да бъде редактиран или модифициран, без да засяга останалата част от проекта.
Пример за решаване на проблем с помощта на модули. Източник: Kayau / CC BY (https://creativecommons.org/licenses/by/3.0)
Този начин на програмиране се постига чрез поддържане на постоянен модулен интерфейс, който се използва от другите софтуерни компоненти за достъп до функциите на всеки модул.
Модулите налагат логически граници между компонентите, подобрявайки поддръжността. Те са вградени чрез интерфейси, които са проектирани по такъв начин, че да минимизират зависимостта между различните модули.
Основни и спомагателни модули
Основен модул и няколко вторични модула са това, което съставлява модулното програмиране. От основния модул се извършват повиквания към функциите на помощните модули.
Тези приставки съществуват като отделни изпълними файлове, които се зареждат, когато главният модул работи. Всеки модул има уникално име, зададено в оператора PROGRAM.
Работните екипи могат да разработят отделни модули отделно, без да е необходимо да знаят всички модули на системата. Всяко от модулните приложения е свързано с номер на версия, за да осигури гъвкавост на разработчиците при поддържането на модула.
Функции за модулно програмиране
модулност
Компютърът не се нуждае от експлодирана версия на кода, за да го стартира. Човешките когнитивни ограничения ви принуждават да пишете код на по-малки парчета.
Една програма може да съдържа други функции и може да се отнася до функции, които са в други файлове. Тези функции или модули са набор от оператори, които се използват за извършване на операция или изчисляване на стойност.
За да се поддържа простотата и четимостта в големите и сложни програми, се използва кратка основна функция във връзка с други функции, а не дълга основна функция.
Разделяйки програма на групи от модули, всеки модул ще бъде по-лесен за разбиране, като по този начин се съобрази с основните насоки на структурираното програмиране.
Определение на функцията
Функцията се състои в декларация за нейното определение, последвана от команди и операции. Общата форма на функция е:
Function_name (параметър декларация) {
изречения;
команди;
обратен израз;
}
- Декларацията на параметрите представлява информацията, която се предава на функцията.
- Допълнителните променливи, използвани конкретно от функцията, са дефинирани в изреченията.
- Всички функции трябва да включват декларация за връщане.
Обхват на променливите
Променливите, които са декларирани в основната функция или в дефинирани от потребителя функции, се наричат локални променливи. Те имат стойност, когато функцията се изпълнява, но тяхната стойност не се запазва, когато функцията завърши.
Променливите, които са декларирани външно към основната програма или към дефинираните от потребителя функции, се наричат глобални променливи. Тези променливи могат да бъдат взети от всяка функция, която е вътре в програмата.
Това е процедурно
Модулното програмиране е доста процедурно, тъй като е напълно ориентирано към писане на код за функции, без да се вземат предвид данните.
Примери за модулно програмиране
Модулност в реалния живот
Да предположим къща с електричество, с няколко изхода на стените. Тази система ви позволява да включвате различни електрически устройства, например микровълнова печка, пералня, сушилня и т.н.
Тези устройства са проектирани да изпълняват специфичната си задача, когато са включени и включени, независимо от това къде се намират.
Модулите на приложение трябва да следват същата философия. Това означава, че те трябва да изпълняват само своята конкретна задача, независимо в коя част от приложението се намират или дори към кое приложение са свързани.
Също така, както електрическото устройство може лесно да се изключи от контакта, един модул трябва да бъде проектиран по такъв начин, че да може лесно да бъде отстранен от приложение.
Точно както премахването на електрическо устройство не влияе върху функционалността на другите свързани устройства, премахването на модули от приложение не трябва да влияе върху функционалността на другите модули на това приложение.
Функции в Java
В Java модулите се записват като независими функции. Например, може да имате функция или блок от кодове, за да изчислите GPA на студента въз основа на оценките им във всички курсове, които са взели.
Функцията трябва да получи списъка на оценките като вход и след това да върне изчислената средна оценка:
Тази функция се нарича CalculateAverageNote. Той получава като вход списък с бележки, използвайки масив от тип данни двоен и връща изчислената средна стойност.
Във функцията локалната променлива сума се инициализира до нула и след това с помощта на цикъл се добавят всички квалификации за сумиране. Накрая получената сума се разделя на броя на бележките, връщайки получената стойност.
Ако входната матрица имаше бележките 3.5, 3.0 и 4.0, след добавянето им, тя щеше да сумира стойността 10,5 и тогава тя ще бъде разделена на 3, защото има три бележки. Функцията би върнала стойността 3.5.
предимство
Независимо програмиране на проекти
Множество програмисти могат да работят върху един и същ проект, ако той е разделен на модули. Различните програмисти могат самостоятелно да проектират различни програмни модули, което е необходимо за голяма и сложна програма.
Ефективно разработване на програма
Програмите могат да бъдат разработени по-бързо, тъй като малките, самостоятелни модули са по-лесни за разбиране, проектиране и тестване от големите програми.
Програмистът може да предостави необходимия вход и да провери дали модулът е правилен, като изследва изхода си.
Многократна употреба на модули
Кодът, написан за една програма, често е полезен за други. Модулното програмиране позволява тези раздели да бъдат запазени за бъдеща употреба. Тъй като кодът е преместваем, запаметените модули могат да бъдат свързани с всяка друга програма, която отговаря на изискванията за вход и изход.
При монолитно програмиране такива раздели на кода са вградени в програмата и не са достъпни за използване от други програми.
Лесно отстраняване на грешки и модификации
Един модул е по-малък от пълна програма, така че е по-лесно да се тества. Всеки модул може да бъде написан и тестван отделно от останалата част от програмата. След като модулът е тестван, той може да се използва в нова програма, без да се налага да го тествате отново.
Когато една програма трябва да бъде променена, модулното програмиране опростява работата. Нови или отстранени с грешки модули могат да бъдат свързани към съществуваща програма, без да променят останалата част от програмата.
Недостатъци
Прекалено обектно-ориентирана структура
Това програмиране използва интерфейси, което е доста ефективна идея. За да се възползвате от това, някои рамки идват с пълен набор от взаимозаменяеми класове. Например, за да се справи с постоянството, може да има множество класове, които прилагат интерфейс за постоянство.
Интегрираната среда за разработка (IDE) обаче се обърква в това. Например, можете да се опитвате да намерите източника на метод и IDE няма да знае кой метод искате да видите, като по този начин ще покаже дълъг списък от файлове, където съществува метод с това име.
Модулите са твърде малки
Има много модули, които съдържат само много малка функция. Всеки модул изисква допълнителен разбор и време за обработка, в допълнение към заглавието му в код.
Следователно използването на много малки модули ще добави режийни разходи към системата за компилация, увеличавайки размера на пакета.
Разлагайте без причина
Някои кодове почти никога не се променят. В тези случаи може да няма много смисъл да се опитвате да изглеждате по-чисти или с абстрактна логика, ако само използването му работи добре.
Има кодове, които не изглеждат прекалено красиви, но въпреки това не са се променили много през последните години. Няма причина за разграждане на код, който никога не се е променил и вече работи добре в модули.
Приложения
Модулното програмиране е само концепция. Неговата практика може да се прилага на всеки език на програмиране, особено на процедурен характер, които имат отделно съставена програма.
Библиотеките на компонентите, изградени от отделно съставени модули, могат да бъдат комбинирани в набор с помощта на инструмент за програмиране, наречен линкер.
Имената на функциите в различните модули трябва да бъдат уникални, за да се улесни достъпа им в случай, че функциите, използвани от основния модул, трябва да бъдат експортирани.
Сред езиците за програмиране, които поддържат концепцията за модулно програмиране, са C, Ada, PL / I, Erlang, Pascal, Algol, COBOL, RPG, Haskell, Python, HyperTalk, IBM / 360 Assembler, MATLAB, Ruby, IBM RPG, SmallTalk, Morpho, Java (пакетите се считат за модули), Perl и т.н.
C език
Модулното програмиране може да бъде приложено на език С, тъй като позволява да се отстрани голяма трудност, като се раздели на няколко модула.
Всеки от тези модули решава конкретен проблем, докато основната програма, която е набор от такива процедури, решава проблема като цяло.
Всяка функция, дефинирана в C, е по подразбиране достъпна в световен мащаб. Това може да стане чрез включване на заглавен файл, където е дефинирано изпълнението на функцията.
Като пример, ние искаме да декларираме стек тип данни, а също така, че реализацията и структурата на данните са скрити от потребителите.
Това може да стане, като първо се дефинира обществен файл, наречен stack.h, който ще съдържа общите данни с типа данни за стека и функциите, поддържани от типа данни за стека.
stack.h:
външен stack_var1;
extern int stack_do_something (void);
Сега можете да създадете файл, наречен stack.c, който съдържа реализацията на типа данни за стека:
Препратки
- CIO Wiki (2019). Модулно програмиране. Взета от: cio-wiki.org.
- Определения за ИТ (2020). Модулно програмиране. Взета от: defit.org.
- New Mexico Tech (2020). Модулно програмиране с функции. Взета от: ee.nmt.edu.
- Кристиан Майоли (2020). 3 творчески техники за писане на модулен код. Tech Beacon. Взета от: techbeacon.com.
- Geeks for Geeks (2020). Модулен подход в програмирането. Взета от: geeksforgeeks.org.
- Проучване (2020). Модулно програмиране: Определение и приложение в Java. Взета от: study.com.