Các phương thức có thểđược khai báo là các phương thức primitive. Mỗi phương thức primitive sẽ có một số nguyên tương ứng với chỉ số primitive. Mỗi số nguyên này sẽ tương ứng với một đoạn mã C++ được che giấu. Khi phương thức thực thi, đoạn mã C++ này sẽ được thực thi trước, nếu thực thi thành công, thì kết quả của đoạn mã C++ này sẽ cho ta kết quả của phương thức, ngược lại thì phần kịch bản viết bằng ngôn ngữ Smalltalk sẽđược thực hiện. Smalltalk đã cung cấp sẳn một số các đoạn mã C++ tương ứng với các số primitive (xem phụ lục).
Ví dụ về một instance phương thức có phần khai báo primitive của lớp Integer + aNumber
"Answer the sum of the receiver and aNumber." <primitive: 21>
^aNumber + self
8. Khái niệm về MetaClass - Sử dụng MetaClass - Lập trình OOP động (dynamic) với Smalltalk với Smalltalk
MetaClass là một khái niệm đặc biệt về lập trình OOP trên Smalltalk. MetaClass là một lớp các đối tượng, tuy nhiên mỗi đối tượng này lại tương ứng với một lớp các đối tượng khác. Như vậy bản thân lớp MetaClass cũng là một đối tượng trong chính lớp này.
Một đối tượng thuộc lớp MetaClass có thể biểu diễn bằng một hằng theo ký tự, là một chuỗi ký tự tương ứng với tên một lớp, hoặc có thể tạo ra bằng cách khởi động một đối tượng và tương ứng nó với tên một lớp bằng phương thức setName:
Do mỗi đối tượng trong lớp MetaClass đều tương ứng với tên một lớp, nên nó có thể trả lời các thông điệp mà lớp tương ứng với nó có thể trả lời, ngòai các phương thức được xây dựng sẳn trên lớp MetaClass. Chính vì vậy, khi ta thêm một phương thức lớp cho một lớp, thì điều đó cũng tương đương với việc ta thêm một phương thức riêng (instance method) cho lớp MetaClass (!). Phương thức riêng này sẽđược thêm vào tựđộng và có chú thích “Automatical generated”
Khi sử dụng các đối tượng thuộc lớp MetaClass, người sử dụng có thể tùy ý thay đổi, thêm vào các thành phần mới cho lớp tương ứng với các đối tượng, cũng như có thể thêm vào
các lớp mới, hoặc truy xuất được các thông tin về sự liên quan giữa các lớp trên cây các lớp. Tóm lại, nội dung của cây các lớp có thểđược truy xuất và thay đổi trong lúc kịch bản đang được thực thi. Điều này làm cho lập trình OOP trên Smalltalk có tính chất động, tức là nội dung của các lớp và mối quan hệ giữa chúng có thểđược thay đổi trong lúc đang thực thi kịch bản. Đây là một tính chất mà một số các ngôn ngữ OOP như C++, Java, Delphi… không có được.
9. Các lớp đặc biệt: Compiler, Window, ViewManager, Prompter...
Compiler đại diện cho một compiler engine. Sử dụng compiler, lập trình viên có thể yêu cầu chương trình biên dịch lại một đoạn mã được chuẩn bị sẳn hoặc được soạn ra ngay lúc kịch bản đang thực thi. Đây là một cách khác để thay đổi nội dung cây các lớp của Smalltalk động (trong lúc thực thi).
Các lớp còn lại như lớp Window, ViewManager, Prompter... thường được sử dụng trong việc trao đổi (nhập/ xuất) các thông tin giữa chương trình và người sử dụng.
I.3 Một số kỹ thuật lập trình căn bản trên Smalltalk