1. Trang chủ
  2. » Công Nghệ Thông Tin

Tính đa hình trong lập trình hướng đối tượng

6 36 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 284,28 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.

Trang 1

involved in dehydration- and cold-inducible gene expression Biochem Biophys Res Commun

290:998-1009

9 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.

Nguyễn Đình Như

Trường Đại học Hùng Vương

TÓM TẮT

Đa hình là một trong bốn tính chất đặc trưng của lập trình hướng đối tượng, đây cũng chính là tính chất khó hiểu nhất, khó phân biệt trong khi lập trình Trong bài báo này, tôi tập trung vào 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.

Từ khóa: Đa hình, lập trình hướng đối tượng, nạp chồng.

TÍNH ĐA HÌNH TRONG LẬP TRÌNH

HƯỚNG ĐỐI TƯỢNG

Trang 2

1 ĐẶ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 căn bản (hay còn gọi là 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õ cả bốn tính chất này để vận dụng linh hoạt trong việc lập trình vào các bài toán phức tạp là không hề đơn giản Trong đó, tính đa hình ít được chú ý hơn vì nó khó nhận biết và ít được thể hiện trong lập trình

Đa hình: đa là nhiều, hình là hình thái Đa hình nghĩa là có nhiều hình thái Ở đây đang nói đến một đối tượng nhưng lại có nhiều hình thái khác nhau Chúng ta quan tâm đến việc khi nào, tại sao đối tượng đó lại có nhiều hình thái

Trong thực tế, một đối tượng có thể có những vai trò khác nhau khi đặt vào những hoàn cảnh khác nhau Ví dụ 1: Một đối tượng người là X khi ở trường học sẽ đóng vai trò là học sinh, sinh viên

có nhiệm vụ là học tập, thi cử Khi về nhà lại đóng vai trò là một người con hoặc người anh, người chị trong gia đình có nhiệm vụ giúp đỡ gia đình Khi ra chợ lại đóng vai trò là người mua hàng và

có thể mua, bán hàng hóa Đi làm lại đóng vai trò là nhân viên có nhiệm vụ làm việc Với mỗi vai trò như vậy, đối tượng X sẽ có những hành vi khác nhau phù hợp với từng vai trò của mình Do vậy, ta có thể hiểu tính đa hình của đối tượng là trong từng trường hợp, hoàn cảnh khác nhau, đối tượng có khả năng thực thi các hành vi, ứng xử khác nhau

Ví dụ 2: Một đội bóng đá gồm các cầu thủ chơi ở những 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 nhau tùy vào vị trí của mình nhưng chung quy lại thì các cầu thủ đều hiểu được thế nào là đá bóng Mỗi khi có hiệu lệnh đá bóng thì các cầu thủ đều biết phải đá như thế nào

Đó là các ví dụ đối với con người, còn với các đối tượng (Object) trong lập trình thì sao? Liệu các đối tượng có hiểu những hoàn cảnh khác nhau của mình để đưa ra các hành vi phù hợp hay không? Việc này sẽ dẫn đến những thiết kế tăng cường sự đa hình cho các đối tượng khi lập trình Lúc này giao diện (Interface) sẽ đóng vai trò quan trọng

Tính đa hình thường liên quan đến kiểu dữ liệu (Data Type) được truyền vào và phương thức (Method) truyền tham số cho đối tượng 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 (Overloading)

2 CÁC YẾU TỐ TẠO NÊN TÍNH ĐA HÌNH

2.1 Kiểu dữ liệu

Giao diện giúp ta xây dựng được tính đa hình cho đối tượng

Ta xét ví dụ sau: Có 2 con vật là Mèo và Chó, 2 con vật này đều có hành động là Kêu nhưng

ở mỗi con thì có tiếng kêu khác nhau Ta xây dựng một giao diện Động vật như sau:

Code:

public interface DongVat

{

void Keu();

}

public class Meo : DongVat

{

void DongVat.Keu()

{

Trang 3

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ư vậy 2 lớp Chó và Mèo khi cài đặt giao diện Động vật thì buộc phải cài đặt hành động là Kêu và việc cài đặt cần tuân theo quy định là không tham số, kiểu dữ liệu trả về là void Bây giờ trên hàm Main ta chỉ cần một đoạn code sau là đã gọi được tiếng kêu của tất cả các con 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ụ 1 về đối tượng người X, ta xây dựng 4 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

Trang 4

void Lamviec();

}

Như vậy, nếu một lớp (Class) cài đặt 4 giao diện trên thì các đối tượng tạo ra từ lớp này sẽ

có đượ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 đã được tạo ra, tuy nhiên chưa có cách thức để thực hiện hành vi Cách thức thực hiện sẽ do chính lớp cài đặt quy định Với mỗi yêu cầu về hình thái của đối tượng, X sẽ được truyền vào tương ứng Ví dụ chỉ chấp nhận đối tượng là Sinh viên thì khi đó X sẽ được truyền vào

Code:

class TruongHoc

{

void Them(SinhVien sv);

{

}

}

TruongHoc sv1;

sv1.Them(X);

Khi chỉ chấp nhận đối tượng là Khách hàng, khi đó X được truyền vào

Code:

Trang 5

{

void Them(KhachHang kh);

{

}

}

Cho kh1;

kh1.Them(X);

Như vậy, đối tượng X đã thể hiện được trong những hoàn cảnh khác nhau thì đóng vai trò khác nhau, có hành vi khác nhau X đã có được tính đa hình

2.2 Phương thức

Các dữ liệu và chỉ thị được kết hợp vào một đơn vị đầy đủ tạo nên một đối tượng Đơn vị này tương đương với một chương trình con và vì thế các đối tượng sẽ được chia thành hai bộ phận chính: phần các phương thức và phần các thuộc tính Trong thực tế, các phương thức của đối tượng

là các hàm và các thuộc tính của nó là các biến, các tham số hay hằng nội tại của một đối tượng Các phương thức là phương tiện để sử dụng một đối tượng trong khi các thuộc tính sẽ mô tả đối tượng có những tính chất gì

Ở đây ta quan tâm tới phương thức nên chỉ đề cập tới các yếu tố để xác định một phương thức Đầu tiên là yếu tố tên (Name), đương nhiên tên khác nhau thì sẽ xác định các phương thức khác nhau (mặc dù có thể hai phương thức đều có cấu trúc như nhau)

Code:

interface SinhVien

{

void Hoc();

void Thi();

}

Tiếp đến là tham số truyền vào (Parameter), các tham số truyền vào khác nhau (không phải

là giá trị các tham số khác nhau) thì dẫn đến phương thức sẽ khác nhau

Có 3 dạng khác nhau khi truyền tham số vào:

a Hai phương thức cùng tên nhưng một phương thức có 3 tham số truyền vào, một phương thức có 4 tham số truyền vào thì thì dẫn đến phương thức sẽ khác nhau Đó là sự khác nhau đối với

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 cùng tên, cùng số lượng tham số nhưng không giống nhau về kiểu dữ liệu thì dẫn đến phương thức sẽ khác nhau Đây là sự khác nhau đối với kiểu dữ liệu của tham số truyền vào Ví dụ:

Trang 6

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 cùng tên, cùng số lượng tham số, cùng kiểu dữ liệu nhưng thứ tự truyền tham số khác nhau sẽ dẫn đến phương thức khác nhau (Lưu ý là phương thức phải có tối thiểu 2 tham số trở lên thì mới có sự phân biệt này) Đây là sự khác nhau đối với thứ tự của tham số truyền vào

Ví dụ:

Code:

void Hoc(string a, int b);

void Hoc(in a, string b);

Việc khai báo trong một lớp nhiều phương thức có cùng tên nhưng khác tham số (khác kiểu

dữ liệu, khác số lượng tham số, khác thứ tự truyền tham số) gọi là khai báo chồng phương thức hay còn gọi là nạp chồng Nạp chồng cũng chính là một kiểu đa hình của đối tượng vì nó thể hiện được các hành vi khác nhau tùy thuộc các tham số đầu vào

3 KẾT LUẬN

Bài báo đã minh họa và phân tích các yếu tố tạo nên tính đa hình cho đối tượng trong lập trình, cụ thể là: kiểu dữ liệu được truyền vào và phương thức truyền tham số cho đối tượng Từ các yếu tố trên, ta có thể tăng cường tính đa hình trong khi thiết kế chương trình giúp cho việc thể hiện các hình thái của đối tượng được phong phú hơn, toàn diện hơn

Tài liệu tham khảo

1 Phạm Văn Ất (2005), C++ và Lập trình hướng đối tượng, Nhà xuất bản Giao thông vận

tải

2 Trần Đức Quang (2005), Lập Trình Hướng Đối Tượng - Những Khái Niệm Chung, Nhà

xuất bản 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.

Ngày đăng: 27/02/2020, 11:46

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w