[Ngôn ngữ Avenue #1] Giới thiệu ngôn ngữ Avenue

0
4566

Cùng với sự ra đời của phần mềm ArcView, các nhà phát triển phần mềm ArcView đã tích hợp trong nó một ngôn ngữ lập trình Avenue đi kèm. Tuy nền tảng phát triển đều dựa trên các thành phần xây dựng sẵn bên trong ArcView, nhưng với sự hỗ trợ của ngôn ngữ lập trình Avenue, những người khai thác phần mềm ArcView không còn lệ thuộc hoàn toàn vào các công cụ có sẵn trong phần mềm ArcView nữa, Avenue cho phép đem các thành phần có sẵn này xây dựng nên các công cụ hỗ trợ khác nhau.

Những người khai thác phần mềm ArcView có thể áp dụng nó trong các lĩnh vực khác nhau, ở các quốc gia khác nhau. Với các thành phần có sẵn, khi ta làm việc với ngôn ngữ lập trình Avenue trong ArcView ta không cần biết bằng cách nào người ta đã xây dựng và hiện thực nên các thành phần có sẵn trong ArcView, mà chỉ cần biết các thành phần này có những chức năng gì, hoạt động như thế nào là có thể đem các thành phần này lắp ráp lại với nhau tạo nên một ứng dụng theo ý muốn.

Ngôn ngữ lập trình Avenue dễ học và dễ sử dụng, những người có kiến thức căn bản về tin học và biết sử dụng ArcView đều có thể tiếp cận được ngôn ngữ lập trình này.

Ngôn ngữ avenue là gì ?

2. CÁC ĐẶC ĐIỂM CỦA NGÔN NGỮ AVENUE

  • Ngôn ngữ lập trình Avenue là ngôn ngữ kịch bản (script) hướng đối tượng
  • Ngôn ngữ lập trình Avenue không có tính nhạy cảm.
  • Ngôn ngữ lập trình Avenue là ngôn ngữ biên dịch.
  • Ngôn ngữ lập trình Avenue không hỗ trợ đệ quy.
  • Ngôn ngữ lập trình Avenue không cho phép tạo mới hay sửa đổi các lớp có sẵn trong ArcView.
  • Các kịch bản Avenue không thể thực thi bên ngoài ArcView.
  • Các biểu thức trong Avenue thực thi theo chiều từ trái qua phải và không có độ ưu tiên toán tử.

3. GIAO DIỆN LẬP TRÌNH AVENUE

Giao diện lập trình Avenue nằm trong Project của ArcView.
Để mở giao diện này, ta theo các bước sau.

Mở ArcView -> Chọn Script -> Nhấn vào nút New để tạo mới một Script. Script mới tạo có tên ngẫu nhiên là script.

Muốn đổi tên của Script này ta vào menu Script, trong hộp thoại này gõ vào tên script mới trong trường name.

Trong một project ta có thể tạo ra nhiều script khác nhau.

 

B.LỚP VÀ ĐỐI TƯỢNG

1. ĐỐI TƯỢNG

Đối tượng được xem như sự vật hay hiện tượng mà nó gồm có thuộc tính, các hành động (hay còn gọi là hành vi) và trạng thái hiện thời của nó. Trong thế giới xung quanh ta tồn tại rất nhiều đối tượng khác nhau, ví dụ, một chiếc xe hơi là một đối tượng mà các thuộc tính của nó bao gồm: nhãn hiệu, mẫu mã, màu sắc, số lượng cửa…, chiếc xe hơi này cũng có các hành động hay các tác động mà ta có thể tác động lên nó: khởi động, dừng, quay trái, quay phải…, trạng thái hiện thời của xe có thể là: đang khởi động, đang đi hay đang dừng.

 Thường thì một đối tượng có các mối quan hệ với các đối tượng khác.
  • Một đối tượng có thể là sự kết hợp của nhiều đối tượng: Chẳng hạn, chiếc xe gồm có nhiếu đối tượng gộp bên trong nó như một chiếc radio, một bánh lái, một số chỗ ngồi, …
  • Một đối tượng có thể sử dụng các đối tượng khác: Xe hơi sử dụng nhiên liệu để di chuyển.
  • Một đối tượng có thể kết hợp với các đối tượng khác: Xe hơi đi dọc theo đại lộ.
Trong ArcView, mọi thứ đều được xem là đối tượng, khi ta mở một khung nhìn (view), khung nhìn đó được gọi là đối tượng khung nhìn, khi ta thêm một theme mới vào khung nhìn, theme đó được gọi là đối tượng theme.

2. LỚP

Các đối tượng có chung các đặc tính được nhóm chung lại với nhau ta gọi là lớp. Một lớp xác định các thuộc tính và hành vi cho một kiểu đối tượng xác định. Tất cả các đối tượng trong cùng một lớp đều có cùng các thuộc tính. Các đối tượng được tạo ra từ cùng một lớp được gọi là thực thể của lớp đó.

Trong hình trên, xe Toyota và xe Benz là các thực thể của lớp xe hơi, hai chiếc xe hơi này có thuộc tính (số bánh xe, số cánh cửa , … ). Trong ArcView, khung nhìn 1, khung nhìn 2, khung nhìn 3 là các thực thể của lớp khung nhìn.
Giữa các lớp có mối quan hệ với nhau. Có 3 mối quan hệ chính.
  • Mối quan hệ thừa kế (inheritance)
  • Mối quan hệ gộp (aggregation)
  • Mối quan hệ kết hợp (association)
Trong ArcView mối quan hệ giữa các lớp được biễu diễn thông qua lược đồ mô hình đối tượng. Để có thể lập trình tốt, người lập trình phải biết cách đọc và hiểu được các lược đồ mô hình đối tượng này.

Mối quan hệ thừa kế

Mối quan hệ thừa kế là mối quan hệ dạng “là một loại của”. Ở hình dưới, xe Sedan là một loại của xe hơi. Lớp xe hơi được gọi là lớp cha, các lớp Sedan, Convertible, Wagon được gọi là các lớp con, lớp cha định nghĩa tất cả các thuộc tính chung mà các xe hơi đều có. Lớp cha cho phép các lớp con thừa kế lại các thuộc tính của nó. Ở lớp con, bản thân mỗi lớp con cũng có thuộc tính riêng của nó, chẳng hạn lớp xe Sandan có thuộc tính mà lớp xe Wagon không có.

Trong lược đồ mô hình đối tượng, mối quan hệ thừa kế được ký hiệu bằng mũi tên có dấu tam giác trắng rỗng:

Mối quan hệ gộp

Mối quan hệ gộp là mối quan hệ dạng “là kết hợp của”. Ở hình dưới, một chiếc xe hơi là kết hợp của một động cơ, bốn bánh xe, một radio, và một số chỗ ngồi… Mối quan hệ gộp là mối quan hệ một chiều. Một radio là một thành phần của một chiếc xe hơi, không có trường hợp một chiếc xe hơi là một thành phần của radio.

Trong lược đồ mô hình đối tượng, mổi quan hệ gộp được biễu diễn bằng mũi tên có đầu hình thoi trắng rỗng.

Mối quan hệ kết hợp

Mối quan hệ kết hợp diễn tả về mặt vật lý hay ý niệm giữa các lớp. Ví dụ: Xe hơi chạy trên đại lộ, xe hơi được lái bởi người lái xe.

Lược đồ mô hình đối tượng cũng thể hiện số lượng thực thể trong lớp này liên quan tới số lượng thực thể trong lớp khác. Đường đơn có ý nghĩa chỉ có một, hình tròn tô đen có ý nghĩa không hoặc nhiều, hình tròn rỗng trắng có ý nghĩ không hoặc một.Ví dụ về một lược đồ mô hình đối tượng trong ArcView

Ta đọc lược đồ này như sau:
  • Lớp View là lớp con của lớp Doc, do đó lớp View sẽ thừa kế được những thuộc tính từ lớp Doc.
  • Lớp View có quan hệ kết hợp với lớp Prj, một lớp MapDisplay, lớp GraphicList, lớp DocumentExtension và lớp TOC.
  • Lớp View có quan hệ gộp với lớp Theme hay nói cách khác lớp View là kết hợp của lớp Theme, một View có nhiều hoặc không có Theme nào.
  • Lớp GraphicList kết hợp với lớp Graphic, GraphicSet.
  • Lớp GraphicList kết hợp với không hay nhiều lớp GraphicSet.
  • Lớp Theme kết hợp với lớp GraphicSet, lớp Legend, lớp Threshold.
  • Các lớp FTheme, ITheme, DBTheme, GTheme là các lớp con của lớp Theme. Các lớp FTheme, ITheme, DBTheme, GTheme thừa kế các thuộn tính từ lớp Theme.
  • Lớp Legend là kết hợp của lớp TOC, một TOC có không hay nhiều Legend.
  • Lớp Legend kết hợp với lớp LegendExtension.

3. YÊU CẦU VÀ CÁCH GỌI YÊU CẦU TRONG AVENUE

Mọi thứ diễn ra trong ArcView đều thông qua yêu cầu. Khi ta thêm mới một theme vào khung nhìn ta đã gửi một yêu cầu tạo mới theme, khi ta lấy thông tin từ một đối tượng chẳng hạn lấy tên của khung nhìn, ta đã gửi một yêu cầu lấy tên của khung nhìn, khi ta đổi tên của khung nhìn ta đã gửi một yêu cầu đổi tên của khung nhìn.

Trong ArcView có hai dạng yêu cầu:

  • Yêu cầu thực thể: là loại yêu cầu này được gửi tới thực thể của lớp, ví dụ ta gửi một yêu cầu tới đối tượng theme để hiển thị hay che dấu theme này.
  • Yêu cầu lớp: Là loại yêu cầu ta gửi trực tiếp tới lớp, ví dụ ta gửi một yêu cầu tạo mới theme tới lớp theme để tạo mới một theme.
Các lớp khác nhau cung cấp các yêu cầu khác nhau. Ví dụ ta có thể gửi yêu cầu phóng to tới đối tượng khung nhìn, nhưng khi gửi yêu cầu phóng to tới đối tượng bảng thì sẽ bị báo lỗi, lý do là lớp bảng không có yêu cầu này.
Đôi khi với các lớp khác nhau nhưng có các yêu cầu cùng tên, hiện tượng này trong lập trình hướng đối tượng ta gọi là tính đa hình. Về bản chất thì các yêu cầu cùng tên nhưng ở các lớp khác nhau thì chúng cư xử khác nhau. Ví dụ, đối với lớp theme ta có yêu cầu Make để tạo mới một đối tượng theme, lớp Table ta cũng có yêu cầu Make để tạo mới một đối tượng bảng, nhưng kết quả trả về của hai yêu cầu này là khác nhau, một bên trả về một theme mới, một bên trả về một bảng mới.
Trong ArcView tên của yêu cầu thường bắt đầu là một động từ, chữ cái đầu được viết hoa. Ví dụ: GetProject, FindScript, AddDoc, SetValue, trong đó Get, Find, Add, Set chỉ các hành động, Project, Script, Doc, Value nhận các hành động này.

Các động từ bắt đầu của các yêu cầu dùng trong ngôn ngữ Avenue được trình bày trong bảng sau.

Gởi yêu cầu tới một đối tượng để thực hiện một hành động nào đó ta viết như sau.
Object.Request
Trong đó Object là đối tượng mà ta cần gửi yêu cầu tới, Request là yêu cầu mà ta cần gửi tới đối tượng Object.
Ví dụ: Tạo mới một khung nhìn
View.Make
Cũng có thể kết quả trả về của một yêu cầu là một đối tượng, với đối tượng vừa trả về ta cũng có thể gửi yêu cầu tới nó
Ví dụ
av.GetActiveDoc.GetGUI
Ví dụ ta cần tìm theme có tên là dgt.shp trong khung nhìn có tên là “Ban do Dong Thap” ta phải viết như sau:
av.FindDoc(“Ban do Dong Thap”).FindTheme(“dgt.shp”)
Viết được câu lệnh này là do ta hiểu được sơ đồ phân cấp lớp trong ArcView, muốn tìm một Theme thì ta phải biết theme đó nằm trong khung nhìn(view) nào, do nó nằm trong khung nhìn là Ban do Dong Thap nên ta tìm khung nhìn có tên “Ban do Dong Thap”, sau đó mới đi tìm theme dgt.shp trong khung nhìn này.
Trong Avenue có hàng ngàn lớp và yêu cầu khác nhau, người lập trình không cần phải nhớ hết tất cả các lớp và yêu cầu, điều quan trọng là người lập trình tìm đúng đến lớp và yêu cầu cần dùng. Trong khuôn khổ cuốn sách này chúng tôi cũng không trình bày hết tất cả các lớp và yêu cầu trong ArcView mà chỉ trình bày những lớp và yêu cầu quan trọng hay dùng, còn các lớp và các yêu cầu khác người lập trình có thể tìm kiếm dễ dàng trong phần trợ giúp của ArcView.
Nguồn:”Bài giảng Lập trình Avenue – GV Nguyễn Văn Xanh – Đại học công nghệ thông tin”
Previous articleChuyên đề lập trình GIS với AVENUE
Next article[Ngôn ngữ Avenue #2]Cấu trúc ngôn ngữ Avenue

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.