Yêu cầu mọi thông tin sao chép từ blog này phải được ghi rõ đầy đủ: Thông tin được sao chép từ "http://www.dangngochoangthanh.blogspot.com".

Cool wallpaper http://www.fancymessage.com

EMOJI KEYBOARD PRO http://emojiselector.com

THƯ VIỆN HÌNH ĐỘNG FLASH ANIMATION: http://flashanimationlibrary.blogspot.ru/

Hệ thống học trực tuyến đang được phát triển và sẽ đưa vào sử dụng vào cuối năm nay. Hãy xem qua một số demo của Học Trực Tuyến.


HỌC TRỰC TUYẾN ĐÃ CUNG CẤP PHIÊN BẢN TRUY CẬP QUA MOBILE http://dangngochoangthanh.blogspot.com/?m=1

XEM KÊNH HỌC TRỰC TUYẾN TRÊN YOUTUBE



Search on This Blog

Thursday, September 23, 2010

5.6.1. Xây dựng lớp

Hàm được xây dựng dựa theo cú pháp sau đây

public class Tên_class{
//Khai báo thuộc tính của lớp
//Phương thức khởi tạo
//Phương thức getter và setter
//Các phương thức khác
}

Trong đó, class là từ khóa bắt buộc khi dùng để khai báo lớp. Một lớp đối tượng bao gồm các phương thức và thuộc tính của nó. Các thuộc tính bao gồm các tính chất mô tả đối tượng. Các phương thức giúp đối tượng thực thi hành động của mình. Khi khởi tạo một đối tượng, thông thường ta sẽ xây dựng một hàm tạo hoặc sử dụng phương thức setter để khởi gán giá trị cho đối tượng. Phương thức getter giúp ta nhận được các giá trị từ các thuộc tính của đối tượng.

Ví dụ sau đây mô tả việc xây dựng một lớp có tên là SinhViên.
Ví dụ
public class SinhVien{
private var ten:String;
private var tuoi:uint;
public function SinhVien(ten:String, tuoi:uint){
this.ten = ten;
this.tuoi = tuoi;
}
public function toString():String{
return “Tôi là: “+ten+”, “+tuoi+” tuổi.”;
}
}

Trong ví dụ này, bạn lưu ý rằng phương thức và thuộc tính đều được khai báo chỉ định là public, protected và private. Với từ khóa private thì thuộc tính và phương thức chỉ cho phép truy cập bởi các phương thức nội tại của lớp đó. Ngược lại, với từ khóa protected thì phạm vi truy xuất là tất cả các lớp trong cùng một package. Với public thì phạm vi truy xuất là tất cả các lớp dù là trong hay ngoài package.
Với class có các từ khóa chỉ định sau:
- dynamic: các thuộc tính có thể được bổ sung vào trong thể hiện lớp tại thời điểm runtime.
- internal: có thể được nhìn thấy trong cùng một package.
- final: không cho phép thừa kế.
- public: có thể được nhìn thấy bất kì đâu.
Tính thừa kế
AS cũng là ngôn ngữ đơn thừa kế, nghĩa là một lớp chỉ có thể thừa kế từ một lớp cơ sở. Để thể hiện tính thừa kế, AS cung cấp cho ta từ khóa extends. Khi thực thi tính kế thừa, lớp cơ sở hoặc không chứa hàm tạo hoặc chứa hàm tạo mặc định (hàm tạo không đối số).
Ví dụ sau đây sẽ minh họa cho tính thừa kế. Lớp Human có hai thuộc tính là tên và tuổi. Lớp SinhVien kế thừa từ lớp Human này, nó bổ sung thêm thuộc tính ids. Phương thức toString trong lớp SinhVien ghi chồng lên phương thức toString của lớp cơ sở Human nhờ từ khóa override.
Ví dụ
//Lớp cơ sở Human
public class Human{
                        protected var ten:String;
                        protected var tuoi:uint;
                        public function toStrings():String{
                                    return "Tôi là: "+ten+", "+tuoi+" tuổi.";
                        }
            }
//Lớp thừa kế SinhVien
public class SinhVien extends Human{
                        private var ids:int;
                        public function SinhVien(ten:String, tuoi:uint, ids:int) {
                                    this.ten = ten;
                                    this.tuoi = tuoi;
                                    this.ids = ids;
                        }
                        override public function toString():String{
                                    return this.ten+", "+this.tuoi+", "+this.ids;
                        }
}

Giao diện interface
Dù tính đơn thừa kế phản ánh đúng với thực tế của mỗi thực thể, tuy nhiên tính đa thừa kế mang lại cho ta sức mạnh trong lập trình hướng đối tượng. Do vậy, cũng như đa số ngôn ngữ lập trình đơn thừa kế khác, AS cũng bổ sung khái niệm giao diện – interface. Tuy nhiên, theo định nghĩa của giao diện trong các ngôn ngữ lập trình hướng đối tượng khác, nó là một lớp abstract hoàn hảo (abstract hoàn toàn), còn trong AS dường như ta cần thay đổi khái niệm này. Sở dĩ như vậy, vì trong AS không hỗ trợ lớp abstract. Ta có thể hiểu giao diện trong AS như sau: giao diện là một lớp chỉ chứa khai báo phương thức, không chứa thuộc tính. Một lớp chỉ thừa kế một lớp cơ sở, nhưng nó có thể thực thi nhiều giao diện.
Ví dụ sau đây sẽ minh họa việc tạo hai giao diện là Animal và Meo. Lớp MeoDen sẽ thực thi hai giao diện này.
Ví dụ
//Giao diện Animal
public interface Animal {
                        function Go():void;
                        function Eat():void;
}
//Giao diện Meo
public interface Meo {
                        function Sound():void;
}
//Lớp MeoDen thực thi hai giao diện Animal và Meo
public class MeoDen implements Animal, Meo{
                        public function MeoDen() {
                                    trace("Tôi là Mèo đen.");
                        }
                        public function Go():void{
                                    trace("Tôi đi !");
                        }
                        public function Eat():void{
                                    trace("Tôi ăn !");
                        }
                        public function Sound():void{
                                    trace("Tôi kêu !");
                        }
}

No comments:

Post a Comment