Bài viết trình bày các yếu tố tạo nên tính đa hình cho đối tượng trong lập trình. Tính đa hình thường liên quan đến kiểu dữ liệu được truyền vào đối tượng và phương thức truyền tham số. Kiểu dữ liệu được thể hiện ở giao diện, phương thức truyền tham số được thể hiện ở việc nạp chồng.
KHOA HỌC CÔNG NGHỆ - ĐẠI HỌC HÙNG VƯƠNG involved in dehydration- and cold-inducible gene expression Biochem Biophys Res Commun 290:998-1009 Tamura K, Peterson D, Peterson N, Stecher G, Nei M, Kumar S 2011 MEGA5: molecular evolutionary genetics analysis using maximum likelihood, evolutionary distance, and maximum parsimony methods Mol Biol Evol 28:2731-9 10 Wind JJ, Peviani A, Snel B, Hanson J, Smeekens SC 2013 ABI4: versatile activator and repressor Trends in Plant Science 18:125-32 11 Wu GA, Prochnik S, Jenkins J, Salse J, Hellsten U, et al 2014 Sequencing of diverse mandarin, pummelo and orange genomes reveals complex history of admixture during citrus domestication Nat Biotech 32:656-62 12 Yamaguchi-Shinozaki K, Shinozaki K 2006 Transcriptional regulatory networks in cellular responses and tolerance to dehydration and cold stresses Annu Rev Plant Biol 57:781-803 13 Zhang ZW, Feng LY, Cheng J, Tang H, Xu F, et al 2013 The roles of two transcription factors, ABI4 and CBFA, in ABA and plastid signalling and stress responses Plant Mol Biol 83:445-58 SUMMARY IDENTIFICATION OF A DREB3 GENE FROM CLEMENTINE (CITRUS CLEMENTINA) BY IN SILICO METHOD Bui Thi Hai Yen, Nguyen Thi Anh, Cao Phi Bang Hung Vuong University DREB3 belong to DREB (dehydration-responsive element binding) transcription factor family which plays an important role in plants In this work, we identified a DREB3 gene in Clementine by using in silico method CclDREB3 is similarity to other DREBs belonging to A3 subgroup in many plant species The full-length genomic sequence of CclDREB3 gene includes 1050 pb This gene encodes a protein containing 349 amino acid which is weekly basic with pI value of 7.10 3D modeling structure shows that the AP2 conserved domain of CclDREB3 has a α helix and three-stranded antiparallel β sheet Keywords: Clementine, DREB3, physico-chemical properties, in silico, 3D modeling, gene dentification TÍNH ĐA HÌNH TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Nguyễn Đình Như Trường Đại học Hùng Vương TĨM TẮT Đa hình bốn tính chất đặc trưng lập trình hướng đối tượng, tính chất khó hiểu nhất, khó phân biệt lập trình Trong báo này, tập trung vào yếu tố tạo nên tính đa hình cho đối tượng lập trình Tính đa hình thường liên quan đến kiểu liệu truyền vào đối tượng phương thức truyền tham số Kiểu liệu thể giao diện, phương thức truyền tham số thể việc nạp chồng Từ khóa: Đa hình, lập trình hướng đối tượng, nạp chồng 94 KHCN (31) - 2014 KHOA HỌC CÔNG NGHỆ - ĐẠI HỌC HÙNG VƯƠNG ĐẶT VẤN ĐỀ Khi đề cập đến lập trình hướng đối tượng người ta hay nhắc đến bốn tính chất (hay gọi bốn nguyên lý) là: tính trừu tượng (Abstraction), tính kế thừa (Inheritance), tính đóng gói (Encapsulation), tính đa hình (Polymorphism) Tuy nhiên, việc nắm rõ bốn tính chất để vận dụng linh hoạt việc lập trình vào tốn phức tạp khơng đơn giản Trong đó, tính đa hình ý khó nhận biết thể lập trình Đa hình: đa nhiều, hình hình thái Đa hình nghĩa có nhiều hình thái Ở nói đến đối tượng lại có nhiều hình thái khác Chúng ta quan tâm đến việc nào, đối tượng lại có nhiều hình thái Trong thực tế, đối tượng có vai trị khác đặt vào hồn cảnh khác Ví dụ 1: Một đối tượng người X trường học đóng vai trị học sinh, sinh viên có nhiệm vụ học tập, thi cử Khi nhà lại đóng vai trò người người anh, người chị gia đình có nhiệm vụ giúp đỡ gia đình Khi chợ lại đóng vai trị người mua hàng mua, bán hàng hóa Đi làm lại đóng vai trị nhân viên có nhiệm vụ làm việc Với vai trò vậy, đối tượng X có hành vi khác phù hợp với vai trị Do vậy, ta hiểu tính đa hình đối tượng trường hợp, hồn cảnh khác nhau, đối tượng có khả thực thi hành vi, ứng xử khác Ví dụ 2: Một đội bóng đá gồm cầu thủ chơi vị trí khác nhau: tiền đạo, tiền vệ, hậu vệ, thủ mơn,… Mỗi người có cách “đá bóng” khác tùy vào vị trí lại cầu thủ hiểu đá bóng Mỗi có hiệu lệnh đá bóng cầu thủ biết phải đá Đó ví dụ người, với đối tượng (Object) lập trình sao? Liệu đối tượng có hiểu hồn cảnh khác để đưa hành vi phù hợp hay không? Việc dẫn đến thiết kế tăng cường đa hình cho đối tượng lập trình Lúc giao diện (Interface) đóng vai trị quan trọng Tính đa hình thường liên quan đến kiểu liệu (Data Type) truyền vào phương thức (Method) truyền tham số cho đối tượng Kiểu liệu thể giao diện, phương thức truyền tham số thể việc nạp chồng (Overloading) CÁC YẾU TỐ TẠO NÊN TÍNH ĐA HÌNH 2.1 Kiểu liệu Giao diện giúp ta xây dựng tính đa hình cho đối tượng Ta xét ví dụ sau: Có vật Mèo Chó, vật có hành động Kêu có tiếng kêu khác Ta xây dựng giao diện Động vật sau: Code: public interface DongVat { void Keu(); } public class Meo : DongVat { void DongVat.Keu() { KHCN (31) - 2014 95 KHOA HỌC CƠNG NGHỆ - ĐẠI HỌC HÙNG VƯƠNG } Console.WriteLine(«Meo meo »); } public class Cho : DongVat { void DongVat.Keu() { Console.WriteLine(«Gau gau »); } } class Program { static void Main(string[] args) { DongVat dv = new NewDongVat.Meo(); dv.Keu(); dv = new NewDongVat.Cho(); dv.Keu(); } } Như lớp Chó Mèo cài đặt giao diện Động vật buộc phải cài đặt hành động Kêu việc cài đặt cần tuân theo quy định không tham số, kiểu liệu trả void Bây hàm Main ta cần đoạn code sau gọi tiếng kêu tất vật: Code: static void Main(string[] args) { DongVat[] dv = { new Cho(), new Meo()}; for (int i = 0; i < dv.Length; i++) { dv[i].Keu(); } } Quay lại với ví dụ đối tượng người X, ta xây dựng giao diện tương ứng: Code: interface SinhVien { void Hoc(); void Thi(); } interface Con { void Quetnha(); void Nauan(); } interface KhachHang { void Mua(); void Ban(); } interface NhanVien 96 KHCN (31) - 2014 KHOA HỌC CÔNG NGHỆ - ĐẠI HỌC HÙNG VƯƠNG { void Lamviec(); } Như vậy, lớp (Class) cài đặt giao diện đối tượng tạo từ lớp có tính đa hình Code: class Nguoi implement SinhVien, Con, KhachHang, NhanVien { void Hoc() { //code } void Thi() { //code } void NauCom() { //code } void Mua() { //code } … } Nguoi X = new Nguoi(); Đối tượng người X tạo ra, nhiên chưa có cách thức để thực hành vi Cách thức thực lớp cài đặt quy định Với yêu cầu hình thái đối tượng, X truyền vào tương ứng Ví dụ chấp nhận đối tượng Sinh viên X truyền vào Code: class TruongHoc { void Them(SinhVien sv); { //code } } TruongHoc sv1; sv1.Them(X); Code: Khi chấp nhận đối tượng Khách hàng, X truyền vào KHCN (31) - 2014 97 KHOA HỌC CÔNG NGHỆ - ĐẠI HỌC HÙNG VƯƠNG class Cho //Chợ { void Them(KhachHang kh); { } } //code Cho kh1; kh1.Them(X); Như vậy, đối tượng X thể hồn cảnh khác đóng vai trị khác nhau, có hành vi khác X có tính đa hình 2.2 Phương thức Các liệu thị kết hợp vào đơn vị đầy đủ tạo nên đối tượng Đơn vị tương đương với chương trình đối tượng chia thành hai phận chính: phần các phương thức phần các thuộc tính Trong thực tế, các phương thức của đối tượng hàm các thuộc tính của biến, tham số hay nội đối tượng Các phương thức là phương tiện để sử dụng đối tượng các thuộc tính sẽ mơ tả đối tượng có tính chất Ở ta quan tâm tới phương thức nên đề cập tới yếu tố để xác định phương thức Đầu tiên yếu tố tên (Name), đương nhiên tên khác xác định phương thức khác (mặc dù hai phương thức có cấu trúc nhau) Code: interface SinhVien { void Hoc(); void Thi(); } Tiếp đến tham số truyền vào (Parameter), tham số truyền vào khác (không phải giá trị tham số khác nhau) dẫn đến phương thức khác Có dạng khác truyền tham số vào: a Hai phương thức tên phương thức có tham số truyền vào, phương thức có tham số truyền vào thì dẫn đến phương thức khác Đó khác số lượng tham số truyền vào Ví dụ: Code: void Hoc(string a, string b, string c); void Hoc(string a, string b, string c, string d); b Hai phương thức tên, số lượng tham số khơng giống kiểu liệu dẫn đến phương thức khác Đây khác kiểu liệu tham số truyền vào Ví dụ: 98 KHCN (31) - 2014 KHOA HỌC CÔNG NGHỆ - ĐẠI HỌC HÙNG VƯƠNG Code: void Hoc(int a, int b, int c); void Hoc(string a, string b, string c); Hoặc Code: Overload x1 = new Overload(5); Overload x2 = new Overload((byte)5); c Hai phương thức tên, số lượng tham số, kiểu liệu thứ tự truyền tham số khác dẫn đến phương thức khác (Lưu ý phương thức phải có tối thiểu tham số trở lên có phân biệt này) Đây khác thứ tự tham số truyền vào Code: Ví dụ: void Hoc(string a, int b); void Hoc(in a, string b); Việc khai báo lớp nhiều phương thức có tên khác tham số (khác kiểu liệu, khác số lượng tham số, khác thứ tự truyền tham số) gọi khai báo chồng phương thức hay gọi nạp chồng Nạp chồng kiểu đa hình đối tượng thể hành vi khác tùy thuộc tham số đầu vào KẾT LUẬN Bài báo minh họa phân tích yếu tố tạo nên tính đa hình cho đối tượng lập trình, cụ thể là: kiểu liệu truyền vào phương thức truyền tham số cho đối tượng Từ yếu tố trên, ta tăng cường tính đa hình thiết kế chương trình giúp cho việc thể hình thái đối tượng phong phú hơn, toàn diện Tài liệu tham khảo Phạm Văn Ất (2005), C++ Lập trình hướng đối tượng, Nhà xuất Giao thông vận tải Trần Đức Quang (2005), Lập Trình Hướng Đối Tượng - Những Khái Niệm Chung, Nhà xuất Thống kê SUMMARY POLYMORPHISM IN OBJECT-ORIENTED PROGRAMMING Nguyen Dinh Nhu Hung Vuong University Polymorphism is one of the four characteristics of object-oriented programming, it is also the most confusing characteristic, difficult to distinguish in programming In this paper, I focus on the elements that create the polymorphism of object in programming Polymorphism is often related to the data type to be transmitted into the object and the method to transmit parameters Data type is shown in the interface, the method to transmit parameters is shown in the overloading Keyword: Polymorphism, Object-oriented Programming, Overloading KHCN (31) - 2014 99 ... bốn tính chất để vận dụng linh hoạt việc lập trình vào tốn phức tạp khơng đơn giản Trong đó, tính đa hình ý khó nhận biết thể lập trình Đa hình: đa nhiều, hình hình thái Đa hình nghĩa có nhiều hình. .. lập trình hướng đối tượng người ta hay nhắc đến bốn tính chất (hay cịn gọi bốn ngun lý) là: tính trừu tượng (Abstraction), tính kế thừa (Inheritance), tính đóng gói (Encapsulation), tính đa hình. .. dụ người, với đối tượng (Object) lập trình sao? Liệu đối tượng có hiểu hồn cảnh khác để đưa hành vi phù hợp hay không? Việc dẫn đến thiết kế tăng cường đa hình cho đối tượng lập trình Lúc giao