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 không liên quan giao tiếp với nhau. Đây là định nghĩa về phương thức và giá trị mà các đối tượng đồng ý để hợp tác.
Ví dụ, trong Java (nơi các giao thức còn được gọi là giao diện), giao diện Comparable đặc tả một phương thức compareTo() 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 compareTo()).
Giao thức là một mô tả về:
Các thông điệp được hiểu bởi đối tượng.
Các đối số mà những thông điệp có thể được cung cấp.
Các kiểu của kết quả mà thông điệp trả về.
Tính bất biến (invariant) được giữ nguyên bất chấp sự sửa đổi trạng thái của một đối tượng.
Các tình huống đặc biệt sẽ được yêu cầu xử lý bởi máy khách tới đối tượng.
Nếu đối tượng được đó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, C#, D, Dart, Delphi, Go, Java, Logtalk, Object Pascal, Objective-C, PHP, Racket, Seed7, 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 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ù 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, interface{}
, tương thích với tất cả các kiểu.
Lưu ý rằng ngôn ngữ lập trình hàm (functional programming) và lập trình phân tán (distributed programming) có một khái niệm cũng gọi là "giao thức", nhưng ý nghĩa có chút khác biệt (ví dụ một đặc tả cho phép trao đổi thông điệp, nhấn mạnh vào trao đổi chứ không phải vào nội dung thông điệp). Điểm khác biệt này do giả định khác nhau giữa mẫu hình lập trình hàm và lập trình hướng đối tượng. Cụ thể, những điểm sau được xem là một phần của giao thức trong những ngôn ngữ đó:
Các chuỗi được cho phép của thông điệp,
Những hạn chế với các đối tượng tham gia trong giao tiếp,
Các hiệu ứng mong đợi sẽ xả ra khi thông điệp được xử lý.
Lớp kiểu (type class) trong các ngôn ngữ như Haskell được sử dụng nhiều cho những thứ mà sự kiện được dùng cho.
👁️
2 | 🔗 | 💖 | ✨ | 🌍 | ⌚
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 không liên quan giao tiếp với nhau. Đây là định
**Lập trình hướng đối tượng** () là một mẫu hình lập trình dựa trên khái niệm "đối tượng", mà trong đó, đối tượng chứa đựng các dữ liệu trong các trường, thường được gọi là
Đây là danh sách các thuật ngữ tìm thấy trong lập trình hướng đối tượng. Một số có liên quan đến lập trình hướng đối tượng và một số thì không. Lưu ý rằng, các
Giáo Trình C Và Lập Trình Hướng Đối Tượng Lập trình cấu trúc là phương pháp tổ chức, phân chia chương trình thành các hàm, thủ tục. Chúng được dùng để xử lý dữ liệu
Giáo Trình C Và Lập Trình Hướng Đối Tượng Lập trình cấu trúc là phương pháp tổ chức, phân chia chương trình thành các hàm, thủ tục. Chúng được dùng để xử lý dữ liệu
Giáo Trình C Và Lập Trình Hướng Đối Tượng Lập trình cấu trúc là phương pháp tổ chức, phân chia chương trình thành các hàm, thủ tục. Chúng được dùng để xử lý dữ liệu
**Python** () là ngôn ngữ lập trình bậc cao đa năng. Triết lý thiết kế của nó nhấn mạnh khả năng đọc mã bằng cách sử dụng thụt lề đáng kể. Python có kiểu động
**D** là một ngôn ngữ lập trình hệ thống hướng đối tượng, dùng câu lệnh, đa mẫu hình do Walter Bright của Digital Mars tạo ra và phát hành năm 2001. Quá trình thiết kế
**Java** (phiên âm Tiếng Việt: "_Gia-va_") là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp được thiết kế để có càng ít phụ thuộc thực thi càng tốt. Nó là ngôn ngữ
**Kotlin** là một ngôn ngữ lập trình kiểu tĩnh chạy trên máy ảo Java (JVM) và có thể được biên dịch sang mã nguồn Java hay sử dụng cơ sở hạ tầng trình biên dịch
**Ruby** là một ngôn ngữ lập trình hướng đối tượng, có khả năng phản ứng. Theo tác giả, Ruby chịu ảnh hưởng bởi Perl, Smalltalk, Eiffel, Ada và Lisp. Ruby cung cấp nhiều mẫu hình
**Swift** là một ngôn ngữ lập trình hướng đối tượng dành cho việc phát triển iOS và macOS, watchOS, tvOS và z/OS. được giới thiệu bởi Apple tại hội nghị WWDC 2014. Swift được mong
**Lập trình hướng tác tử** (tiếng Anh: _Agent-oriented programming_ hay _AOP_) là một mẫu hình lập trình trong đó việc xây dựng phần mềm dựa trên khái niệm tác tử phần mềm. Điều này ngược
**Đặc tính** (tiếng Anh: _property_), trong một số ngôn ngữ lập trình hướng đối tượng, là một loại đặc biệt của thành viên lớp, trung gian chức năng giữa một trường (hay thành viên dữ
**Giao tiếp lập trình ứng dụng mở** (Open API) (thường được gọi là một giao tiếp lập trình ứng dụng công cộng.) là một giao tiếp lập trình ứng dụng công khai cung cấp cho
nhỏ|Ảnh chụp màn hình tài liệu [[API web viết bởi NASA]] Một **giao diện lập trình ứng dụng** (, viết tắt: _API_) là một giao diện mà một hệ thống máy tính hay ứng dụng
phải|nhỏ|402x402px|[[Mã nguồn của một chương trình máy tính đơn giản được viết bằng ngôn ngữ lập trình C. Khi được biên dịch và chạy, nó sẽ cho kết quả "Hello, world!".]] **Ngôn ngữ lập trình**
**Pascal** là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh và thủ tục, được Niklaus Wirth phát triển vào năm 1970. Pascal là ngôn ngữ lập trình đặc biệt thích hợp
**C** là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều
thumb|**[[Phép tính lambda** là một hệ thống hình thức để định nghĩa hàm, ứng dụng hàm và đệ quy được Alonzo Church đề xuất vào những năm 193x.]] **Lý thuyết ngôn ngữ lập trình** (thường
Trong lập trình hướng đối tượng, **lớp** (**class**) là một chương trình-mã-khuôn mẫu có thể mở rộng được để tạo các đối tượng, cung cấp giá trị khởi tạo cho trạng thái (biến thành viên)
**R** là một ngôn ngữ lập trình và môi trường phần mềm dành cho tính toán và đồ họa thống kê. Đây là một bản hiện thực ngôn ngữ lập trình S với ngữ nghĩa
Đây là danh sách các ngôn ngữ lập trình đáng chú ý, được nhóm theo loại. Vì không có sơ đồ phân loại bao quát cho các ngôn ngữ lập trình, nên trong nhiều trường
Trong lập trình hướng đối tượng, một **Đối tượng thượng đế** (tiếng Anh: God object) là một đối tượng _biết quá nhiều_ hoặc _làm quá nhiều_. Đối tượng thượng đế là một ví dụ về
Trong điện toán, **giao diện** (tiếng Anh: _interface_) là một biên giới chia sẻ giữa hai thành phần tách biệt của một hệ thống máy tính trao đổi thông tin. Việc trao đổi có thể
Combo sách hay, cung cấp những kiến thức lập trình mới nhất, đặc biệt dành cho các bạn đam mê CNTT. 1. Clean Code Mã sạch và con đường trở thành lập trình viên giỏi
**Object Pascal** chỉ đến một nhánh của phát sinh hướng đối tượng của Pascal, được biết đến chủ yếu với vai trò ngôn ngữ lập trình chính của Delphi. ## Lịch sử ban đầu tại
**Turbo Pascal** là một trình biên dịch và một môi trường phát triển tích hợp (IDE) cho ngôn ngữ Pascal chạy trên nền hệ điều hành MS-DOS và CP/M, được phát triển bởi hãng Borland.
**Windows Template Library** (WTL) là thư viện lập trình hướng đối tượng C++ mã nguồn mở dùng để phát triển các ứng dụng trên nền tảng hệ điều hành Windows. WTL được tạo ra bởi
**Biểu diễn tri thức và suy luận** (**Knowledge representation and reasoning**, **KRR**, **KR&R**, **KR²**) là lĩnh vực của trí tuệ nhân tạo (AI) tập trung vào việc biểu diễn thông tin về thế giới dưới
thumb|Các vòng lặp lên kế hoạch và phản hồi trong lập trình cực hạn **Lập trình cực hạn** (tiếng Anh: **Extreme programming**, viết tắt là **XP**) là một quy trình phát triển phần mềm nhằm
nhỏ|Cbmain Trong khoa học máy tính, một **ngôn ngữ lập trình bậc cao** (tiếng Anh: _high-level programming language_) là một ngôn ngữ lập trình có sự trừu tượng hóa mạnh mẽ khỏi các chi tiết
**Scratch** là một ngôn ngữ lập trình mang tính giáo dục miễn phí dựa trên các khối ngôn ngữ lập trình trực quan (VPL) và trang web chủ yếu để giáo dục lập trình, với
**Ada** là ngôn ngữ lập trình xuất xứ từ Bộ quốc phòng Mỹ vào khoảng nửa đầu thập niên 80 của thế kỷ 20. Ngôn ngữ này được đặt tên theo Ada Augusta nữ bá
Giáo trình kỹ thuật lập trình C căn bản và nâng cao được hình thành qua nhiều năm giảng dạy của các tác giả. Ngôn ngữ lập trình C là một môn học cơ sở
Giáo trình kỹ thuật lập trình C căn bản và nâng cao được hình thành qua nhiều năm giảng dạy của các tác giả. Ngôn ngữ lập trình C là một môn học cơ sở
Giáo trình kỹ thuật lập trình C căn bản và nâng cao được hình thành qua nhiều năm giảng dạy của các tác giả. Ngôn ngữ lập trình C là một môn học cơ sở
**Giao thức dự trữ tài nguyên (RSVP)** là một giao thức lớp truyền tải được thiết kế để dự trữ tài nguyên trên một mạng bằng cách sử dụng mô hình dịch vụ tích hợp.
**Chuyển mạch nhãn đa giao thức tổng quát** (tiếng Anh:_Generalized Multi-Protocol Label Switching_, viết tắt **GMPLS**) được phát triển dựa trên kỹ thuật chuyển mạch nhãn đa giao thức - MPLS với rất nhiều ưu
**API Windows** / **Windows API**, tên không chính thức **WinAPI**, là bộ giao diện lập trình ứng dụng (API) cốt lõi của Microsoft có sẵn trong các hệ điều hành Microsoft Windows. Tên Windows API
**XML** (viết tắt từ , tức "**Ngôn ngữ đánh dấu mở rộng**") là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị, để tạo ra các ngôn ngữ đánh dấu khác. Đây
**Document Object Model** (Mô hình Đối tượng Tài liệu), viết tắt là **DOM**, là một giao diện lập trình ứng dụng (API). Thông thường, DOM có dạng một cây cấu trúc dữ liệu, được dùng
**Objective-C** là một ngôn ngữ lập trình đa dụng, hướng đối tượng có bổ sung thêm thông điệp kiểu Smalltalk vào ngôn ngữ lập trình C. Ban đầu được phát triển bởi Brad Cox và
Trong điện toán, **lập trình phản ứng** (tiếng Anh: **reactive programming**) là một mẫu hình lập trình khai báo liên quan đến các luồng dữ liệu và lan truyền của sự thay đổi. Với mẫu
Tuyển Sinh Khóa Thực Tập Phát Triển Ứng Dụng Di Động (Android/iOS) Số lượng: 10- Phát triển và bảo trì ứng dụng di động: Tham gia xây dựng và tối ưu hóa các ứng dụng
The X Window System logo Trong vi tính, **Hệ thống X Window** (thường được gọi tắt là **X11** hoặc **X**) là một hệ thống cửa sổ xuyên dụng mạng dùng để hiển thị đồ họa
**C++** (**C Plus Plus**, **CPP,** IPA: /siː pləs pləs/) là một ngôn ngữ lập trình đa năng bậc cao (high-level) được tạo ra bởi Bjarne Stroustrup như một phần mở rộng của ngôn ngữ lập
Trong lập trình máy tính, **Hợp ngữ** (hay **assembly**) thường được viết tắt là **asm** là bất kỳ ngôn ngữ lập trình cấp thấp nào có sự tương ứng rất mạnh giữa các tập lệnh
**Quảng cáo lập trình** () là một quy trình tự động trong việc mua và bán các vị trí quảng cáo theo thời gian thực trên nền tảng kỹ thuật số và là một phần
Trong khoa học máy tính, **reflection** (có thể dịch là "phản tỉnh", "tự xét mình") là việc tiến trình có khả năng xem xét, nội quan, và sửa đổi kết cấu cùng với hành trạng