Khiêu chuyển đáo nội dung

BOO đại toàn / loại biệt

Duy cơ giáo khoa thư, tự do đích giáo học độc bổn
( trọng định hướng tựBOO/BooClasses)

Thượng nhất chương: Hàm thứcMục lụcHạ nhất chương: Giới diện


Loại biệt

[Biên tập]

Loại biệt thị vật kiện đạo hướng ngữ ngôn đích cơ sở. Bất tượng kỳ tha đích.NET ngữ ngôn, Boo tại trình thức lí tịnh bất nhất định yếu hữu loại biệt.

Hạ diện đích loại biệtPersonBiểu kỳ liễu nhất cá nhân, nhi lí diện hữu lưỡng cá lan vị:_nameDữ_ageDữ lưỡng cá phương pháp: Kiến cấu tử dữToString.Loại biệt khả dĩ thuyết thị kiến lập tân vật kiện đích dạng bản, thành như tinh tinh hình trạng đích mô tử thị chế tác tinh tinh hình trạng bính càn đích dạng bản nhất dạng. Hồi đáo chủ đề, dĩ Person sản sinh xuất lai đích vật kiện bao hàm lưỡng cá tư tấn, nhân đích danh tự dữ niên linh. Kiến cấu tử tại vật kiện bị kiến cấu xuất lai thời tiến hành sơ thủy hóa lan vị tư liêu đích động tác, kiến cấu chi hậu, tựu khả dĩ hô khiếu cai vật kiện đích phương pháp.

# class1.boo
classPerson:
_nameasstring
_ageasint

defconstructor(nameasstring,ageasint):
_name=name
_age=age

defToString():
return_name

p=Person("john",36)
printp.ToString()

Thâu xuất kết quả

john

Thượng diện đích đại mã tựu cân hạ diện đích C# trình thức nhất dạng:

usingSystem;

classPerson{
protectedstring_name;
protectedint_age;

publicPerson(stringname,intage){
_name=name;
_age=age;
}

publicstringToString(){
return_name;
}
}

classTestPerson{
publicstaticvoidMain(string[]args){
Personp=newPerson("john",36);
Console.WriteLine(p.ToString());
}
}

Boo đích bản bổn minh hiển địa bỉ giác đoản, nhi thả dã bất nhu yếu đại quát hào { }, bỉ giác dịch ô liễu giải. Boo đích lan vị khả thị tính dự thiết vi protected, phương pháp khả thị tính tắc dự thiết vi public﹔C# đối khả thị tính tắc hoàn toàn dự thiết vi private. Tối hậu diện đích đại mã đô hội bị phóng tại ẩn tàng mô tổ loại biệt lí đích Main phương pháp, tại giá lí, biên dịch khí hội tương thử ẩn tàng mô tổ loại biệt mệnh danh viclass1Module.Nhĩ khả dĩ minh xác địa tương mô tổ loại biệt tả xuất, nhượng Boo khán khởi lai canh tượng C# đích đại mã:

importSystem
[module]
classTestMain:
publicstaticdefMain():
Console.WriteLine("hello, world!")

Vật kiện chúc tính

[Biên tập]

Nhĩ khả dĩ bả vật kiện đích chúc tính đương tác thị vật kiện đích công khai lan vị. Tại Windows form trình thức lí, ngã môn hội thường khán đáo đại bộ phân khống chế hạng đô hữuTextChúc tính. Như quả nhĩ cải biến liễu form đíchTextChúc tính, form đích tiêu đề tựu hội bị cải biến. Chẩm ma tố đích ni? Giá thị nhân vi chúc tính chỉ thị nhất đối hàm thức:getterDụng lai hồi truyện trị, nhisetterTắc dụng lai thiết trí nội bộ trạng thái. Sở dĩform.Text= "Hello!"Thật tế thượng thị hô khiếu liễuform.set_Text( "Hello!" )( ngận minh hiển địa cân Java tương tự ). Tại tiền diện đề quá đíchPersonLoại biệt lí, ngã môn khả dĩ tăng gia nhất cá Name đích chúc tính, thật tế thượng thị tồn thủ _name lan vị:

Name:
get:
return_name
set:
_name=value

Boo đề cung liễu nhất cá khoái tiệp đích phương pháp, nhượng đại mã khán khởi lai canh giản khiết, tân bản bổn đích 'PersonNhư hạ:

classPerson:
[property(Name)]
_nameasstring

[property(Age)]
_ageasint

overridedefToString():
return_name

p=Person(Name:"john",Age:36)
printp

Chú ý, ngã môn bất tái nhu yếu kiến cấu tử lai sơ thủy giá ta lan vị liễu. Hữu liễu giá ta công khai đích chúc tính, ngã môn khả dĩ tại hô khiếu kiến cấu tử đích thời hầu, biểu minh yếu sơ thủy hóa giá ta chúc tính, giá nhượng sơ thủy hóa vật kiện đích đại mã canh thanh sở ( giá cá phương pháp chỉ năng tại hô khiếu kiến cấu tử thời sử dụng ).

Getters dữ dự xử lý điều kiện
[Biên tập]

Duy độc chúc tính thị ngận thường kiến đích tình huống, giá cá thời hầu chỉ nhu yếu định nghĩa getter hàm thức:

Name:
get
return_name

Boo đề cunggetterattribute, nhượng nhĩ khả dĩ dụng canh giản khiết đích phương thức lai tả giá đoạn đại mã:

[getter(Name)]
_nameasstring

Nhất bàn lai thuyết, việt tảo xử lý bất hảo đích thâu nhập việt hảo. Giá hội giản hóa hậu tục đích xử lý ﹔ chi hậu tựu khả dĩ giả thiết tư liêu thị chính xác đích, nhân vi hữu kiên cố đích phòng hỏa tường tại hệ thống dữ chân thật thế giới chi gian. Cử lệ lai thuyết, loại biệt: Person đích Name ứng cai tị miễn vi không bạch hoặc thị null tự xuyến.propertyattribute đề cung liễu nhất cá khả tuyển trạch đích dẫn sổ, nhĩ khả dĩ chỉ định dự xử lý điều kiện, đương phù hợp thử điều kiện thời, tài khả dĩ tiến hành setter động tác, phủ tắc tựu thất bại.

[property(Name,valueisnotnullandlen(value)>0)]
_name="que?"

Giá dạng đích đại mã bỉ hạ diện đích đại mã đoản đa liễu:

_name="que?"
Name:
get:
return_name
set:
assertvalueisnotnullandlen(value)>0
_name=value

Giá dạng đích tả pháp đích xác tiết tỉnh liễu bất thiếu hành sổ, đãn thật tế thượng biên dịch xuất lai đích kết quả tịnh một hữu. Phủ tắc, ngã môn tương kết thúc kế tục tác tượng thị tại đồng nhất hành phóng trí sổ cá chỉ phái đẳng đích bổn sự ( Otherwise, we would end up doing silly things like placing multiple assigments etc on the same line.). Giá dạng tả đích hảo xử, thị nhượng trình thức thiết kế sư đích ý đồ canh vi thanh sở. TạiTự đính AttributeNhất chương lí, ngã tương kỳ phạm nhất cá tân đích chúc tính: NonEmptyString, giá hội nhượng đại mã đích ý đồ canh vi dung dịch bị liễu giải, dã canh dung dịch thâu nhập.

Vi thậm ma nhu yếu chúc tính
[Biên tập]

Tồn thủ chúc tính trị, kỳ thật ngận tượng thị hô khiếu hàm thức, sở dĩ chúc tính đích tồn thủ minh hiển địa bỉ tồn thủ công khai lan vị yếu mạn ( tuy nhiên hữu tối giai hóa ). Đãn thị giá nhưng hữu kỉ cá hảo xử, đệ nhất, chúc tính đối khuông giá lai thuyết thị công khai thả khả dụng đích. Tối hảo đích lệ tử thị Windows Forms lí đích khống chế hạngPropertyGrid.

//Dịch chú:Nguyên trình thức vô pháp chấp hành,Nhân vi thiếu liễuApplication.Run,Giá lí sảo tác cải tả.
importSystem.Windows.Formsfrom"System.Windows.Forms"

Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(false)

f=Form()
f.Text="Test"
pg=PropertyGrid(Dock:DockStyle.Fill,CommandsVisibleIfAvailable:true,Text:"Property Grid Demo")
f.Controls.Add(pg)
pg.SelectedObject=f
f.Show()

Application.Run(f)

Giá ngận khốc ba, nhĩ khả dĩ kiểm duyệt cương cương kiến lập đích form đích sở hữu chúc tính.

Đệ nhị, tại nhu yếu cải biến chúc tính thật tác thời, bỉ giác bất hội ảnh hưởng đáo hàm thức khố lí kỳ tha dụng đáo thử chúc tính đích bộ phân. Khán khán giá lưỡng chủng phương pháp:

classBill:
publicDateDueasDateTime
publicAmountasdouble
publicDebtorasCustomer
...

classBill:
[property(DateDue)]
_dateDueasDateTime
[property(Amount)]
_amountasdouble
[property(Debtor)]
_debtorasCustomer
...

Tiền giả đích xác khả dụng, đãn tưởng tưởng, như quả nhĩ đột nhiên tưởng kiểm tra giá ta sổ trị ( tham khảo thượng nhất tiết ), nhĩ tựu đắc cải biến vi đệ nhị chủng phương thức lai tác. Như quảBillLoại biệt thị nhĩ hệ thống tổ kiện công khai giới diện đích nhất bộ phân, na ma nhĩ đích trình thức tương khả năng xuất thác, tịnh nhu yếu trọng tân biên dịch. Như quả tổ kiện thị tại sử dụng giả đích điện não thượng, na ma tình huống hội canh hiểm ác, nhi thả dã bất dịch đệ tăng thăng cấp nhĩ đích hệ thống.

Đa tái dữ kế thừa

[Biên tập]

CLI giá cấu hạ, sở hữu loại biệt tối chung đô kế thừa tựObject.Sở dĩ khả dĩ thuyếtObjectĐịnh nghĩa liễu sở hữu vật kiện đích thông dụng hành vi. Tối thường bị dụng đáo đích hành vi, tựu thị tương tự kỷ chuyển vi tự xuyến, giá thông thường hội bị đa tái ﹔ tha đích danh tự tựu thịToStringPhương pháp. Đương khuông giá nhu yếu hiển kỳ vật kiện đích văn tự thời, tha tựu hội hô khiếu giá cá phương pháp ( giá tựu thịprintTri đạo như hà hiển kỳ đích nguyên nhân ). Dự thiết thị giản đan địa truyện hồi loại biệt danh xưng, giá ngận an toàn, nhi thả ngận hữu dụng ( vưu kỳ thị tại hỗ động hoàn cảnh hạ ), đãn thị ngã môn khả dĩ đa táiToStringNhượng tha truyện hồi ngã môn tưởng yếu đích nhậm hà sự.

Cử lệ lai thuyết, như quả ngã môn tượng giá dạng định nghĩa liễuPersonĐíchToString:

overridedefToString():
return_name

Na ma vật kiện tương tri đạo chẩm ma ấn xuất tha tự kỷ:

p=Person("jane",25)
printp

Kế thừa đích cơ bổn sách lược tựu tại ô lợi dụng kí hữu đích loại biệt, tịnh thả diên thân tha. Cử lệ lai thuyết, 'EmployeeThị cáPerson( thông thường thị ). Tha hữu ta hành vi dữPersonNhất dạng, đãn khước hữu độc đặc đích ID.

classEmployee(Person):
_employeeIdasint

defconstructor(nameasstring,ageasint,idasint):
super(name,age)
_employeeId=id

overridedefToString():
returnsuper.ToString()+"id ="+_employeeId

e=Employee("James",47,2333)
printe

Thâu xuất kết quả

James id = 2333

Thỉnh chú ý quan kiện tựsuper﹔ tha dụng lai tham chiếu phụ loại biệt. Sở dĩEmployeeKiến cấu tử đắc dĩ sơ thủy hóa phụ loại biệtPerson,Dã khả dĩ tại phương pháp lí sử dụng phụ loại biệt đích mỗ ta phương pháp.

Sự thật thượng, như quả kiến cấu tử một hữu dẫn sổ ( giá bị xưng vi dự thiết kiến cấu tử ) đích thoại, tịnh bất nhất định yếu hô khiếu phụ loại biệt đích kiến cấu tử. Tại một hữu kiến cấu tử đích tình huống hạ, nhậm hà lan vị tương bị sơ thủy hóa vi 0 hoặc null, hoặc thị nhậm hà hữu ý nghĩa đích sơ thủy trị.

classBase:
publicXasdouble

defconstructor():
X=1.0

classInherits(Base):
publicYasdouble

b=Inherits()
b.Y=2.0
printb.X,b.Y

Ngã môn khả dĩ thuyết,InheritsVật kiện thị nhất chủng đặc biệt đíchBaseVật kiện.

Java trình thức thiết kế sư yếu chú ý nhất điểm, phương pháp dự thiết tịnh phi virtual ( hư nghĩ ), sở dĩ nhĩ tất tu minh xác chỉ định yếu đa tái kế thừa hạ lai đích phương pháp. Giá dữ C# nhất dạng ﹔ liễu giải C# đích tác pháp, hội nhượng nhĩ bỉ giác dung dịch thanh sở Boo đích tác pháp.

Mệnh danh quán lệ

[Biên tập]

Boo dữ đại bộ phân đích trình thức ngữ ngôn nhất dạng, tịnh một hữu kiên quyết chủ trương nhất cá mệnh danh quán lệ. Tại nhất bàn dụng pháp thượng, hội tương lan vị danh xưng dĩ _ khai đầu, nhi phương pháp đích danh xưng dĩ camel case mệnh danh. Thử ngoại, nhĩ dã khả dĩ tham khảo kỳ tha.NET ngữ ngôn hoặc Python đích tác pháp.


Thượng nhất chương: Hàm thứcMục lụcHạ nhất chương: Giới diện