LANGUAGE TRANSLATION

12 AEMN


NHÀ MÌNH ONLINE !

Tiến Quốc
Tố Uyên
Thuý Hằng
Linh Sương
Vũ Mai
Nguyễn Duyên
Chi Uyên
Minh Anh
Châu Tuấn
Thành Nhân
Chí Thành
Đức Thiệu

QT của thầy Văn Ngãi

danh mục nội dung web mmtt

Thống kê

  • truy cập   (chi tiết)
    trong hôm nay
  • lượt xem
    trong hôm nay
  • thành viên
  • GD

    XIN KÍNH CHÀO

    4 khách và 0 thành viên

    111

    Gốc > TRI THỨC CUỘC SỐNG - CHIA SẺ KINH NGHIỆM > LẬP TRÌNH FLASH >

    Bài 50: LỚP VÀ ĐỐI TƯỢNG

     

    Trong bài này, ta tiếp tục xem xét những khái niệm cơ bản, tạo nền tảng cần thiết cho việc xây dựng những chương trình phức tạp hơn. Trước hết, bạn cần nắm vững hai khái niệm quan trọng của ngôn ngữ ActionScript trong Flash:lớp (class) và đối tượng (object).

    Bạn đã từng tạo ra một dãy với câu lệnh như sau:

    a = new Array();

    Câu lệnh như vậy tạo nên biến a trỏ đến một đối tượng thuộc lớp Array. Người ta cũng nói rằng đối tượng ấy thuộcloại Array hoặc thuộc kiểu Array. Có khi người ta gọi đối tượng là thể hiện (instance) của lớp. "Thể hiện" hay "đối tượng" chỉ là hai cách gọi khác nhau của cùng một khái niệm.

    Trong Flash, ta đã từng dùng thuật ngữ lớp (layer). Tuy cách gọi trùng nhau nhưng layer chỉ sự phân tầng trong khiclass chỉ sự phân loại. Khi gọi "lớp", tùy theo ngữ cảnh, bạn cần hiểu đó là layer hoặc class. Ta dùng thuật ngữ "lớp" duy nhất để diễn đạt hai khái niệm khác nhau.

    Trong câu lệnh tạo dãy nêu trên, tác tử new gọi hàm Array(). Hàm Array() gọi là hàm dựng (constructor) của lớp Array. Nhiệm vụ của hàm dựng Array() là tạo nên đối tượng thuộc lớp Array.

    Khi bạn viết

    n = 100;

    biến n không phải là biến trỏ đến đối tượng. Đó là biến chứa trị số thuộc kiểu number (kiểu số).

    Bạn hãy mở tập tin FLAmới (ActionScript 2), mở bảng Actions - Frame ứng với khung 1, gõ đoạn mã ngắn như sau:

    n = 100;
    trace("n: " + typeof(n));

    Hàm typeof cho bạn biết kiểu của đối mục. Nghĩa là khi trao biến n cho hàm typeof, bạn sẽ biết kiểu của biến n. Thử chạy chương trình, bạn thu được kết quả ở bảng Output:

    n: number

    Kết quả như vậy cho thấy rõ trị số của n thuộc kiểu number. Khi muốn nhấn mạnh kiểu number không phải là lớp, ta gọi đó là kiểu cơ bản (primitive type).

    Bạn thử sửa lại chương trình hiện có như sau:

    //n = 100;
    n = new Number(100);
    trace("n: " + typeof(n));

    Nghĩa là thay vì tạo biến n chứa trị số thuộc kiểu cơ bản number, ta tạo ra biến n trỏ đến đối tượng thuộc lớp Number. Trao trị số 100 cho hàm dựng Number(), bạn có được đối tượng thuộc lớp Number chứa trị số 100. Chạy thử chương trình, bạn thu được kết quả:

    n : object

    Kết quả cho thấy rõ n trỏ đến một đối tượng. Để cho gọn, thay vì nói "đối tượng thuộc lớp Number", bạn có thể nói "đối tượng Number".

    Chắc bạn đang thắc mắc: "Tạo ra đối tượng thuộc lớp Number để làm gì?". Lớp luôn có nhiều hàm (function). Khi tạo ra đối tượng thuộc một lớp nào đó, bạn có thể gọi hàm nào đó của lớp thông qua đối tượng đang xét. Bạn hãy sửa chương trình hiện có như sau:

    //n = 100;
    n = new Number(100);
    //trace("n: " + typeof(n));
    trace("n = 0x" + n.toString(16));

    Trong câu lệnh vừa thêm, ta gọi hàm toString của lớp Number thông qua một đối tượng Number. Hàm toString trả về một chuỗi nhằm diễn đạt trị số được chứa trong đối tượng Number. Ta trao số 16 cho hàm toString nhằm tỏ ý muốn trị số trong đối tượng Number được diễn đạt ở dạng thập lục phân (hexadecimal).

    Chạy thử chương trình, bạn có kết quả:

    n = 0x64

    Trị số 64 thu được là trị số trong hệ thập lục phân, bằng 100 trong hệ thập phân (6 x 16 + 4 = 100). Trước trị số 64, ta thêm hai ký tự 0x để chỉ rõ 64 là trị số thập lục phân, chứ không phải trị số thập phân. Đây là quy ước phổ biến khi diễn đạt trị số thập lục phân. Sau này, bạn sẽ có nhiều dịp để làm việc với trị số thập lục phân, chẳng hạn khi cần diễn đạt một màu sắc nào đó.

    Để gọi hàm của một lớp, có khi bạn không cần tạo ra đối tượng thuộc lớp ấy. Bạn hãy viết thêm vào chương trình hiện có như sau:

    //n = 100;

    n = new Number(100);

    //trace("n: " + typeof(n));

    trace("n = 0x" + n.toString(16));

    trace("Căn bậc hai của n = " + Math.sqrt(n));

    Thử chạy chương trình, bạn có kết quả:

    n = 0x64
    Căn bậc hai của n = 10

    Trong câu lệnh vừa thêm vào, ta gọi hàm sqrt (square root) của lớp Math để tính căn bậc hai của n. Vì n là đối tượng Number chứa trị số 100, căn bậc hai của n là 10.

    Như bạn thấy, để gọi hàm sqrt của lớp Math, ta chỉ cần viết tên hàm sau tên lớp, phân cách bởi dấu chấm, không cần tạo ra đối tượng thuộc lớp Math. Hàm như vậy gọi là hàm lớp (class function) hoặc hàm tĩnh (static function). Không chỉ riêng hàm sqrt, hầu hết các hàm của lớp Math là hàm tĩnh vì lớp Math được tạo ra nhằm cung cấp "dịch vụ tính toán" cho bạn.


    Đỗ Thanh Dương

    Nhắn tin cho tác giả
    Trần Thị Thúy Hằng @ 16:45 08/08/2012
    Số lượt xem: 755
    Số lượt thích: 0 người
     
    Gửi ý kiến