模塊化編程
A. c語言中是如何實現模塊化的
c語言是模塊化編程的工具,模塊如何組織,模塊之間如何交互應該是個大問題。我覺得有以下幾個值得注意的地方(不對的地方請大家指正):
1、每個源文件就是一個獨立的模塊,它應該能夠在不連接任何其它模塊、不需要其它源文件的情況下獨立編譯。
2、模塊之間是通過函數、常量、變數、結構定義、宏(似乎也是常量的一種)進行交互的
3、每個模塊應該包括導入和導出兩個部分,比如要調用另外一個模塊的函數foo(),需要
extern int foo();
這應該屬於模塊的導入部分
而由該模塊提供的函數,應該在相應的頭文件中聲明,作為模塊的導出部分。
模塊的導出部分應該放在該模塊的頭文件中。
4、如果只在本模塊使用的變數,在本模塊中定義成static的就可以了;否則就是全局變數,全局變數在頭文件中聲明一下,同時也作為模塊的導出部分。
5、宏既可以定義在頭文件中,也可以定義在源文件中。如果宏只是模塊中用到,相當於局部常量,放到源文件中好了;如果其它模塊也要用到,那麼把它放到頭文件中去。
6、結構定義似乎都放在頭文件中。是不是應該另外有一個頭文件,專門用來定義結構???
首先,我不知道自己的想法是否正確;其次,關於到底應該怎麼樣組織文件,我想應該也是有個標準的,可惜我沒找到這樣的資料。希望有高人能站出來指點一下,謝謝
B. java 模塊化編程
你好,我來為你解答:
常見的十四種Java開發工具的特點
1、JDK(JavaDevelopmentKit)Java開發工具集
從初學者角度來看,採用JDK開發Java程序能夠很快理解程序中各部分代碼之間的關系,有利於理解Java面向對象的設計思想。JDK的另一個顯著特點是隨著Java(J2EE、J2SE以及J2ME)版本的升級而升級。但它的缺點也是非常明顯的就是從事大規模企業級Java應用開發非常困難,不能進行復雜的Java軟體開發,也不利於團體協同開發。
2、JavaWorkshop
3、NetBeans與SunJavaStudio5
NetBeans是開放源碼的Java集成開發環境(IDE),適用於各種客戶機和Web應用。
SunJavaStudio是Sun公司最新發布的商用全功能JavaIDE,支持Solaris、Linux和Windows平台,適於創建和部署2層JavaWeb應用和n層J2EE應用的企業開發人員使用。NetBeans是業界第一款支持創新型Java開發的開放源碼IDE。開發人員可以利用業界強大的開發工具來構建桌面、Web或移動應用。同時,通過NetBeans和開放的API的模塊化結構,第三方能夠非常輕松地擴展或集成NetBeans平台。NetBeans3.5.1主要針對一般Java軟體的開發者,而JavaOneStudio5則主要針對企業做網路服務等應用的開發者。Sun不久還將推出ProjectRave,其目標是幫助企業的開發者進行軟體開發。NetBeans3.5.1版本與其他開發工具相比,最大區別在於不僅能夠開發各種台式機上的應用,而且可以用來開發網路服務方面的應用,可以開發基於J2ME的移動設備上的應用等。在NetBeans3.5.1基礎上,Sun開發出了JavaOneStudio5,為用戶提供了一個更加先進的企業編程環境。在新的JavaOneStudio5里有一個應用框架,開發者可以利用這些模塊快速開發自己在網路服務方面的各種應用程序。
4、Borland的JBuilder
Jbuilder進入了Java集成開發環境的王國,它滿足很多方面的應用,尤其是對於伺服器方以及EJB開發者們來說。下面簡單介紹一下Jbuilder的特點:
1)Jbuilder支持最新的Java技術,包括Applets、JSP/Servlets、JavaBean以及EJB(EnterpriseJavaBeans)的應用。
2)用戶可以自動地生成基於後端資料庫表的EJBJava類,Jbuilder同時還簡化了EJB的自動部署功能.此外它還支持CORBA,相應的向導程序有助於用戶全面地管理IDL(分布應用程序所必需的介面定義語言InterfaceDefinitionLanguage)和控制遠程對象。
3)Jbuilder支持各種應用伺服器。Jbuilder與InpriseApplicationServer緊密集成,同時支持WebLogicServer,支持EJB1.1和EJB2.0,可以快速開發J2EE的電子商務應用。
4)Jbuilder能用Servlet和JSP開發和調試動態Web應用。
5)利用Jbuilder可創建(沒有專有代碼和標記)純Java2應用。由於Jbuilder是用純Java語言編寫的,其代碼不含任何專屬代碼和標記,它支持最新的Java標准。
6)Jbuilder擁有專業化的圖形調試介面,支持遠程調試和多線程調試,調試器支持各種JDK版本,包括J2ME/J2SE/J2EE。JBuilder環境開發程序方便,它是純的Java開發環境,適合企業的J2EE開發;缺點是往往一開始人們難於把握整個程序各部分之間的關系,對機器的硬體要求較高,比較吃內存,這時運行速度顯得較慢。
5、Oracle的JDeveloper
Oracle9iJDeveloper(定為9.0版,最新為10g)為構建具有J2EE功能,XML和Webservices的復雜的,多層的Java應用程序提供了一個完全集成的開發環境。它為運用Oracle9i資料庫和應用伺服器的開發人員提供特殊的功能和增強性能,除此以外,它也有資格成為用於多種用途Java開發的一個強大的工具。
Oracle9iJDeveloper的主要特點如下:
①具有UML(UnifiedModelingLanguage,一體化建模語言)建模功能。可以將業務對象及e-business應用模型化。
②配備有高速Java調試器(Debuger)、內置Profiling工具、提高代碼質量的工具「CodeCoach」等。
③支持SOAP(SimpleObjectAccessProtocol)「簡單對象訪問協議」、UDDI(UniversalDescription,DiscoveryandIntegration)「統一描述、發現和集成協議」
、WSDL()「WEB服務描述語言」等Web服務標准。JDeveloper不僅僅是很好的Java編程工具,而且是OracleWeb服務的延伸,支持ApacheSOAP,以及9iAS,可擴充的環境和XML和WSDL語言緊密相關。Oracle9iJdeveloper完全利用Java編寫,能夠與以前的Oracle伺服器軟體以及其他廠商支持J2EE的應用伺服器產品相兼容,而且在設計時著重針對Oracle9i,能夠無縫化跨平台之間的應用開發,提供了業界第一個完整的、集成了J2EE和XML的開發環境,允許開發者快速開發可以通過Web、無線設備及語音界面訪問的Web服務和交易應用,以往只能通過將傳統Java編程技巧與最新模塊化方式結合到一個單一集成的開發環境中之後才能完成J2EE應用開發生命周期管理的事實,從根本上得到改變。缺點就是對於初學者來說,較復雜,也比較難。
6、IBM的VisualAgeforJava
VisualAgeforJava是一個非常成熟的開發工具,它的特性以於IT開發者和業余的Java編程人員來說都是非常用有用的。它提供對可視化編程的廣泛支持,支持利用CICS連接遺傳大型機應用,支持EJB的開發應用,支持與Websphere的集成開發,方便的bean創建和良好的快速應用開發(RAD)支持和無文件式的文件處理。
IBM為建設Web站點所推出的及其包含的Visual
AgeforJavaProfessionalEdition軟體已全面轉向以Java為中心,這樣,Java開發人員對WebSphere全套工具的感覺或許會好了許多。Studio所提供的工具有:Web站點管理、快速開發JDBC頁向導程序、HTML編輯器和HTML語法檢查等。這確實是個不錯的HTML站點頁面編輯環境。Studio和VisualAge集成度很高,菜單中提供了在兩種軟體包之間快速移動代碼的選項。這就讓使用Studio的Web頁面設計人員和使用VisualAge的Java程序員
可以相互交換文件、協同工作。VisualAgeforJava支持團隊開發,內置的代碼庫可以自動地根據用戶做出改動而修改程序代碼,這樣就可以很方便地將目前代碼和早期版本做出比較。與VisualAge緊密結合的WebsphereStudio本身並不提供源代碼和版本管理的支持,它只是包含了一個內置文件鎖定系統,當編輯項目的時候可以防止其他人對這些文件的錯誤修改,軟體還支持諸如MicrosoftVisualSourceSafe這樣的第三方源代碼控制系統。VisualAgeforJava完全面向對象的程序設計思想使得開發程序非常快速、高效。你可以不編寫任何代碼就可以設計出一個典型的應用程序框架。VisualAgeforJava作為IBM電子商務解決方案其中產品之一,可以無縫地與其他IBM產品,如WebSphere、DB2融合,迅速完成從設計、開發到部署應用的整個過程。VisualAgeforJava獨特的管理文件方式使其集成外部工具非常困難,你無法讓VisualAgeforJava與其他工具一起聯合開發應用。
7、BEA的WebLogicWorkshop
BEAWebLogicWorkshop是一個統一、簡化、可擴展的開發環境,使所有的開發人員都能在BEAWebLogicEnterprisePlatform之上構建基於標準的企業級應用,從而提高了開發部門的生產力水平,加快了價值的實現。WebLogicWorkshop除了提供便捷的Web服務之外,它能夠用於創建更多種類的應用。作為整個BEAWebLogicPlatform的開發環境。不管是創建門戶應用、編寫工作流、還是創建Web應用,Workshop8.1都可以幫助開發人員更快更好地完成。WebLogicWorkshop的主要特點如下:
①使J2EE開發切實可行,提高開發效率
BEAWebLogicWorkshop使開發人員遠離J2EE內在的復雜性,集中精力專注業務邏輯,無須操心單調乏味的基礎結構代碼。這種創新意味著,已被企業驗證的J2EE的強大功能,最終被大多數不熟悉Java和J2EE的應用開發人員所掌握,從而使IT部門的工作效率提高一個數量級。可視化設計器以及直觀的概念,如事件、屬性和控制項等,實現了基於事件的開發。Workshop簡化的程序設計模型,使開發人員不必掌握復雜的J2EEAPI和面向對象的程序設計原理。所有開發人員,包括J2EE專家和具有可視化和過程化語言技能的應用開發人員在內,都可以共同工作在BEAWebLogicEnterprisePlatform之上。Workshop的可視化開發環境,創建帶有代碼注釋的標准Java文件,用來說明由運行時框架實施的企業級需求。J2EE和其他高級開發人員,藉助功能強大的代碼編輯功能,可以訪問Java源代碼,從而彌補了可視化設計器的不足。
②構建企業級應用
通過在可伸縮、安全可靠的企業級架構上實施各種應用,BEAWebLogicWorkshop大大降低了開發風險。而且,所有應用的創建都使用標準的J2EE組件,既保護了您的技術投資,又保持了最大的靈活性。BEAWebLogicWorkshop運行框架,是統一整個架構的匯聚層,使單一、簡化的程序設計模型擴展到所有的BEAWebLogicEnterprisePlatform應用類型。通過解釋設計時創建的注釋代碼,運行時框架可以實現必要的J2EE組件,並且提取出與J2EE應用開發有關的所有底層細節。
③降低IT復雜性BEAWebLogicWorkshop提供各種Java控制項,使得與IT資源的連接更輕而易舉。另外,在構建任何BEAWebLogicPlatform的應用中,Java控制項不僅可擴展而且完全相同。這種強大、有效的方法能夠:降低IT技術的復雜性,優化信息的可用性,推動包含"最佳業務方案"的可重用服務的開發,使開發人員能以更低的成本、更短的時間實現更大的產出。
利用BEAWebLogicWorkshop,任何開發人員都能以最大的生產效率,構建各種Web服務、Web應用、門戶和集成項目。BEAWebLogicWorkshop是BEA的產品戰略核心,它幫助客戶接觸和利用面向服務架構(SOA)的強大功能。BEAWeblogicWorkshop8.1極大簡化了當前實際企業集成環境中企業級應用和服務的構建,並成為全面支持關鍵企業級應用(如非同步、真正松耦合和粗粒度消息傳送等)的自然選擇。它的缺點就是過於復雜,對於初學者來說,理解起來較為困難。
8、WebGain的VisualCafeforJavaVisualCafe是只能在Symantec公司的Java虛擬機、Netscape公司的Java虛擬機和Microsoft虛擬機上工作的調試器。這對於開發者來講是一個重要的特性,因為用戶開發的Java代碼中的許多軟體bug就可能中會在某種特定的虛擬機上起作用。在修改後進行編譯基繼續進行調試時,VisualCafe會自動將文件存檔,使用VisualCafe創建的原生應用具有許多特點。除了明顯的速度提高之外,Symantec使類庫的二進制方式比正常的JDK小VisualCafe為所指定的關系自動生成或更新必要的Java代碼。利用VisualCafe,用戶可以從一個標准對象資料庫中集合完整的Java應用程序和Applet,而不必再編寫源代碼。VisualCafe還提供了一個擴充的源代碼開發工具集。VisualCafe綜合了Java軟體的可視化源程序開發工具,它允許開發人員在可視化視圖和源視圖之間進行有效地轉換。在可視化視圖中進行的修改立即反映在源代碼中。對源代碼的改變自動更新可視化視圖。VisualCafe具有許多源文件方面的特性,如全局檢索和替換。絕大多數Java開發工具的文獻的問題在於簡單地挨個介紹開發工具的每部分組件,但用戶在開應用時還需要一個面向任務的手冊,利用這個手冊你可以不必知道工具每一部分的特定功能就可以開始創建自己的應用。VisualCafe提供了非常全面的用戶指南,它對最開始的安裝到創建第一個Java應用和Applet都提供了全面的幫助,VisualCafe將自動生成所指明關系的必要Java代碼。VisualCafe可以在Windows95和WindowsNT平台下運行,Symantec公司為Java開發工作提供一個在Macintosh操作系統下可以運行的RAD工具。VisualCafe編譯器速度很快,在國際化支持方面比較突出;缺點就是對於初學者來說,較復雜,也比較難。
9、Macromedia的JRUN
Macromedia公司的JRun是一個具有最廣闊適用性的Java引擎,用於開發及實施由JavaServlets和JavaServerPages編寫的伺服器端Java應用。JRun是第一個完全支持JSP1.0規格書的商業化產品,全球有超過80,000名開發人員使用JRun在他們已有的Web伺服器上添加伺服器端Java的功能。其中Web伺服器包括了MicrosoftIIS,NetscapeEnterpriseServer,Apache等。JRun是開發實施伺服器端Java的先進引擎。如果我們希望在我們的Web應用中添加伺服器端Java功能,那麼JRun將成為我們的正確選擇。JRun目前有3個版本,它是第一個支持JavaServerPages(JSP)規格書1.0的商業化產品。JSP是一種強大的伺服器端技術,它是用於創建復雜Web應用的一整套快速應用開發系統。JRun可以使我們開始開發並測試Java應用。它最多接受5個並發的連接並且包括全部JavaServletAPI,支持JavaServerPages(JSP),支持所有主要的Webservers和計算機平台。JRunPro能夠在生產環境下承受大訪問量的負載,幫助我們實施應用、服務或Web站點(包括內聯網)。JRunPro支持無限量並發式連接運行多個Java虛擬機,包括多個並發的Java虛擬機(JVM)。提供一個遠程管理applet以及一個遠程可再分布式的管理applet。JRunProUnlimited包括了所有JRunPro的功能,除次以外,還可以運行無限量的,並發的JVM。JRun依靠其內置的JRunWebServer可以單獨運行。使用伺服器端Java,用戶可以開發出復雜的商業應用系統。最重要的一點是,由於servlets的平台獨立性,以及更加簡單的開發、更快速的實施、更經濟的維護成本,它是CGI(CommonGatewayInterface)或Perlscripts的極佳的替代產品。缺點就是對於初學者來說,較復雜,也比較難。10、JCreator
JCreator是一個Java程序開發工具,也是一個Java集成開發環境(IDE)。無論你是要開發Java應用程序或者網頁上的Applet元件都難不倒它。在功能上與Sun公司所公布的JDK等文字模式開發工具相較之下來得容易,還允許使用者自訂義操作窗口界面及無限Undo/Redo等功能。JCreator為用戶提供了相當強大的功能,例如項目管理功能,項目模板功能,可個性化設置語法高亮屬性、行數、類瀏覽器、標簽文檔、多功能編繹器,向導功能以及完全可自定義的用戶界面。通過JCreator,我們不用激活主文檔而直接編繹或運行我們的JAVA程序。JCreator能自動找到包含主函數的文件或包含Applet的Html文件,然後它會運行適當的工具。在JCreator中,我們可以通過一個批處理同時編繹多個項目。JCreator的設計接近Windows界面風格,用戶對它的界面比較熟悉。其最大特點是與我們機器中所裝的JDK完美結合,是其它任何一款IDE所不能比擬的。它是一種初學者很容易上手的java開發工具,缺點是只能進行簡單的程序開發,不能進行企業J2EE的開發應用。
11、MicrosoftVJ++
VisualJ++是Microsoft公司推出的可視化的Java語言集成開發環境(IDE),為Java編程人員提供了一個新的開發環境,是一個相當出色的開發工具。無論集成性、編譯速度、調試功能、還是易學易用性,都體現了Microsoft的一慣風格。VisualJ++具有
下面的特點:
1)VisualJ++把Java虛擬機(JVM)作為獨立的操作系統組件放入Windows,使之從瀏覽器中獨立出來。
2)Microsoft的應用基本類庫(AFC,)對SUN公司的JDK作了擴展,使應用基本類庫更加適合在Windows下使用。
3)VisualJ++的調試器支持動態調試,包括單步執行、設置斷點、觀察變數數值等。
4)VisualJ++提供了一些程序向導(Wizards)和生成器(Builders),它們可以方便地幫助用戶快速地生成Java程序,幫助你在自己的工程中創建和修改文件。
5)VisualJ++界面友好,其代碼編輯器具有智能感知、聯機編譯等功能,使程序編寫十分方便。VisualJ++中建立了Java的WFC,這一新的應用程序框架能夠直接訪問Windows應用程序介面(API),使你能夠用Java語言編寫完全意義上的Windows應用程序。
6)VisualJ++中表單設計器的快速應用開發特性使用WFC創建基於表單的應用程序變得輕松、簡單。通過WFC可以方便地使用ActiveX數據對象(ADO,ActiveXDataObjects)來檢索數據和執行簡單數據的綁定。通過在表單設計器中使用ActiveX數據對象,可以快速地在表單中訪問和顯示數據。VisualJ++能結合微軟的一貫的編程風格,很方便進行Java的應用開發,但它的移植性較差,不是純的Java開發環境。
12、Eclipse
Eclipse是一種可擴展的開放源代碼IDE。2001年11月,IBM公司捐出價值4,000萬美元的源代碼組建了Eclipse聯盟,並由該聯盟負責這種工具的後續開發。集成開發環境(IDE)經常將其應用范圍限定在「開發、構建和調試」的周期之中。為了幫助集成開發環境(IDE)克服目前的局限性,業界廠商合作創建了Eclipse平台。Eclipse允許在同一IDE中集成來自不同供應商的工具,並實現了工具之間的互操作性,從而顯著改變了項目工作流程,使開發者可以專注在實際的嵌入式目標上。Eclipse框架的這種靈活性來源於其擴展點。它們是在XML中定義的已知介面,並充當插件的耦合點。擴展點的范圍包括從用在常規表述過濾器中的簡單字元串,到一個Java類的描述。任何Eclipse插件定義的擴展點都能夠被其它插件使用,反之,任何Eclipse插件也可以遵從其它插件定義的擴展點。除了解由擴展點定義的介面外,插件不知道它們通過擴展點提供的服務將如何被使用。利用Eclipse,我們可以將高級設計(也許是採用UML)與低級開發工具(如應用調試器等)結合在一起。如果這些互相補充的獨立工具採用Eclipse擴展點彼此連接,那麼當我們用調試器逐一檢查應用時,UML對話框可以突出顯示我們正在關注的器件。事實上,由於Eclipse並不了解開發語言,所以無論Java語言調試器、C/C++調試器還是匯編調試器都是有效的,並可以在相同的框架內同時瞄準不同的進程或節點。Eclipse的最大特點是它能接受由Java開發者自己編寫的開放源代碼插件,這類似於微軟公司的VisualStudio和Sun微系統公司的NetBeans平台。Eclipse為工具開發商提供了更好的靈活性,使他們能更好地控制自己的軟體技術。Eclipse聯盟已經宣布將在2004年中期發布其3.0版軟體。這是一款非常受歡迎的java開發工具,這國內的用戶越來越多,實際上實用它java開發人員是最多的。缺點就是較復雜,對初學者來說,理解起來比較困難。
13、Ant
AnotherNeatTool(Ant)是一種基於Java的build工具。理論上來說,它有些類似於(Unix)C中的make,但沒有make的缺陷。因為Ant的原作者在多種(硬體)平台上開發軟體時,無法忍受這些工具的限制和不便。類似於make的工具本質上是基於shell(語言)的:他們計算依賴關系,然後執行命令(這些命令與你在命令行敲的命令沒太大區別)。這就意味著你可以很容易地通過使用OS特有的或編寫新的(命令)程序擴展該工具;然而,這也意味著你將自己限制在了特定的OS,或特定的OS類型上,如Unix。Ant就不同了。與基於shell命令的擴展模式不同,Ant用Java的類來擴展。(用戶)不必編寫shell命令,配置文件是基於XML的,通過調用target樹,就可執行各種task。每個task由實現了一個實現了特定Task介面的對象來運行。Ant支持一些可選task,一個可選task一般需要額外的庫才能工作。可選task與Ant的內置task分開,單獨打包。這個可選包可以從你下載Ant的同一個地方下載。ANT本身就是這樣一個流程腳本引擎,用於自動化調用程序完成項目的編譯,打包,測試等。除了基於JAVA是平台無關的外,腳本的格式是基於XML的,比make腳本來說還要好維護一些。Ant是Apache提供給Java開發人員的構建工具,它可以在WindowsOS和UnixOS下運行,它不僅開放源碼並且還是一個非常好用的工具。Ant是ApacheJakarta中一個很好用的Java開發工具,Ant配置文件採用XML文檔編寫,所以Java程序員對其語法相當熟悉,Ant是專用於Java項目平台,能夠用純Java來開發,它能夠運行於Java安裝的平台,即體現了它的跨平台功能。它的缺點顯示執行結果只能是DOS字元界面,不能進行復雜的java程序開發。
14、IntelliJ
IntellijIDEA是一款綜合的Java編程環境,被許多開發人員和行業專家譽為市場上最好的IDE。它提供了一系列最實用的的工具組合:智能編碼輔助和自動控制,支持J2EE,Ant,JUnit和CVS集成,非平行的編碼檢查和創新的GUI設計器。IDEA把Java開發人員從一些耗時的常規工作中解放出來,顯著地提高了開發效率。具有運行更快速,生成更好的代碼;持續的重新設計和日常編碼變得更加簡易,與其它工具的完美集成;很高的性價比等特點。在4.0版本中支持Generics,BEAWebLogic集成,改良的CVS集成以及GUI設計器。
IntelliJIDEA能盡可能地促進程序員的編程速度。它包括了很多輔助的功能,並且與Java結合得相當好。不同的工具窗口圍繞在主編程窗口周圍,當滑鼠點到時即可打開,無用時也可輕松關閉,使用戶得到了最大化的有效屏幕范圍。以技術為導向的IDEA集成了調試器,支持本地和遠程的調試,即使我們需要修改一些設置上的東西使我們的工作順利進展。另外,它還提供了通常的監視,分步調試以及手動設置斷點功能,在這種斷點模式下,我們可以自動地在斷點之外設置現場訪問,甚至可以瀏覽不同的變數的值。IDE支持多重的JVM設置,幾個編譯程序和Ant建造系統,並且,它使得設置多重的自定義的類途徑變得簡單。IntelliJIdea是一個相對較新的JavaIDE。它是Java開發環境中最為有用的一個。高度優化的IntelleJIdea使普通任務變得相當容易,Idea支持很多整合功能,更重要的使它們設計的好容易使用。Idea支持XML中的代碼實現,Idea同時還會校正XML,Idea支持JSP的結構。作用於普通Java代碼的眾多功能同樣適用於JSP(比如整合功能),同時支持JSP調試;支持EJB,盡管它不包括對個別應用伺服器的特殊支持。Idea支持Ant建立工具,不僅是運行目標它還支持編譯與運行程序前後運行目標,另外也支持綁定鍵盤快捷鍵。在編輯一個Ant建立XML文件時,Idea還對組成Ant工程的XML部分提供支持。IntelliJIDEA被稱為是最好的JAVAIDE開發平台,這套軟體就是以其聰明的即時分析和方便的refactoring功能深獲大家所喜愛。缺點是較復雜,對初學者來說,理解起來比較困難。
小結
現在常用的Java項目開發環境有:JBuilder、VisualAgeforJava、ForteforJava,VisualCafe、Eclipse、NetBeansIDE、JCreator+J2SDK、jdk+記事本、EditPlus+J2SDK等等。一般開發J2EE項目時都需要安裝各公司的應用伺服器(中間件)和相應的開發工具,在使用這些開發工具之前,我們最好能熟知這些軟體的優點和缺點,以便根據實際情況選擇應用。編程工具只是工具,為了方便人們工作而開發的,各有特點,因此,選工具主要的依據自己將要從事的領域是什麼,而不是盲目的認為那種工具好,那種工具不好。最後希望大家都能找到自己合適的java開發工具
C. c語言模塊化程序設計
1.模塊化編程是指將一個龐大的程序劃分為若干個功能獨立的模塊,對各個模塊進行獨立開發,然後再將這些模塊統一合並為一個完整的程序。這是C語言面向過程的編程方法,可以縮短開發周期,提高程序的可讀性和可維護性。
2.在單片機程序里,程序比較小或者功能比較簡單的時候,我們不需要採用模塊化編程,但是,當程序功能復雜、涉及的資源較多的時候,模塊化編程就能體現它的優越性了。如前面我們寫過的HT1380驅動程序、獨立按鍵掃描程序和12864程序,每一個程序都是只用一個源文件編寫就能完成,但是,當您製作一個12864液晶日歷的時候,需要用到HT1380驅動程序、獨立按鍵掃描程序和12864顯示程序,如果把這三個程序全部集中在一個源文件里,將導致主體程序臃腫且雜亂,這樣做並非不可取,只是降低了程序可讀性、可維護性和代碼的重用率。如果把這三個程序當做三個獨立的模塊放到你的主體工程進行模塊化編程,效果就不一樣了。實際上,模塊化編程就是模塊合並的過程,就是建立每個模塊的頭文件和源文件並將其加入到主體程序的過程。主體程序調用模塊的函數是通過包含模塊的頭文件來實現,模塊的頭文件和源文件是模塊密不可分的兩個部分,缺一不可。所以,模塊化編程必須提供每個模塊的頭文件和源文件。
D. plc編程的怎樣實現模塊化
可編程式控制制器(Programmable Controller)是計算機家族中的一員,是為工業控制應用而設計製造的。早期的可編程式控制制器稱作可編程邏輯控制器(Programmable Logic Controller), 簡稱PLC,它主要用來代替繼電器實現邏輯控制隨著技術的發展這種裝置的功能已經大大超過了邏輯控制的范圍,因此,今天這種裝置稱作可編程式控制制器,簡稱PC。但是為了避免與個人計算機(Personal Computer)的簡稱混淆,所以將可編程式控制制器簡稱PLC。
一、PLC 的由來
在60 年代,汽車生產流水線的自動控制系統基本上都是由繼電器控制裝置構成的。當時汽車的每一次改型都直接導致繼電器控制裝置的重新設計和安裝。隨著生產的發展,汽車型號更新的周期愈來愈短,這樣,繼電器控制裝置就需要經常地重新設計和安裝,十分費時,費工,費料,甚至阻礙了更新周期的縮短。為了改變這一現狀,美國通用汽車公司在1969 年公開招標,要求用新的控制裝置取代繼電器控制裝置,並提出了十項招標指標,即:
1.編程方便現場可修改程序;
2.維修方便採用模塊化結構;
3.可靠性高於繼電器控制裝置;
4.體積小於繼電器控制裝置;
5.數據可直接送入管理計算機;
6.成本可與繼電器控制裝置競爭;
7. 輸入可以是交流115V;
8.輸出為交流115V 2A 以上能直接驅動電磁閥接觸器等;
9.在擴展時原系統只要很小變更;
10.用戶程序存儲器容量至少能擴展到4K。
1969 年,美國數字設備公司(DEC) 研製出第一台PLC,在美國通用汽車自動裝配線上試用,獲得了成功。這種新型的工業控制裝置以其簡單易懂,操作方便,可靠性高,通用靈活,體積小,使用壽命長等一系列優點,很快地在美國其他工業領域推廣應用。到1971 年,已經成功地應用於食品飲料冶金造紙等工業。
這一新型工業控制裝置的出現,也受到了世界其他國家的高度重視。1971 日本從美國引進了這項新技術,很快研製出了日本第一台PLC。1973年,西歐國家也研製出它們的第一台PLC。我國從1974 年開始研製,於1977年開始工業應用。
二、PLC 的定義
PLC 問世以來,盡管時間不長,但發展迅速。為了使其生產和發展標准化,美國電氣製造商協會NEMA(National Electrical Manufactory Association) 經過四年的調查工作,於1984 年首先將其正式命名為PC(Programmable Controller),並給PC 作了如下定義
「PC 是一個數字式的電子裝置,它使用了可編程序的記憶體儲存指令。用來執行諸如邏輯,順序,計時,計數與演算等功能,並通過數字或類似的輸入/輸出模塊,以控制各種機械或工作程序。一部數字電子計算機若是從事執行PC 之功能著,亦被視為PC,但不包括鼓式或類似的機械式順序控制器。」
以後國際電工委員會(IEC)又先後頒布了PLC 標準的草案第一稿,第二稿,並在1987 年2 月通過了對它的定義:
「可編程式控制制器是一種數字運算操作的電子系統,專為在工業環境應用而設計的。它採用一類可編程的存儲器,用於其內部存儲程序,執行邏輯運算,順序控制,定時,計數與算術操作等面向用戶的指令,並通過數字或模擬式輸入/輸出控制各種類型的機械或生產過程。可編程式控制制器及其有關外部設備,都按易於與工業控制系統聯成一個整體,易於擴充其功能的原則設計。」
總之,可編程式控制制器是一台計算機,它是專為工業環境應用而設計製造的計算機。它具有豐富的輸入/輸出介面,並且具有較強的驅動能力。但可編程式控制制器產品並不針對某一具體工業應用,在實際應用時,其硬體需根據實際需要進行選用配置,其軟體需根據控制要求進行設計編制。
三、PLC 的特點
1. PLC 的主要特點
(1)高可靠性
1)所有的I/O 介面電路均採用光電隔離,使工業現場的外電路與PLC 內部電路之間電氣上隔離。
2)各輸入端均採用R-C濾波器,其濾波時間常數一般為10~20ms。
3)各模塊均採用屏蔽措施,以防止輻射干擾。
4)採用性能優良的開關電源。
5)對採用的器件進行嚴格的篩選。
6)良好的自診斷功能,一旦電源或其他軟、硬體發生異常情況,CPU立即採用有效措施,以防止故障擴大。
7)大型PLC 還可以採用由雙CPU 構成冗餘系統或有三CPU 構成表決系統,使可靠性更進一步提高。
(2)豐富的I/O 介面模塊
PLC針對不同的工業現場信號,如:
• 交流或直流;
• 開關量或模擬量;
• 電壓或電流;
• 脈沖或電位;
• 強電或弱電等。
有相應的I/O 模塊與工業現場的器件或設備,如:
• 按鈕
• 行程開關
• 接近開關
• 感測器及變送器
• 電磁線圈
• 控制閥
直接連接另外為了提高操作性能,它還有多種人-機對話的介面模塊;為了組成工業局部網路,它還有多種通訊聯網的介面模塊,等等。
(3)採用模塊化結構
為了適應各種工業控制需要除了單元式的小型PLC 以外絕大多數PLC 均
採用模塊化結構PLC 的各個部件包括CPU 電源I/O 等均採用模塊化設計由
機架及電纜將各模塊連接起來系統的規模和功能可根據用戶的需要自行組合
(4)編程簡單易學
PLC的編程大多採用類似於繼電器控制線路的梯形圖形式對使用者來說
不需要具備計算機的專門知識因此很容易被一般工程技術人員所理解和掌握
(5)安裝簡單維修方便
PLC不需要專門的機房可以在各種工業環境下直接運行使用時只需將現
場的各種設備與PLC 相應的I/O 端相連接即可投入運行各種模塊上均有運行和
故障指示裝置便於用戶了解運行情況和查找故障
由於採用模塊化結構因此一旦某模塊發生故障用戶可以通過更換模塊的
方法使系統迅速恢復運行
2.PLC 的功能
(1) 邏輯控制
(2) 定時控制
(3) 計數控制
(4) 步進(順序)控制
(5) PID 控制
(6) 數據控制
PLC 具有數據處理能力
(七) 通信和聯網
(八) 其它
PLC還有許多特殊功能模塊,適用於各種特殊控制的要求,如:定位控制模塊,CRT 模塊。
四、PLC 的發展階段
雖然PLC 問世時間不長,但是隨著微處理器的出現,大規模、超大規模集成電路技術的迅速發展和數據通訊技術的不斷進步,PLC 也迅速發展,其發展過程大致可分三個階段:
1.早期的PLC(60 年代末—70 年代中期)
早期的PLC一般稱為可編程邏輯控制器。這時的PLC 多少有點繼電器控制裝置的替代物的含義,其主要功能只是執行原先由繼電器完成的順序控制、定時等。它在硬體上以准計算機的形式出現,在I/O 介面電路上作了改進以適應工業控制現場的要求。裝置中的器件主要採用分立元件和中小規模集成電路,存儲器採用磁芯存儲器。另外還採取了一些措施,以提高其抗干擾的能力。在軟體編程上,採用廣大電氣工程技術人員所熟悉的繼電器控制線路的方式—梯形圖。因此,早期的PLC 的性能要優於繼電器控制裝置,其優點包括簡單易懂,便於安裝,體積小,能耗低,有故障指使,能重復使用等。其中PLC 特有的編程語言—梯形圖一直沿用至今。
2.中期的PLC(70 年代中期—80 年代中後期)
在70 年代微處理器的出現使PLC 發生了巨大的變化。美國,日本,德國等一些廠家先後開始採用微處理器作為PLC 的中央處理單元(CPU)。
這樣,使PLC 得功能大大增強。在軟體方面,除了保持其原有的邏輯運算、計時、計數等功能以外,還增加了算術運算、數據處理和傳送、通訊、自診斷等功能。在硬體方面,除了保持其原有的開關模塊以外,還增加了模擬量模塊、遠程I/O模塊、各種特殊功能模塊。並擴大了存儲器的容量,使各種邏輯線圈的數量增加,還提供了一定數量的數據寄存器,使PLC 得應用范圍得以擴大。
3.近期的PLC(80 年代中後期至今)
進入80 年代中、後期,由於超大規模集成電路技術的迅速發展,微處理器的市場價格大幅度下跌,使得各種類型的PLC 所採用的微處理器的當次普遍提高。而且,為了進一步提高PLC 的處理速度,各製造廠商還紛紛研製開發了專用邏輯處理晶元。這樣使得PLC 軟、硬體功能發生了巨大變化。
五、PLC 的分類
1.小型PLC
小型PLC 的I/O 點數一般在128 點以下,其特點是體積小、結構緊湊,整個硬體融為一體除了開關量I/O 以外,還可以連接模擬量I/O 以及其他各種特殊功能模塊。它能執行包括邏輯運算、計時、計數、算術運算、數據處理和傳送、通訊聯網以及各種應用指令。
2.中型PLC
中型PLC 採用模塊化結構,其I/O點數一般在256~1024 點之間。I/O的處理方式除了採用一般PLC 通用的掃描處理方式外,還能採用直接處理方式,即在掃描用戶程序的過程中,直接讀輸入,刷新輸出。它能聯接各種特殊功能模塊,通訊聯網功能更強,指令系統更豐富,內存容量更大,掃描速度更快。
3.大型PLC
一般I/O點數在1024點以上的稱為大型PLC。大型PLC的軟、硬體功能極強。具有極強的自診斷功能。通訊聯網功能強,有各種通訊聯網的模塊,可以構成三級通訊網,實現工廠生產管理自動化。大型PLC 還可以採用三CPU構成表決式系統,使機器的可靠性更高。
六、PLC 的基本結構
PLC 實質是一種專用於工業控制的計算機,其硬體結構基本上與微型計算機相同,如圖所示:
1.中央處理單元(CPU)
中央處理單元(CPU)是PLC 的控制中樞。它按照PLC 系統程序賦予的功能接收並存儲從編程器鍵入的用戶程序和數據:檢查電源、存儲器、I/O 以及警戒定時器的狀態,並能診斷用戶程序中的語法錯誤,當PLC 投入運行時,首先它以掃描的方式接收現場各輸入裝置的狀態和數據,並分別存入I/O 映象區,然後從用戶程序存儲器中逐條讀取用戶程序,經過命令解釋後按指令的規定執行邏輯或算數運算的結果送入I/O 映象區或數據寄存器內。等所有的用戶程序執行完畢之後,最後將I/O 映象區的各輸出狀態或輸出寄存器內的數據傳送到相應的輸出裝置,如此循環運行,直到停止運行。
為了進一步提高PLC 的可靠性,近年來對大型PLC 還採用雙CPU 構成冗餘系統,或採用三CPU 的表決式系統。這樣,即使某個CPU 出現故障,整個系統仍能正常運行。
2.存儲器
存放系統軟體的存儲器稱為系統程序存儲器。
存放應用軟體的存儲器稱為用戶程序存儲器。
(1) PLC 常用的存儲器類型
1)RAM (Random Assess Memory)
這是一種讀/寫存儲器(隨機存儲器)其存取速度最快由鋰電池支持。
2)EPROM (Erasable Programmable Read Only Memory)
這是一種可擦除的只讀存儲器在斷電情況下存儲器內的所有內容保持不變。(在紫外線連續照射下可擦除存儲器內容)
3)EEPROM(Electrical Erasable Programmable Read Only Memory)
這是一種電可擦除的只讀存儲器。使用編程器就能很容易地對其所存儲的內容進行修改。
(2) PLC 存儲空間的分配
雖然各種PLC的CPU的最大定址空間各不相同,但是根據PLC的工作原理其存儲空間一般包括以下三個區域:
系統程序存儲區
系統RAM 存儲區(包括I/O 映象區和系統軟設備等)
用戶程序存儲區
1)系統程序存儲區
在系統程序存儲區中存放著相當於計算機操作系統的系統程序。包括監控程序、管理程序、命令解釋程序、功能子程序、系統診斷子程序等。由製造廠商將其固化在EPROM 中,用戶不能直接存取。它和硬體一起決定了該PLC 的性能。
2)系統RAM 存儲區
系統RAM 存儲區包括I/O 映象區以及各類軟設備,如:
邏輯線圈
數據寄存器
計時器
計數器
變址寄存器
累加器
等存儲器
A.I/O 映象區 由於PLC 投入運行後,只是在輸入采樣階段才依次讀入各輸入狀態和數據,在輸出刷新階段才將輸出的狀態和數據送至相應的外設。因此,它需要一定數量的存儲單元(RAM)以存放I/O 的狀態和數據,這些單元稱作I/O 映象區。
一個開關量I/O 佔用存儲單元中的一個位(bit),一個模擬量I/O 佔用存儲單元中的一個字(16 個bit)。因此整個I/O 映象區可看作兩個部分組成:
開關量I/O 映象區
模擬量I/O 映象區
B.系統軟設備存儲區
除了I/O 映象區區以外,系統RAM 存儲區還包括PLC 內部各類軟設備(邏輯線圈、計時器、計數器、數據寄存器和累加器等)的存儲區。該存儲區又分為具有失電保持的存儲區域和無失電保持的存儲區域,前者在PLC 斷電時,由內部的鋰電池供電,數據不會遺失;後者當PLC 斷電時,數據被清零。
1) 邏輯線圈
與開關輸出一樣,每個邏輯線圈佔用系統RAM 存儲區中的一個位,但不能直接驅動外設,只供用戶在編程中使用,其作用類似於電器控制線路中的繼電器。另外,不同的PLC 還提供數量不等的特殊邏輯線圈,具有不同的功能。
2)數據寄存器
與模擬量I/O 一樣,每個數據寄存器佔用系統RAM 存儲區中的一個字(16bits)。另外,PLC 還提供數量不等的特殊數據寄存器,具有不同的功能。
3) 計時器
4) 計數器
(3)用戶程序存儲區
用戶程序存儲區存放用戶編制的用戶程序。不同類型的PLC,其存儲容量各不相同。
3.電源
PLC 的電源在整個系統中起著十分重要得作用。如果沒有一個良好的、可靠得電源系統是無法正常工作的,因此PLC 的製造商對電源的設計和製造也十分重視。
一般交流電壓波動在±10%(±15%)范圍內,可以不採取其它措施而將PLC 直接連接到交流電網上去。
七、PLC 的工作原理
最初研製生產的PLC 主要用於代替傳統的由繼電器接觸器構成的控制裝置,但這兩者的運行方式是不相同的:
繼電器控制裝置採用硬邏輯並行運行的方式,即如果這個繼電器的線圈通電或斷電,該繼電器所有的觸點(包括其常開或常閉觸點)在繼電器控制線路的哪個位置上都會立即同時動作。
PLC 的CPU 則採用順序邏輯掃描用戶程序的運行方式,即如果一個輸出線圈或邏輯線圈被接通或斷開,該線圈的所有觸點(包括其常開或常閉觸點)不會立即動作,必須等掃描到該觸點時才會動作。
為了消除二者之間由於運行方式不同而造成的差異,考慮到繼電器控制裝置各類觸點的動作時間一般在100ms 以上,而PLC 掃描用戶程序的時間一般均小於100ms,因此,PLC採用了一種不同於一般微型計算機的運行方式—掃描技術。這樣在對於I/O 響應要求不高的場合,PLC 與繼電器控制裝置的處理結果上就沒有什麼區別了。
1.掃描技術
當PLC 投入運行後,其工作過程一般分為三個階段,即輸入采樣、用戶程序執行和輸出刷新三個階段。完成上述三個階段稱作一個掃描周期。在整個運行期間,PLC 的CPU 以一定的掃描速度重復執行上述三個階段。
(1) 輸入采樣階段
在輸入采樣階段,PLC以掃描方式依次地讀入所有輸入狀態和數據,並將它們存入I/O 映象區中的相應得單元內。輸入采樣結束後,轉入用戶程序執行和輸出刷新階段。在這兩個階段中,即使輸入狀態和數據發生變化,I/O 映象區中的相應單元的狀態和數據也不會改變。因此,如果輸入是脈沖信號,則該脈沖信號的寬度必須大於一個掃描周期,才能保證在任何情況下,該輸入均能被讀入。
(2) 用戶程序執行階段
在用戶程序執行階段,PLC總是按由上而下的順序依次地掃描用戶程序(梯形圖)。在掃描每一條梯形圖時,又總是先掃描梯形圖左邊的由各觸點構成的控制線路,並按先左後右、先上後下的順序對由觸點構成的控制線路進行邏輯運算,然後根據邏輯運算的結果,刷新該邏輯線圈在系統RAM 存儲區中對應位的狀態;或者刷新該輸出線圈在I/O 映象區中對應位的狀態;或者確定是否要執行該梯形圖所規定的特殊功能指令。
即,在用戶程序執行過程中,只有輸入點在I/O 映象區內的狀態和數據不會發生變化,而其他輸出點和軟設備在I/O 映象區或系統RAM 存儲區內的狀態和數據都有可能發生變化,而且排在上面的梯形圖,其程序執行結果會對排在下面的凡是用到這些線圈或數據的梯形圖起作用;相反,排在下面的梯形圖,其被刷新的邏輯線圈的狀態或數據只能到下一個掃描周期才能對排在其上面的程序起作用。
(3)輸出刷新階段
當掃描用戶程序結束後,PLC就進入輸出刷新階段。在此期間,CPU按照I/O映象區內對應的狀態和數據刷新所有的輸出鎖存電路,再經輸出電路驅動相應的外設。這時,才是PLC 的真正輸出。
比較下二個程序的異同:
程序1
程序2
這兩段程序執行的結果完全一樣但在PLC中執行的過程卻不一樣。
程序1 只用一次掃描周期,就可完成對%M4 的刷新;
程序2 要用四次掃描周期,才能完成對%M4 的刷新。
這兩個例子說明:同樣的若干條梯形圖,其排列次序不同,執行的結果也不同。另外,也可以看到:採用掃描用戶程序的運行結果與繼電器控制裝置的硬邏輯並行運行的結果有所區別。當然,如果掃描周期所佔用的時間對整個運行來說可以忽略,那麼二者之間就沒有什麼區別了。
一般來說,PLC 的掃描周期包括自診斷、通訊等,如下圖所示,即一個掃描周期等於自診斷、通訊、輸入采樣、用戶程序執行、輸出刷新等所有時間的總和。
2.PLC 的I/O 響應時間
為了增強PLC 的抗干擾能力,提高其可靠性,PLC的每個開關量輸入端都採用光電隔離等技術。
為了能實現繼電器控制線路的硬邏輯並行控制,PLC 採用了不同於一般微型計算機的運行方式(掃描技術)。
以上兩個主要原因,使得PLC 得I/O 響應比一般微型計算機構成的工業控制系統滿的多,其響應時間至少等於一個掃描周期,一般均大於一個掃描周期甚至更長。
所謂I/O 響應時間指從PLC 的某一輸入信號變化開始到系統有關輸出端信號的改變所需的時間。其最短的I/O 響應時間與最長的I/O 響應時間如圖所示:
最短I/O 響應時間:
最長I/O 響應時間:
八、PLC 的I/O 系統
1.I/O 定址方式
PLC的硬體結構主要分單元式和模塊式兩種。前者將PLC 的主要部分(包括I/O 系統和電源等)全部安裝在一個機箱內。後者將PLC 的主要硬體部分分別製成模塊,然後由用戶根據需要將所選用的模塊插入PLC 機架上的槽內,構成一個PLC 系統。
不論採取哪一種硬體結構,都必須確立用於連接工業現場的各個輸入/輸出點與PLC 的I/O 映象區之間的對應關系,即給每一個輸入/輸出點以明確的地址確立這種對應關系所採用得方式稱為I/O 定址方式。
I/O定址方式有以下三種
固定的I/O 定址方式
這種I/O 定址方式是由PLC 製造廠家在設計、生產PLC 時確定的,它的每一個輸入/輸出點都有一個明確的固定不變的地址。一般來說,單元式的PLC 採用這種I/O定址方式。
開關設定的I/O 定址方式
這種I/O 定址方式是由用戶通過對機架和模塊上的開關位置的設定來確定的。
用軟體來設定的I/O 定址方式
這種I/O 定址方式是有用戶通過軟體來編制I/O 地址分配表來確定的。
E. C語言的模塊化編程還是不太理解,還請各位大神指點!
C語言是面向過程的語言。
把一件事情分多步驟,細分,這樣更有條理。比如今天你要最晚餐。
第一種方法:你要考慮:去買菜;,去哪裡買,買什麼,坐什麼交通工具去買,怎麼回來,煮飯做飯,用什麼廚具,蒸的?煮的?炒的?做哪種家裡人覺得好吃,以及洗碗,打掃衛生等等
這沒有覺得這種方法很亂。第二種方法就是先分塊:
首先我要考慮的問題(1)買菜(2)做飯(3)洗碗 就6個字,3大塊,不用考慮過多,先把整件事情的步驟列出。然後再在每一塊細分。(1)買菜;(1.1)去哪裡買(1.2)買什麼。這樣第一大塊(買菜)裡面又有兩塊(1.1 和 1.2),當然還可以細分,對於(1.1)去哪裡買 再細分 (1.1.1)交通工具 等等。
是不是覺得做個晚餐 還要弄得這么惡心, 一步一步的來? 一開始我也是這樣想的,但是你用C語言編程,這樣就會很方便,很清晰的。
F. 最近看到有一種模塊化編程叫做積拼編程,這種編程跟傳統的積木式編程有什麼不同
積拼編程很適合小朋友,是一種針對中小學年齡段學生設計的教學性的,在網頁上運行的圖形化編程平台。它的特點是:使用者可用滑鼠拖動、安排模塊,然後對模塊進行鏈結和編程,從而進行基礎的編程學習和簡單的硬體實驗。如果真正學編程可以選擇Jave,C++,C,Pascal,Basic等。
G. 模塊化編程的菜鳥問題
舉例來說吧,比如你設計了3個不同用途的系統,而3個系統都恰好要用到同一個外部設備,假設這個外部設備是個液晶顯器吧,那你就僅僅只要寫一個液晶驅動(而不用寫三個),設定好入口函數,3個不同用途的系統就都能用了,是不是很省事呢?
其他也一樣,比如使用感測器,常常要多次采樣取平均值,以提高准確性,那就可以做一個通用的計算平均值的子程序,需要的時候拿來用就行了,不用管這次是溫度感測器、壓力感測器還是加速度感器,全部通用,就不用每次都編了.這樣就提高效率了嘛。
至於把各模塊連接起來,這本來概念上就不對。模塊不是連接的,而是被調用的。設計程序時應當先設計主程序的流程圖,再逐步細化,細化到一定程度自然就變成一個個模塊的組合了。而在主程序中只是設置一些參數,然後調用模塊完成相應的功能。
H. c語言模塊化編程。
所謂模塊化編程,就是將程序功能分成若干模塊,每個模塊執行一部分功能,由主程序來決定是否調用和如何調用這些模塊來完成任務。
模塊可以不知道是誰調用了自己,只要能完成自己的任務就可以了。
I. 軟體開發中,「模塊化開發」是什麼意思
軟體產品可以被看作是由一系列具有特定功能的組件組成,作為一個完整的系統也可以被分解成一系列功能模塊,這些模塊之間的相互作用就形成了系統的所有功能。
所謂模塊是指可組成系統的、具有某種確定獨立功能的半自律性的子系統,可以通過標準的界面和其他同樣的子系統按照一定的規則相互聯系而構成的更加復雜的系統。每個模塊的研發和改進都獨立於其他模塊的研發和改進,每個模塊所特有的信息處理過程都被包含在模塊的內部,如同一個「黑箱」,但是有一個或數個通用的標准界面與系統或其他模塊相互連接。
在軟體的模塊化開發過程中,把一個源代碼的結構分割成一個元系統和一系列的模塊。
元系統指的是一個能夠保持系統運轉的最小的系統。
模塊是一個較大系統的獨特的部件,它能夠由設計者獨立設計出來,同時又可以作為一個整體在系統中運轉。
把一個大系統切割成互相獨立的不同的小系統,可以使一些並不是經常見面的開發者減少必要的交流次數。
另外,一個舊版本的模塊可以被新版的模塊所替換,同時卻又不影響整個系統的運轉。
這樣,在新模塊中所增加的功能就可以及時在現存的系統中體現出來,同時也不需要更改系統中的其他模塊。
高度模塊化的源代碼結構給軟體開發者和使用者均帶來了極大的好處。
開發者可以對具有某種特定功能的模塊進行獨立開發而不需要花時間去協調與其他模塊之間的關系。
並且模塊化開發不僅允許模塊之間的水平開發,而且可以通過對類似模塊之間的創新和競爭(開發新的模塊或者對原有的模塊進行改進)充分改善系統的功能。
另外,作為最終的用戶來說,在安裝系統的時候可以就個人的需求與偏好選擇適合自己的模塊。
模塊化是復雜系統的一個共同特徵,模塊化的代碼結構是由鬆散的組件構成的,是對一個系統完全意義上的分割,而不像完全集成的代碼,各個組件之間存在很強的依賴關系,並不是完全通過界面來交換信息。
總結:
第一, 把一個系統分解成各個不同的子模塊,不同的開發者專注於對其中某一模塊的開發,一方面實現了勞動的分工,另一方面也提高了自由軟體開發的效率。基於模塊化的性質,每個模塊在開發出來以後都可以通過一個被稱作是內核的原系統進行信息交流,發揮整個模塊的功能,同時也並不會影響其他模塊功能的發揮。而且在各個不同的模塊整合在一起後,由於外部性的存在,會使整個系統增加的功能要超過該模塊本身的功能。在此過程中實現了價值的分割與整合。
第二, 對於開發者而言,基於模塊化的自由軟體開發具有更大的吸引力,其在參與開發過程中可以得到更高的期望收益。
第三, 在非模塊化的軟體開發過程中,存在著嚴重的「搭便車」現象,當一個開發者選擇參與開發,其餘的開發者就會選擇「搭便車」,最終會導致軟體的供給不足;在基於模塊化的開發過程中,所有的開發者都更傾向於參與開發不同的模塊,從而實現整個系統的開發。
MIS軟體開發中的組件模式開發比較復雜,主要的阻力不在代碼的實現過程中,因為這個工作通常只應該占據軟體開發工作量的30%,而對業務需求的深度剖析、業務子系統的劃分和業務組件的規劃會占據約40-50%的工作量。
這些工作體現在設計階段主要是對業務的廣度、深度分析,把業務領域的對象元素進行細化,將業務操作劃分為原子性功能,以此為基礎構成業務組件,進而形成模塊和子系統,同時業務操作之間的約束則需要邏輯化(代碼系統可識別的邏輯);在此過程中,原系統也就形成了,它便是在業務領域中必須的組件、模塊和子系統的集合;外延的組件在原系統上通過組合或熱差拔即能夠滿足不同規模、深度、特性的業務模式運轉。
J. 什麼是模塊化編程
就是盡量由由多個小函數組成一個大程序 而不是一個大函數解決所有的問題。比如你製造一個人類的模仿程序盡量不要把所有的代碼都寫到一個main函數里,而是把一個大功能分成好多種小功能一個一個的寫。