国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

Ada私有類型和有限專用類型

2018-12-11 15:14 更新

私有類型   

    到目前為止,我們見過的在程序包內(nèi)定義的數(shù)據(jù)類型,只要使用with語句,我們都能對它進行任意的處理,沒有什么限制。這在有些情況下,會引起麻煩。比方說創(chuàng)建了一套函數(shù)庫,如果在該函數(shù)庫里的數(shù)據(jù)類型能被用戶自由處理----創(chuàng)建新類型,加減乘除運算.....用戶又頻繁使用的話,會使用戶程序相當(dāng)依賴于這些數(shù)據(jù)類型,而函數(shù)庫的創(chuàng)建者為了提高效率或其它什么原因,需要改變這些數(shù)據(jù)類型---取消,重寫或合并,這時用戶所寫的程序?qū)龅胶艽蟮穆闊?,要么就用舊版的函數(shù)庫,要么就改寫自己的程序-----都是不怎么好的做法。在 Unix 下有 C 語言經(jīng)驗的朋友應(yīng)該對這所謂的“兼容性”深有體會----系統(tǒng)很無聊的包含了很多只為了兼容性考慮的數(shù)據(jù)類型、函數(shù),為了移植性,開發(fā)稍大一點的軟件就多了一些很無謂的“痛苦”。私有類型就是為這種情況產(chǎn)生的:在程序包外,對私有類型數(shù)據(jù)只能執(zhí)行 := 和 = 操作,如有其它操作也是程序包內(nèi)定義的。這樣的好處是私有類型不會被濫用,相關(guān)的子程序都是程序包創(chuàng)建者定義的,而不是用戶??紤]一下下面的賬號管理的例子,具體函數(shù)實現(xiàn)略,只是象征性的說明一下問題:

000 -- filename:account.ads
001 package Accounts is
002    type account is private; -- 具體聲明在后面
003     My_Account : constant account;
004    procedure withdraw(account:in out account; amount :in Positive);
005    procedure deposit (account:in out account; amount :in Positive);
006    function create(account:in out account;account_id :Positive) return Boolean; 
007    function cancel(account:in out account;account_id :Positive) return Boolean;
008    function balance(account: in out account) return Integer;
009 private 
010    type account is 
011    record
012        account_id : positive;
013        balance : integer;
014    end record;
015 My_Account:constant account := (78781, 122); 
016 end accounts;

    過程 withdraw 和 deposit 對帳號進行取款和存款操作,create 和 cancle 對帳號進行創(chuàng)建和注銷,balance 返回當(dāng)前賬號的存款額。實際應(yīng)用中為了提高效率,這種類型的函數(shù)庫很有可能需要隨時升級,使用了私有類型,用戶層的麻煩少了不少。

    私有類型 account 先簡略地聲明為類型 private,它的具體聲明跟在保留字 private 后,接下去就跟普通數(shù)據(jù)類型聲明一樣。account 類型的數(shù)據(jù)可以在該程序包外包括在主程序中創(chuàng)建,但對它的操作只能是賦值、相等比較及該函數(shù)包定義的操作;在該程序包內(nèi),則能對私有類型進行任意操作,就好像它不是私有類型一樣。在這個例子里,我們還創(chuàng)建了一個 account 類型的常量 My_Account,注意它的聲明方式:先是不完全的聲明,再在private 部份給出完整聲明。不管怎樣,用戶只能通過函數(shù)說明知道有這么個私有類型,卻不能過多的使用它。

有限專用類型

    如果嫌私有類型的 := 和 = 這兩個默認操作也多余,則使用有限專用類型。如聲明上例的account為有限專有類型:

type account is limited private;

    其它方面與私有類型一樣,只是聲明略有不同。對這種數(shù)據(jù)類型的操作只能由該程序包完全定義,沒有了其它默認操作。

    有時類型定義中還會出現(xiàn)單獨的 limited,沒有 private,這表示該類型是限制類型,賦值等操作不能作用于該類型變量,但不是“私有”的。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號