W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在前面我們介紹了 Scala 面向對象的一些基本概念
從本篇開始繼續(xù)介紹 Scala 面向對象方法的知識,定義一個新類的方法主要有兩種模式:一個通過組合的方式,新創(chuàng)建的類通過引用其它類組合而成,通過這些引用類組合來完成新功能,而是通過繼承的方式來擴展基類。為了更好的介紹 Scala 類的組合和繼承,以及抽象類,無參數(shù)方法,擴展類,方法的重載等,我們打算使用一個現(xiàn)實的例子來說明,因此本篇首先定義需要解答的問題。
我們的需要是定義一個函數(shù)庫,這個庫用來定義在平面上(二維空間)布局元素,每個元素使用一個含有文字的矩形來表示。為方便起見,我們定義一個類構造工廠方法“elem”根據(jù)傳入的數(shù)據(jù)來創(chuàng)建一個布局元素。這個方法的接口定義如下:
elem(s: String) : Element
你可以看到,布局元素使用類型 Element 來構造其模型,你可以調用 above,和 beside 方法來創(chuàng)建一個新的布局元素,這個新的布局元素有兩個已經(jīng)存在的布局元素組合而成,例如:下面的表達式使用多個布局元素構造一個更大區(qū)域的布局元素:
val column1 = elem("Hello") above elem("***")
val column2 = elem("**") above ("World")
column beside column2
將打印出下面結果:
Hello ***
*** world
這個例子使用布局元素,是非常好的一個例子可以用來說明一個對象可以使用更簡單的對象通過組合的方式來構造。后面的幾篇文章將以此為基礎,我們將定義一些類,這些類支持使用數(shù)組,線段,矩形(簡單部件)來構造,并定義組合算子(操作符) above 和 beside。
使用組合算子的概念來設計函數(shù)庫是一種非常好的方法,它能回報以考慮在應用域構建對象的基礎方法。什么是簡單對象?用什么方式能讓更多有趣的對象通過簡單對象構造出來?組合子是怎么掛在一起的?什么是最通用的組合?它們滿足任何有趣的規(guī)則嗎?如果你對這些問題都有好的答案,你的庫設計就在正軌上了。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: