Lớp Number, Integer, Float, Character

Một phần của tài liệu THỰC HÀNH NGÔN NGỮ LẬP TRÌNH (Trang 96 - 101)

Các lớp trên được dẩn xuất trực tiếp hoặc gián tiếp từ class Magnitude, cung cấp các phương thức cơ bản nhất để xử lý số nguyên, số thực và ký tự.

4. Lớp IndexedCollection:

Lớp con của lớp Collection, trong đó các phần tử của tập hợp có thể sắp thứ tự. Lớp này có hai lớp con là Array mô tả một dãy các đối tượng và String, mô tả một dãy các ký tự.

Phương thức này nhận đối số là một Collectiton khác, kết quả sẽ nối đối số vào danh sách phần tử của đối tượng nhận thông điệp.

Ví dụ:

‘abcd’,’ef’ Æ ‘abcdef’ • =

Phương thức này nhận đối số là một Collectiton khác, kết quả sẽ trả về true nếu mọi phần tử của đối tượng nhận thông điệp đều bằng với phần tử tương ứng trên đối số và ngược lại.

Ví dụ:

‘abc’ = ‘abc’ Æ true • atAll:put:

Method này nhận hai đối số là một Collectiton C và một đối tượng bất kỳ O, trong đó C là một danh sách các số nguyên, kết quả sẽ thay thế mỗi phần tử của đối tượng nhận thông điệp có chỉ số xuất hiện trong C bằng đối tượng O.

Ví dụ: |a| a := #(1 2 3 4 5). a atAll: #(1 3) put: $c. ^a Kết quả sẽ là #( $c 2 $c 4 5) atAllPut:

Phương thức này nhận đối số là một đối tượng bất kỳ O, kết quả sẽ thay thế tất cả các phần tử của đối tượng nhận thông điệp bằng O. Ví dụ: |a| a := #(1 2 3 4 5). a atAllPut: #(1 2). ^a Kết quả sẽ là #( #( 1 2) #( 1 2) #( 1 2) #( 1 2) #( 1 2)) • checkIndex:

Method này nhận đối số là một số nguyên, kết quả sẽ kiểm tra số nguyên này có phải là chỉ số thích hợp cho đối tượng nhận thông điệp không. (Số nguyên này phải lớn hơn 1 và nhỏ hơn số phần tử của đối tượng nhận thông điệp). Nếu không phải sẽ thông báo lỗi.

• copyFrom:to:

Method này nhận hai đối số là hai số nguyên start,stop, kết quả sẽ trả về một collection mới từ vị trí start đến stop.

Ví dụ:

#(2 3 4 5) copyFrom: 1 to: 3 Æ #(2 3 4) • copyReplaceFrom:to:with:

Method này nhận ba đối số là hai số nguyên start,stop và một Collection C. Kết quả sẽ thay thế các phần tử của đối tượng nhận thông điệp từ vị trí start đến stop bằng các phần tử của C.

Ví dụ:

#(2 3 4 5) copyReplaceFrom: 1 to: 3 with: ‘ab’ Æ #( $a $b 5) • copyWith:

Method này nhận đối số là một đối tượng bất kỳ. Kết quả sẽ thêm đối số vào cuối đối tượng nhận thông điệp.

• do:

Method này nhận thông số là một block(Context) có đối số. Mỗi phần tử của đối tượng nhận thông điệp sẽ lần lượt truyền như là một đối số cho block và sau đó thực hiện block này.

Ví dụ: |a| a:= 0.

#(1 2 3 4 5) do: [:i| a:= a+i]. ^a

Kết quả sẽ là 15 • findFirst:

Method nhận đối số là một block có đối số. Kết quả sẽ trả về vị trí của phần tử đầu tiên trên đối tượng nhận thông điệp làm đối số có giá trị true. Nếu không có phần tử nào như vậy sẽ báo lỗi.

#(2 3 4 5) findFirst: [:i| i odd] Æ 2 (vị trí của số 3 trong dãy, là số lẻđầu tiên • findLast:

Method nhận đối số là một block có đối số. Kết quả sẽ trả về vị trí của phần tử cuối cùng trên đối tượng nhận thông điệp làm đối số có giá trị true. Nếu không có phần tử nào như vậy sẽ báo lỗi.

Ví dụ:

#(2 3 4 5) findLast: [:i| i odd] Æ 4 • first

Trả về phần tửđầu tiên của đối tượng nhận thông điệp ‘abcd’ first Æ $a

• grow

Tăng số phần tử của đối tượng nhận thông điệp • growSize

Tính số phần tử cần tăng lên dùng cho grow • includes:

Nhận đối số là một đối tượng bất kỳ. Trả về true nếu đối số bằng với một phần tử của đối tượng nhận thông điệp.

Ví dụ:

‘abcd’ includes: $b Æ true • indexOf:

Nhận đối số là một đối tượng bất kỳ. Trả về vị trí xuất hiện của đối số trong đối tượng nhận thông điệp, nếu không tìm thấy trả về 0.

Ví dụ:

‘abcd’ indexOf: $d Æ 4 • indexOfCollection:

Nhận đối số là một Collection, trả về vị trí xuất hiện của đối số trong đối tượng nhận thông điệp Ví dụ: #(1 2 3 4 5 6) indexOfCollection: #(2 3) Æ 2 • last Trả về phần tử cuối của đối tượng nhận thông điệp. Ví dụ: #(1 2 3 4 5 6) last Æ 6

Tương tự như copyFrom:to:with: nhưng có kiểm tra xem số phần tử của thông số thứ ba có thích hợp hay không.

#(2 3 4 5) replaceFrom: 1 to: 3 with: ‘ab’ Æ báo lỗi #(2 3 4 5) replaceFrom: 1 to: 3 with: ‘abc’ Æ#( $a $b $c 5)

• replaceFrom:to:with:startingAt:

Tương tự như replaceFrom:to:with: nhưng bắt đầu thay thế từ vị trí xác định trước trên Collection đối số

#(2 3 4 5) replaceFrom: 1 to: 3 with: ‘abcd’ startingAt: 2 Æ#( $b $c $d 5) • replaceFrom:to:withObject:

Nhận ba thông số là hai số nguyên start, stop và một đối tượng O. Kết quả sẽ thay tất cả các phần tử từ vị trí start đến stop của đối tượng nhận thông điệp bằng O.

Ví dụ: |a|

a:= #(2 3 4 5).

a replaceFrom: 1 to: 3 withObject: 'abcd'. ^a

Kết quả sẽ là #( 'abcd' 'abcd' 'abcd' 5) • reversed

Đảo ngược thứ tự các phần tử của đối tượng nhận thông điệp. Method này có primitive là 8001.

Ví dụ:

‘abcd’ reversed Æ ‘dcba’ • reverseDo:

Tương tự như thực hiện liên tiếp hai method reversed và do: cho đối tượng nhận thông điệp với đối số là một số nguyên. • size Trả về số phần tử trong tập hợp Ví dụ: ‘abcd’ size Æ 4 5. Lớp Context:

Lớp Context đại diện cho một khối (block) các câu lệnh. Các method được viết sẳn cho lớp Context

• value

Thực hiện các lệnh bên trong Context nhận thông điệp Ví dụ:

[4 + 5] value Æ 9 • value:

Method này nhận đối số là một đối tượng bất kỳ O. Đối tượng nhận thông điệp phải có có đối số. Đối số sẽđược gán bằng O và sau đó thực hiện các lệnh bên trong Context nhận thông điệp.

Ví dụ:

[:i| i asciiValue] value: $e Æ 101 (mã ascii của ký tự e) • whileTrue:

Method nhận thông điệp là một Context C. Công việc thực hiện như sau: giá trị của đối tượng nhận thông điệp sẽ được tính. Nếu giá trị là true thì thực hiện công việc trong C. Lặp lại công việc này cho đến khi giá trị của đối tượng nhận thông điệp là false.

|a b| a:=4. b:= 0. [a > 0] whileTrue: [b:= b+ a. a:= a - 1]. ^b Kết quả sẽ là 10. • whileFalse: Tương tự whileTrue:

Chương III. MT S K THUT LP TRÌNH CĂN BN VI LP COLLECTION TRÊN SMALLTALK - VÍ D

Một phần của tài liệu THỰC HÀNH NGÔN NGỮ LẬP TRÌNH (Trang 96 - 101)

Tải bản đầy đủ (PDF)

(103 trang)