2012-06-21 15 views
6

Ai đó có thể giải thích cách tổ chức các lớp học trong Pharo hoạt động trong các phiên bản Pharo khác nhau?Tổ chức các lớp học trong các chuyên mục và các gói hoạt động như thế nào trong các phiên bản Pharo khác nhau?

  • Tất cả các lớp học là một phần của Smalltalk toàn cầu (luôn, dường như ở lại như thế này?)
  • Lớp học có thể có một loại, nhưng thats chỉ là một loại thẻ? (Luôn luôn là, dường như ở lại như thế này? Nhưng các chuyên mục được bằng cách nào đó ánh xạ tới các gói đôi khi?)
  • Có nhiều loại khác nhau của các gói trong các phiên bản khác nhau của Pharo
    • MCPackages đại diện Monticello Gói
    • PackageInfo
    • RPackage (Pharo 1.4)?

Ngoài ra còn có SystemNavigation mà bằng cách nào đó giúp các lớp học định hướng và phương pháp dựa trên một số những điều trên cấu trúc đề cập?

+0

Có lẽ ai đó có thể thêm thẻ Monticello. Tôi đã thử, nhưng tôi không có quyền làm điều này. –

Trả lời

5

Lớp

Thực tế là các lớp học là chìa khóa trong Smalltalk toàn cầu là một chi tiết thực hiện. Miễn là có một không gian tên chung duy nhất cho tên lớp, có khả năng là việc triển khai sẽ vẫn như cũ.

Lớp Categories

Phạm trù lớp rất giống như một thẻ. Một lớp chỉ có thể ở trong một danh mục tại một thời điểm. Ban đầu danh mục lớp đã được sử dụng bởi Browser để tổ chức các lớp học trong hệ thống.

Khi Monticello đã được tạo ra, các loại lớp được quá tải để cũng cho thấy thành viên trong một gói Monticello các MCPackagePackageInfo lớp được tạo ra để quản lý bản đồ này.

PackageInfo thực hiện tất cả việc nâng hạng nặng: tìm các lớp và phương thức rời thuộc về gói.

MCPackage là trình bao bọc cụ thể Monticello cho PackageInfo bổ sung một số giao thức không nhất thiết phải phù hợp với tổng quát hơn PackageInfo.

Gói

Quá tải các loại lớp cho thành viên gói là một thủ thuật gọn gàng để dễ dàng áp dụng các Monticello (công cụ phát triển hiện tại không cần phải được dạy Monticello), tuy nhiên, nó vẫn là một thủ thuật . Chưa kể thực tế là việc triển khai PackageInfo không hiệu quả lắm.

RPackage được tạo để giải quyết các vấn đề về hiệu suất của PackageInfo và được sử dụng như một phần của thế hệ công cụ phát triển tiếp theo.

Cả hai triển khai gói sẽ tiếp tục tồn tại cho đến khi PackageInfo có thể được loại bỏ.

SystemNavigation

Như Frank nói,

SystemNavigation là một lớp học đó, như tên gọi của nó cho thấy, cho phép dễ dàng truy vấn của một số thứ khác nhau: các lớp trong hình ảnh, người gửi, người triển khai, thông tin về các gói được tải trong hình ảnh v.v.

+0

Mối quan hệ giữa "gói Monticello" và MCPackage là gì? Bằng cái tên tôi cho rằng chúng là một và giống nhau. –

+1

Gói Monticello là một tệp có phần mở rộng '.mcz'. MCPackage là một thể hiện trong hình ảnh đại diện cho gói đó. –

+0

Cảm ơn bạn, tôi đã cập nhật câu hỏi của mình cho phù hợp. Vậy MCPackage và PackageInfo hoặc MCPackage và RPackage có liên quan như thế nào? Hay họ chỉ sống cạnh nhau? –

4

Các lớp học, tại thời điểm này ít nhất, các phím trong từ điển Smalltalk.

PackageInfo chứa thông tin về nhóm các lớp và tiện ích mở rộng cho các gói khác.

Gói Monticello chứa đơn vị mã có thể triển khai. Thông thường một trong số này sẽ tương ứng với một phiên bản PackageInfo. (Ví dụ, nhấn nút "+ Package" trong trình duyệt Monticello sẽ tạo một trong các gói này). Gói Monticello có thể chứa các kịch bản tải trước và tải sau, do đó hai lớp thực hiện các chức năng riêng biệt, nếu có liên quan.

SystemNavigation là một lớp học, cho phép dễ dàng truy vấn một số thứ khác nhau: các lớp trong hình ảnh, người gửi, người triển khai, thông tin về các gói được tải trong hình ảnh v.v.