Khác biệt giữa các bản “Giao thức (lập trình hướng đối tượng)”

AlphamaEditor, Executed time: 00:00:06.2067948 using AWB
(Dịch từ bài viết Anh)
 
(AlphamaEditor, Executed time: 00:00:06.2067948 using AWB)
{{Disputed|date=March 2008}}
 
Trong [[lập trình hướng đối tượng]], '''giao thức''' (tiếng Anh: ''protocol'') hay '''giao diện''' (''interface'') là một phương tiện phổ biến để các [[Đối tượng (khoa học máy tính)|đối tượng]] không liên quan giao tiếp với nhau. Đây là định nghĩa về [[Phương thức (lập trình máy tính)|phương thức]] và giá trị mà các đối tượng đồng ý để hợp tác.<ref>{{citechú thích web|url=https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithProtocols/WorkingwithProtocols.html|title=The Objective-C programming Language:Protocols|publisher=Apple Inc|accessdate=ngày 7 Octobertháng 10 năm 2012}}</ref>
 
Ví dụ, trong [[Java (ngôn ngữ lập trình)|Java]] (nơi các giao thức còn được gọi là ''[[Giao diện (Java)|giao diện]]''), giao diện <tt>Comparable</tt> đặc tả một phương thức <tt>compareTo()</tt> mà các lớp hiện thực giao diện này phải hiện thực phương thức đó. Điều đó có nghĩa là một phương pháp sắp xếp riêng biệt, ví dụ như, có thể sắp xếp bất cứ đối tượng này có hiện thực giao diện Comparable, mà không cần biết chút gì về bản chất bên trong của lớp đó (ngoại trừ hai đối tượng được so sánh bằng phương thức <tt>compareTo()</tt>).
Nếu đối tượng được [[Đóng gói (lập trình máy tính)|đóng gói]] hoàn toàn thì giao thức sẽ mô tả cách duy nhất mà các đối tượng được truy xuất bởi các đối tượng khác.
 
Một số [[ngôn ngữ lập trình]] cung cấp hỗ trợ ngôn ngữ rõ ràng cho giao thức hay giao diện ([[Ada (ngôn ngữ lập trình)|Ada]], [[C Sharp (ngôn ngữ lập trình)|C#]], [[D (ngôn ngữ lập trình)|D]], [[Dart (ngôn ngữ lập trình)|Dart]], [[Embarcadero_DelphiEmbarcadero Delphi|Delphi]], [[Go (ngôn ngữ lập trình)|Go]], [[Java (ngôn ngữ lập trình)|Java]], [[Logtalk]], [[Object Pascal]], [[Objective-C]], [[PHP]], [[Racket (ngôn ngữ lập trình)|Racket]], [[Seed7]], [[Swift (ngôn ngữ lập trình)|Swift]]). Trong [[C++]] giao diện còn được gọi là lớp nền trừu tượng (''abstract base class'') và được hiện thực bằng [[hàm ảo|hàm ảo thuần túy]] (''pure virtual function''). Các tính năng hướng đối tượng trong [[Perl]] cũng hỗ trợ giao diện.
 
Mặc dù [[Go (ngôn ngữ lập trình)|ngôn ngữ lập trình Go]] thường không được xem là ngôn ngữ hướng đối tượng, nó vẫn cho phép phuiwong thức được định nghĩa bằng kiểu người dùng định nghĩa (''user-defined type''). Go có kiểu "giao diện" tương thích với bất cứ kiểu nào hỗ trợ một tập các phương thức (các kiểu này không yêu cầu phải hiện thực rõ ràng giao diện). Giao diện rỗng, <code>interface{}</code>, tương thích với tất cả các kiểu.
== Tham khảo ==
 
{{reflisttham khảo}}
{{Các kiểu dữ liệu}}