Đây là một câu hỏi hay.
Trong khi đó như đối tượng chiếm chức năng và dữ liệu như đang được đặt ở vị trí tương tự về mặt lý thuyết, hầu hết triển khai chia nó. Cách bạn làm điều đó, là mã được tách ra và được lưu trữ trong phân khúc RO. Một đối tượng trong khu vực RW sau đó có một cách để tham khảo lại mã đó trong khu vực RO. Việc ghép nối mã và dữ liệu chỉ được sử dụng khái niệm bởi lập trình viên con người và trình kiểm tra loại để đảm bảo rằng bạn không vi phạm các quy tắc và nguyên tắc.
Ngôn ngữ Java/C# -like thường được thực hiện sao cho mỗi đối tượng có một thẻ xác định loại đối tượng. Bản thân đối tượng chỉ đơn giản là một cấu trúc chứa tất cả các trường được trình bày theo thứ tự đã được định trước. Thẻ này sau đó có thể được sử dụng để tìm kiếm chức năng nào trong vùng RO để gọi.Chức năng trong khu vực RO được thay đổi để lấy thêm thông số, được gọi là hoặc tự thông qua đó nội dung của đối tượng đó có thể đạt được. Khi phương thức cần tham chiếu đến các trường, nó biết thứ tự được chỉ định trước, vì vậy nó có thể thực hiện điều đó. Lưu ý rằng có một số thủ thuật cần thiết để giải quyết thừa kế, nhưng đây là điểm mấu chốt của ý tưởng.
Ngôn ngữ giống Python/Ruby thường sẽ tạo đối tượng là bảng băm trong đó phương thức là con trỏ tới mã trong khu vực RO (miễn là ngôn ngữ được biên dịch và không chạy thông qua trình thông dịch bytecode) . Các cuộc gọi hàm được thực hiện bằng cách tra cứu nội dung bảng băm và theo con trỏ mã. Các trường cũng được tra cứu trong cùng một bảng băm.
Với những kiến thức cơ bản này, hầu hết các triển khai thực hiện các thủ thuật để tránh phần mà con trỏ được theo sau để tìm hàm cần gọi. Họ cố gắng tìm ra và thu hẹp cuộc gọi có thể thành một chức năng duy nhất. Sau đó, họ có thể thay thế tra cứu bằng một cuộc gọi trực tiếp đến đúng chức năng, một giải pháp nhanh hơn nhiều.
phiên bản tl; dr: Ngôn ngữ ngữ nghĩa xem các trường và phương thức như một phần của đối tượng. Việc triển khai chia chúng thành các phân đoạn RO và RW. Vì vậy không cần hỗ trợ hệ điều hành.
Nguồn
2010-11-07 23:11:49
Tùy thuộc vào ngôn ngữ - và hơn thế nữa, thời gian chạy cho ngôn ngữ đã nói. CLR hiện tại có thể tạo các đối tượng trên ngăn xếp (các kiểu giá trị trong hầu hết các trường hợp, trừ khi được dỡ bỏ). Cả OOP hoặc "prodcedural" đều nói bất cứ điều gì vốn có về việc sử dụng "phần dữ liệu" - nhưng bộ nhớ chỉ đọc là chỉ đọc trong mọi trường hợp. Kết thúc quá bối rối đến nỗi tôi thậm chí còn không biết phải trả lời như thế nào. Tôi nghĩ rằng vấn đề đang cố gắng giảm 40 câu hỏi là một. Tập trung vào một điều duy nhất tại một thời điểm. –