Detta uttalande är felaktigt. Kontrollkomponenter är absolut nödvändiga i både traditionell (procedur, strukturerad) programvara och objektorienterad programvara. Hur de implementeras och konceptualiseras kan skilja sig, men deras grundläggande roll förblir densamma:hantera flödet av exekvering och samordnande interaktioner mellan olika delar av systemet.
Här är en uppdelning:
Traditionell (procedur/strukturerad) programvara:
* Explicit kontrollstrukturer: Kontrollkomponenter är ofta mycket uttryckliga vid procedurprogrammering. Saker som "if-annars" uttalanden, "för" och "medan" slingor, "goto" -uttalanden (även om de är avskräckta), och funktionssamtal dikterar direkt utförandeflödet. Programmeraren styr direkt operationssekvensen.
* Globala variabler och delade data: Kontroll utövas ofta genom att manipulera globala variabler eller delade datastrukturer. En del av programmet kan ändra en global variabel och utlösa en förändring i beteendet hos en annan del. Detta kan leda till komplexitet och svårigheter att hantera kontrollflödet.
* subroutines/funktioner: Funktioner fungerar som kontrollkomponenter genom att kapsla in en specifik uppgift och kontrollera exekveringen inom den uppgiften. Det totala flödet förblir emellertid till stor del dikterat av huvudprogramstrukturen.
Objektorienterad programvara:
* Implicit kontroll genom objektinteraktioner: Kontrollflödet i objektorienterad programvara är ofta mindre uttrycklig och definieras mer implicit genom interaktioner mellan objekt. Objekt skickar meddelanden till varandra och utlöser metoder (funktioner inom objekt). Sekvensen för dessa interaktioner bestämmer det totala programflödet.
* Eventdriven programmering: Många objektorienterade system använder händelsedrivna arkitekturer. Händelser (som användarklick, nätverksmeddelanden, timerutgångar) utlöser åtgärder i objekt. Kontrollflödet drivs av dessa externa händelser snarare än en linjär sekvens som dikteras av programmeraren.
* Designmönster: Objektorienterade designmönster, såsom tillstånd, strategi och kommandomönster, ger strukturerade sätt att hantera och kontrollera flödet av exekvering i ett system. Dessa fungerar som kontrollmekanismer på högre nivå.
* Samtidighet och multithreading: Objektorienterade system utnyttjar ofta trådar eller processer, vilket kräver mekanismer (som mutexer, semaforer) för att kontrollera samtidig åtkomst till delade resurser och hantera synkronisering, som är avgörande kontrollkomponenter.
Den viktigaste skillnaden:
Skillnaden är inte *frånvaron *av kontrollkomponenter, utan snarare *abstraktionsnivån *och hur kontroll är *distribuerad *. Vid procedurprogrammering är kontrollen ofta centraliserad och uttrycklig. Vid objektorienterad programmering är kontrollen mer decentraliserad och implicit, fördelad mellan interagerande objekt. Behovet av mekanismer för att hantera ordningen och interaktioner förblir emellertid grundläggande.
Sammanfattningsvis kräver båda paradigmer mekanismer för att kontrollera utförandeflödet. Objektorienterad programmering förskjuter helt enkelt fokus från uttryckliga, centraliserade kontrollstrukturer till implicit, distribuerad kontroll genom objektinteraktioner och händelsehantering. Det underliggande behovet av att hantera programflöde förblir dock konstant.