- Moduły główne i pomocnicze
- Modułowe funkcje programowania
- Modułowość
- Definicja funkcji
- Zakres zmiennych
- To jest proceduralne
- Przykłady programowania modułowego
- Modułowość w prawdziwym życiu
- Funkcje w Javie
- Korzyść
- Niezależne programowanie projektów
- Efektywny rozwój programu
- Wielokrotne wykorzystanie modułów
- Łatwość debugowania i modyfikacji
- Niedogodności
- Struktura nadmiernie zorientowana obiektowo
- Moduły za małe
- Rozkładaj się bez powodu
- Aplikacje
- Język C.
- Bibliografia
Programowanie modułowe to technika wykorzystywana do rozwoju oprogramowania, gdzie program jest podzielony na wiele małych bloków lub autonomicznych elementów zwanych modułów, które są łatwe do opanowania, logiczny i funkcjonalny.
Moduł jest blokiem instrukcji rozwiązujących określony problem. Każdy moduł zawiera wszystko, co niezbędne do realizacji jego własnej funkcjonalności i może być edytowany lub modyfikowany bez wpływu na pozostałą część projektu.
Przykład rozwiązania problemu za pomocą modułów. Źródło: Kayau / CC BY (https://creativecommons.org/licenses/by/3.0)
Ten sposób programowania osiąga się poprzez utrzymywanie stałego interfejsu modułu, który jest używany przez inne komponenty oprogramowania w celu uzyskania dostępu do funkcji każdego modułu.
Moduły narzucają logiczne granice między komponentami, poprawiając łatwość konserwacji. Są one włączane za pośrednictwem interfejsów, które są zaprojektowane w taki sposób, aby zminimalizować zależność między różnymi modułami.
Moduły główne i pomocnicze
Moduł główny i kilka modułów drugorzędnych składają się na programowanie modułowe. Z modułu głównego wywoływane są funkcje modułów pomocniczych.
Te wtyczki istnieją jako oddzielne pliki wykonywalne, które są ładowane podczas działania modułu głównego. Każdy moduł ma unikalną nazwę przypisaną w instrukcji PROGRAM.
Zespoły robocze mogą oddzielnie opracowywać różne moduły bez konieczności znajomości wszystkich modułów systemu. Każda z aplikacji modułowych jest powiązana z numerem wersji, aby zapewnić programistom elastyczność w utrzymaniu modułu.
Modułowe funkcje programowania
Modułowość
Komputer nie potrzebuje rozbitej wersji kodu, aby go uruchomić. To ludzkie ograniczenia poznawcze zmuszają cię do pisania kodu w mniejszych fragmentach.
Program może zawierać inne funkcje, a także odnosić się do funkcji znajdujących się w innych plikach. Te funkcje lub moduły to zestawy instrukcji, które są używane do wykonywania operacji lub obliczania wartości.
Aby zachować prostotę i czytelność w dużych i złożonych programach, krótka funkcja główna jest używana w połączeniu z innymi funkcjami zamiast długiej funkcji głównej.
Dzieląc program na grupy modułów, każdy moduł będzie łatwiejszy do zrozumienia, dzięki czemu będzie zgodny z podstawowymi wytycznymi programowania strukturalnego.
Definicja funkcji
Funkcja składa się z deklaracji definicji, po której następują polecenia i instrukcje. Ogólna postać funkcji to:
Nazwa_funkcji (deklaracja parametru) {
zdania;
polecenia;
wyrażenie powrotu;
}
- Deklaracja parametrów reprezentuje informacje przekazywane do funkcji.
- Dodatkowe zmienne używane specjalnie przez funkcję są zdefiniowane w zdaniach.
- Wszystkie funkcje muszą zawierać instrukcję powrotu.
Zakres zmiennych
Zmienne zadeklarowane w funkcji głównej lub w funkcjach zdefiniowanych przez użytkownika nazywane są zmiennymi lokalnymi. Mają one wartość, gdy funkcja jest wykonywana, ale ich wartość nie jest zachowywana po zakończeniu funkcji.
Zmienne zadeklarowane jako zewnętrzne w stosunku do programu głównego lub funkcji zdefiniowanych przez użytkownika nazywane są zmiennymi globalnymi. Te zmienne można pobrać z dowolnej funkcji znajdującej się w programie.
To jest proceduralne
Programowanie modułowe jest dość proceduralne, ponieważ jest całkowicie zorientowane na pisanie kodu dla funkcji bez uwzględniania danych.
Przykłady programowania modułowego
Modułowość w prawdziwym życiu
Załóżmy, że dom ma elektryczność i kilka gniazdek na ścianach. Ten system umożliwia podłączenie różnych urządzeń elektrycznych, na przykład kuchenki mikrofalowej, pralki, suszarki itp.
Urządzenia te są zaprojektowane do wykonywania swoich określonych zadań po podłączeniu i włączeniu, niezależnie od tego, gdzie się znajdują.
Moduły aplikacji muszą być zgodne z tą samą filozofią. Oznacza to, że muszą wykonywać tylko swoje określone zadanie bez względu na to, w jakiej części aplikacji się znajdują, a nawet, z którą aplikacją są połączone.
Podobnie, jak urządzenie elektryczne można łatwo wyjąć z gniazdka, moduł musi być zaprojektowany w taki sposób, aby można go było łatwo usunąć z aplikacji.
Tak jak usunięcie urządzenia elektrycznego nie wpływa na funkcjonalność innych podłączonych urządzeń, usunięcie modułów z aplikacji nie powinno mieć wpływu na funkcjonalność innych modułów tej aplikacji.
Funkcje w Javie
W Javie moduły są zapisywane jako niezależne funkcje. Na przykład możesz mieć funkcję lub blok kodu do obliczania GPA ucznia na podstawie jego ocen ze wszystkich kursów, które ukończył.
Funkcja musi pobrać listę ocen jako dane wejściowe, a następnie zwrócić obliczoną średnią ocen:
Ta funkcja nazywa się CalculateA AverageNote. Otrzymuje jako dane wejściowe listę notatek, używając tablicy typu danych double, i zwraca obliczoną średnią.
W funkcji lokalna zmienna suma jest inicjalizowana na zero, a następnie za pomocą pętli for wszystkie kwalifikacje są dodawane do sumy. Na koniec otrzymana suma jest dzielona przez liczbę banknotów, zwracając wynikową wartość.
Gdyby macierz wejściowa miała nuty 3,5, 3,0 i 4,0, to po ich dodaniu miałaby sumę 10,5, a następnie byłaby podzielona przez 3, ponieważ są trzy nuty. Funkcja zwróciłaby wartość 3,5.
Korzyść
Niezależne programowanie projektów
Wielu programistów może pracować nad tym samym projektem, jeśli jest on podzielony na moduły. Różni programiści mogą niezależnie projektować różne moduły programu, co jest wymagane w przypadku dużego i złożonego programu.
Efektywny rozwój programu
Programy można opracowywać szybciej, ponieważ małe, samodzielne moduły są łatwiejsze do zrozumienia, projektowania i testowania niż duże programy.
Programista może zapewnić niezbędne dane wejściowe i zweryfikować poprawność modułu, sprawdzając jego dane wyjściowe.
Wielokrotne wykorzystanie modułów
Kod napisany dla jednego programu jest często przydatny w innych. Programowanie modułowe umożliwia zapisanie tych sekcji do wykorzystania w przyszłości. Ponieważ kod można przemieszczać, zapisane moduły można połączyć z dowolnym innym programem, który spełnia wymagania dotyczące wejścia i wyjścia.
W przypadku programowania monolitycznego takie sekcje kodu są osadzone w programie i nie są dostępne do użytku przez inne programy.
Łatwość debugowania i modyfikacji
Moduł jest mniejszy niż pełny program, więc łatwiej go przetestować. Każdy moduł można napisać i przetestować oddzielnie od reszty programu. Po przetestowaniu modułu można go użyć w nowym programie bez konieczności ponownego testowania.
Gdy program wymaga modyfikacji, programowanie modułowe upraszcza pracę. Nowe lub zdebugowane moduły można połączyć z istniejącym programem bez zmiany reszty programu.
Niedogodności
Struktura nadmiernie zorientowana obiektowo
To programowanie wykorzystuje interfejsy, co jest całkiem skutecznym pomysłem. Aby to wykorzystać, niektóre frameworki zawierają pełen zestaw wymiennych klas. Na przykład, aby obsłużyć trwałość, może istnieć wiele klas, które implementują interfejs trwałości.
Jednak zintegrowane środowiska programistyczne (IDE) są zdezorientowane. Na przykład możesz próbować znaleźć źródło metody, a IDE nie będzie wiedział, którą metodę chcesz zobaczyć, wyświetlając w ten sposób długą listę plików, w których istnieje metoda o tej nazwie.
Moduły za małe
Istnieje wiele modułów, które zawierają tylko bardzo małą funkcję. Każdy moduł oprócz nagłówka w kodzie wymaga dodatkowego czasu analizowania i przetwarzania.
Dlatego użycie wielu małych modułów zwiększy obciążenie systemu kompilacji, zwiększając rozmiar pakietu.
Rozkładaj się bez powodu
Niektóre kody prawie nigdy się nie zmieniają. W takich przypadkach może nie mieć większego sensu próba nadania mu bardziej przejrzystego wyglądu lub abstrakcyjnej logiki, jeśli samo użycie go działa dobrze.
Istnieją kody, które nie wyglądają zbyt ładnie, ale nie zmieniły się zbytnio w ostatnich latach. Nie ma powodu, aby dekomponować kod, który nigdy się nie zmienił i już dobrze działa na moduły.
Aplikacje
Programowanie modułowe to tylko koncepcja. Jego praktykę można zastosować w dowolnym języku programowania, zwłaszcza w tych o charakterze proceduralnym, które mają osobno skompilowany program.
Biblioteki komponentów zbudowane z oddzielnie skompilowanych modułów można łączyć w zestaw za pomocą narzędzia programistycznego zwanego konsolidatorem.
Nazwy funkcji w różnych modułach muszą być niepowtarzalne, aby ułatwić do nich dostęp w przypadku konieczności wyeksportowania funkcji używanych przez moduł główny.
Wśród języków programowania obsługujących koncepcję programowania modułowego są C, Ada, PL / I, Erlang, Pascal, Algol, COBOL, RPG, Haskell, Python, HyperTalk, IBM / 360 Assembler, MATLAB, Ruby, IBM RPG, SmallTalk, Morpho, Java (pakiety są uważane za moduły), Perl itp.
Język C.
Programowanie modułowe można zastosować w języku C, ponieważ umożliwia rozwiązanie dużej trudności poprzez podzielenie go na kilka modułów.
Każdy z tych modułów rozwiązuje konkretny problem, natomiast program główny, czyli zbiór takich procedur, rozwiązuje problem jako całość.
Każda funkcja zdefiniowana w C jest domyślnie dostępna globalnie. Można to zrobić, dołączając plik nagłówkowy, w którym zdefiniowana jest implementacja funkcji.
Jako przykład chcemy zadeklarować typ danych stosu, a także, że implementacja i struktura danych są ukryte przed użytkownikami.
Można to zrobić, definiując najpierw plik publiczny o nazwie stack.h, który będzie zawierał dane ogólne z typem danych stosu i funkcjami obsługiwanymi przez typ danych stosu.
stack.h:
extern stack_var1;
extern int stack_do_something (void);
Teraz możesz utworzyć plik o nazwie stack.c, który zawiera implementację typu danych stosu:
Bibliografia
- CIO Wiki (2019). Programowanie modułowe. Zaczerpnięte z: cio-wiki.org.
- Definicje IT (2020). Programowanie modułowe. Zaczerpnięte z: defit.org.
- Technologia New Mexico (2020). Programowanie modułowe z funkcjami. Zaczerpnięte z: ee.nmt.edu.
- Christian Maioli (2020). 3 kreatywne techniki pisania kodu modułowego. Tech Beacon. Zaczerpnięte z: techbeacon.com.
- Geeks for Geeks (2020). Podejście modułowe w programowaniu. Zaczerpnięte z: geeksforgeeks.org.
- Badanie (2020). Programowanie modułowe: definicja i zastosowanie w Javie. Zaczerpnięte z: study.com.