Biến tham chiếu là một biến trỏ đến một đối tượng của một lớp nhất định, cho phép bạn truy cập giá trị của một đối tượng. Một đối tượng là một cấu trúc dữ liệu hỗn hợp chứa các giá trị mà bạn có thể thao tác. Một biến tham chiếu không lưu trữ các giá trị của chính nó. Thay vào đó, khi bạn tham chiếu biến tham chiếu, OpenROAD sẽ sử dụng các giá trị trong đối tượng tương ứng. Đối tượng được tạo thành từ các thuộc tính, có thể là biến đơn giản, biến tham chiếu hoặc biến mảng
Lớp của một đối tượng định nghĩa các thuộc tính của nó. OpenROAD bao gồm cả các lớp hệ thống và các lớp do người dùng định nghĩa
Trong mã 4GL của bạn, khi bạn tham chiếu một biến tham chiếu, bạn có thể làm việc với toàn bộ đối tượng dưới dạng một đơn vị. Ví dụ: bạn có thể truy xuất một hàng từ bảng cơ sở dữ liệu và gán tất cả các giá trị từ hàng đó cho một đối tượng, sau đó chuyển đối tượng đó cho một thủ tục được gọi. Bạn cũng có thể làm việc với các thuộc tính riêng lẻ trong đối tượng. Để biết ví dụ về từng trường hợp, xem
Làm thế nào bạn có thể khai báo các biến tham chiếu
Để khai báo một biến tham chiếu, sử dụng cú pháp sau
tên = lớp [ [với] mặc định null]
Giá trị của lớp có thể là bất kỳ lớp người dùng hoặc lớp hệ thống được đặt tên nào [để biết danh sách đầy đủ các lớp hệ thống, hãy xem trợ giúp trực tuyến của Hướng dẫn tham khảo ngôn ngữ]. Ví dụ sau khai báo một biến tham chiếu của lớp StringObject
Tất cả các biến tham chiếu là nullable
Khi bạn tạo một trường trên một biểu mẫu, bạn chỉ định tên và loại dữ liệu của biến trên trình kiểm tra thuộc tính của trường trong OpenROAD Workbench. Trừ khi bạn chỉ định khác, OpenROAD sẽ tự động khai báo biến mà bạn sử dụng để truy cập dữ liệu trong trường đó. Nếu trường là trường tổng hợp được đặt tên, chẳng hạn như trường ngăn xếp hoặc biểu mẫu con, thì biến đó là biến tham chiếu và bạn có thể hoặc không thể xác định loại dữ liệu [lớp] của nó
Nếu bạn xác định kiểu dữ liệu cho biến tham chiếu, kiểu dữ liệu phải là tên lớp hệ thống hoặc người dùng. Bạn có thể chọn loại trừ các trường đối với một số thuộc tính [điều này cung cấp một cách để giữ thông tin kiểm soát bổ sung không được hiển thị]
Nếu bạn không đặt tên cho lớp khi tạo trường tổng hợp, OpenROAD sẽ tạo một lớp không tên mà bạn chỉ có thể tham chiếu trong khung chứa trường tổng hợp
Cách bạn có thể sử dụng các biến tham chiếu
Trong OpenROAD, bạn có thể làm việc với toàn bộ đối tượng hoặc với các thuộc tính của đối tượng. Để thao tác đối tượng dưới dạng một đơn vị, hãy sử dụng tên biến tham chiếu của đối tượng trong mã 4GL của bạn
Ví dụ: bạn có thể tạo một biểu mẫu con và chỉ định lớp của biến của nó là lớp người dùng được đặt tên. Trong chương trình của bạn, sau đó bạn có thể chuyển các giá trị trong các trường biểu mẫu con sang một thủ tục đơn giản bằng cách đặt tên biến là một tham số thủ tục
Trong câu lệnh sau, khách hàng là tên của biến được liên kết với biểu mẫu con
callproc update_cust [mới = khách hàng]
Để truy cập một thuộc tính riêng lẻ thuộc về một đối tượng, hãy sử dụng ký hiệu dấu chấm
tham chiếu_tên_biến. tên_thuộc_tính
Ví dụ: giả sử rằng biểu mẫu con được mô tả trước đó chứa một trường có tên là Địa chỉ. Để tham chiếu trường đó, bạn sẽ sử dụng
Trong ví dụ sau, City và Street là các thuộc tính của lớp addr và address là một biến tham chiếu được khai báo
địa chỉ. Thành phố = 'Dallas';
x = địa chỉ. Phố;
khung gọi delete_old [địa chỉ = địa chỉ. Thành Phố];
OpenROAD kiểm tra các tham chiếu đến thuộc tính theo tên và tạo lỗi trình biên dịch nếu lớp của biến không chứa các thuộc tính đó. Ví dụ: đưa ra các khai báo sau
a = Addr;
b = Addr;
tmp_char = varchar[30] not null;
Một số tài liệu tham khảo hợp lệ sẽ là
a. Phố = tmp_char;
tmp_char = a. thành phố;
Một số tài liệu tham khảo không hợp lệ sẽ là
a. Tỉnh = tmp_char;
** because attribute 'province'
** is not defined for class 'addr' */
a = null;
a. Đường phố = tmp_char;
** null, and does not reference
** an object */
Khi bạn khai báo một biến tham chiếu mà không chỉ định null mặc định, biến đó trỏ đến một đối tượng có các thuộc tính được tự động khởi tạo với các giá trị mặc định được đưa ra trong định nghĩa của đối tượng. Tuy nhiên, bạn có thể đặt biến tham chiếu thành null. Biến tham chiếu được đặt thành null không trỏ đến bất kỳ đối tượng nào. Bất cứ khi nào tất cả các biến tham chiếu cho một đối tượng đã được chuyển hướng hoặc đặt thành null, OpenROAD sẽ giải phóng đối tượng được liên kết, chẳng hạn, với các khai báo sau
Hậu quả của việc đặt lại các biến a và b sẽ là
a = b; . Bây giờ
** cả a và b đều trỏ đến cùng một đối tượng. */
a = null; . */
** reference [b]. */
b = null. /* Đối tượng được tạo cho b được giải phóng. */
Thay vào đó, bạn có thể chỉ định null mặc định trên khai báo và một đối tượng mặc định không được tạo
Ví dụ, bạn có thể kiểm tra biến tham chiếu null bằng toán tử is null
nếu a là null thì
/* xử lý câu lệnh */
endif;
Để biết thêm thông tin về các biến tham chiếu null, hãy xem
Làm thế nào bạn có thể tạo các đối tượng cho các biến tham chiếu
Bạn có thể cần tạo một đối tượng cho một biến tham chiếu. Ví dụ: các chương trình động có thể tạo các trường hoặc biểu mẫu trong thời gian chạy bằng cách sử dụng phương thức Tạo, được xác định cho lớp Lớp. Phương thức Create trả về một đối tượng của một lớp được chỉ định
Trong ví dụ sau, biến tham chiếu a được khai báo với giá trị mặc định là null
Và một đối tượng mới được tạo cho nó
a = Addr. Tạo ra[]; . Phố = 'đường chính';
a.Street = 'main street';
a. Thành phố = 'dalas';
Để biết thêm thông tin về phương thức Tạo, hãy xem lớp Lớp. Các ví dụ về cách sử dụng phương thức Tạo được cung cấp trong "Tạo khung trong thời gian chạy" trong Hướng dẫn lập trình