六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Perl教學(13)Perl的面向對象編程之一

[摘要]本章介紹如何使用Perl的面向對象編程(OOP)特性及如何構建對象,還包括繼承、方法重載和數據封裝等內容。一、模塊簡介模塊(module)就是Perl包(pachage)。Perl中的對象基于對包中數據項的引用。(引用見第x章引用)。詳見http://www.nease.net/tppmsgs/m...
    本章介紹如何使用Perl的面向對象編程(OOP)特性及如何構建對象,還包括繼承、方法重載和數據封裝等內容。
一、模塊簡介
模塊(module)就是Perl包(pachage)。Perl中的對象基于對包中數據項的引用。(引用見第x章引用)。
詳見http://www.nease.net/tppmsgs/msgs0.htm#28的perlmod和perlobj。
在用其它語言進行面向對象編程時,先聲明一個類然后創建該類的對象(實例),特定類所有對象的行為方式是相同的,由類方法確定,可以通過定義新類或從現存類繼承來創建類。已熟悉面向對象編程的人可以在此遇到許多熟悉的術語。Perl一直是一個面向對象的語言,在Perl5中,語法略有變動,更規范化了對象的使用。
下面三個定義對理解對象、類和方法在Perl中如何工作至關重要。
.類是一個Perl包,其中含提供對象方法的類。
.方法是一個Perl子程序,類名是其第一個參數。
.對象是對類中數據項的引用。
二、Perl中的類
再強調一下,一個Perl類是僅是一個包而已。當你看到Perl文檔中提到“類”時,把它看作“包”就行了。Perl5的語法可以創建類,如果你已熟悉C++,那么大部分語法你已經掌握了。與Perl4不同的概念是用雙冒號(::)來標識基本類和繼承類(子類)。
面向對象的一個重要特性是繼承。Perl中的繼承特性與其它面向對象語言不完全一樣,它只繼承方法,你必須用自己的機制來實現數據的繼承。
因為每個類是一個包,所以它有自己的名字空間及自己的符號名關聯數組(詳見第x章關聯數組),每個類因而可以使用自己的獨立符號名集。與包的引用結合,可以用單引號(')操作符來定位類中的變量,類中成員的定位形式如:$class'$member。在Perl5中,可用雙冒號替代單引號來獲得引用,如:$class'$member與$class::$member相同。
三、創建類。
本節介紹創建一個新類的必要步驟。下面使用的例子是創建一個稱為Cocoa的簡單的類,其功能是輸出一個簡單的Java應用的源碼的必要部分。放心,這個例子不需要你有Java的知識,但也不會使你成為Java專家,其目的是講述創建類的概念。
首先,創建一個名為Cocoa.pm的包文件(擴展名pm是包的缺省擴展名,意為Perl Module)。一個模塊就是一個包,一個包就是一個類。在做其它事之前,先加入“1;”這樣一行,當你增加其它行時,記住保留“1;”為最后一行。這是Perl包的必需條件,否則該包就不會被Perl處理。下面是該文件的基本結構。

package Cocoa;

#
# Put "require" statements in for all required,imported packages
#

#
# Just add code here
#

1; # terminate the package with the required 1;

接下來,我們往包里添加方法使之成為一個類。第一個需添加的方法是new(),它是創建對象時必須被調用的,new()方法是對象的構造函數。
四、構造函數
構造函數是類的子程序,它返回與類名相關的一個引用。將類名與引用相結合稱為“祝福”一個對象,因為建立該結合的函數名為bless(),其語法為:
bless YeReference [,classname]
YeReference是對被“祝福”的對象的引用,classname是可選項,指定對象獲取方法的包名,其缺省值為當前包名。
創建一個構建函數的方法為返回已與該類結合的內部結構的引用,如:

sub new {
my $this = {}; # Create an anonymous hash, and #self points to it.
bless $this; # Connect the hash to the package Cocoa.
return $this; # Return the reference to the hash.
}

1;
{}創建一個對不含鍵/值對的哈希表(即關聯數組)的引用,返回值被賦給局域變量$this。函數bless()取出該引用,告訴對象它引用的是Cocoa,最后返回該引用。函數的返回值現在指向這個匿名哈希表。
從new()函數返回后,$this引用被銷毀,但調用函數保存了對該哈希表的引用,因此該哈希表的引用數不會為零,從而使Perl在內存中保存該哈希表。創建對象可如下調用:
$cup = new Cocoa;




主站蜘蛛池模板: 亚拍一区 | 青青草视频在线观看 | 午夜不卡影院 | 午夜在线观看免费观看大全 | 日韩18在线观看地址 | 欧美亚洲日本 | 亚洲va久久久噜噜噜久久 | 欧美性乱 | 亚洲精品福利视频 | 天天干天天草天天 | 日韩我不卡 | 中国女人特级毛片 | 中文精品视频一区二区在线观看 | 四虎免费最新在线永久 | 亚洲成人mv | 日本亚欧乱色视频在线网站 | 在线看国产人成www免费看下载 | 色天使在线播放 | 欧洲精品视频在线观看 | 亚洲a在线视频 | 性网站视频 | 色www视频永久免费 色www免费视频 | 亚洲porn| 午夜免费看片 | 夜色爽爽 | 一级aa免费视频毛片 | 全黄一级片 | 日本激情在线看免费观看视频 | 中文字幕在线网址 | 日韩视频不卡 | 天天草天天干天天 | 特一级黄色大片 | 日本亚欧乱色视频在线网站 | 欧美一区二区三区在线观看 | 探花视频观看在线视频 | 思思久久96热在精品国产免费 | 真实国产乱子伦精品免费 | 日韩免费专区 | 一a一级片| 亚洲视频三区 | 日韩色影院|