2009-08-26 35 views
18

Các từ khóa và khái niệm này trở nên sống động như thế nào? Các lực lượng và vấn đề khiến chúng xuất hiện là gì? Ngôn ngữ đầu tiên để có chúng là gì?Lịch sử của các công cụ sửa đổi kiểm soát truy cập như công khai/riêng tư/được bảo vệ

Trên thực tế, nó không chỉ là về public/private/protected, mà là toàn bộ phạm vi của các từ khóa mà thi hành một số quy tắc (abstract, final, internal).

Nhưng, xin vui lòng, đừng cho rằng mọi thứ. Trả lời nếu bạn biết ít nhất một phần câu trả lời hoặc câu trả lời nếu bạn sống những khoảnh khắc đó. Tài liệu tham khảo được đánh giá cao.

+2

câu hỏi tuyệt vời! –

+0

Chúng tôi vẫn cần nguồn gốc cho _interface_. Tôi chỉ hy vọng nó không phải là OLE/COM. –

+0

Nó thực sự làm tôi ngạc nhiên vì thiếu thông tin về chủ đề này. Vâng, ít nhất tôi dường như không dễ dàng tìm thấy nó. –

Trả lời

8

Simula (1967), được coi là ngôn ngữ OO đầu tiên, có các công cụ sửa đổi được gọi là protected and hidden. Tôi cho rằng công chúng là mặc định, tôi không thể nhớ. Nó cũng sử dụng virtual.

Và, với nhờ vào Pavel, Simula giới thiệu các từ khóa quan trọng nhất (và các khái niệm) của lớp, này, mới, downcasting và tham khảo các loại.

Smalltalk (1980), một sau nhưng cơ bản hơn nhiều ngôn ngữ OO, đã cho chúng tôi Phương pháp ứng phó với Tin nhắn. Về cơ bản, chức năng này giống với chức năng ảo. Các thông điệp và các lớp sau đó được bắt chước trong C (không phải OO) để cung cấp cho hành vi đa hình Windows API. Nhưng vẫn cần các câu lệnh chuyển đổi xấu và các con trỏ hàm để thay thế thừa kế.

Việc sử dụng đầu tiên của Thuộc tính, theo như tôi biết, tại Delphi (Object Pascal, < 1994).

+3

Đó là nguồn gốc thực sự. “Ẩn” của Simula là cái mà chúng ta gọi là 'riêng tư' ngày hôm nay, 'bảo vệ' là nó là gì, và mặc định là thực sự công khai. Simula cũng giới thiệu các thuật ngữ "lớp" và "đối tượng" theo nghĩa chúng được sử dụng trong OOP/OOD ngày nay, thừa kế đơn cho các lớp, cả thuật ngữ và khái niệm phương thức 'ảo', ký hiệu chấm để truy cập trường và gọi phương thức , ý tưởng về các lần kiểm tra và phân loại đã được kiểm tra và khái niệm rằng các lớp là "loại tham chiếu" với danh tính tham chiếu cố hữu (trái ngược với các loại khác là "loại giá trị"). –

+1

Ồ, tôi quên mất ý tưởng về các luồng I/O tổng quát như các đối tượng, và ý tưởng rằng các luồng không phải chỉ là các tệp - trong Simula, các chuỗi là các luồng (vì vậy chúng giống như 'StringBuilder' trong C#). –

+2

... và cũng là từ khóa 'mới' để khởi tạo các đối tượng và' this' để chỉ đối tượng chính nó từ bên trong một phương thức. –

0

loại điều này bắt đầu với nhiều nhà thiết kế ngôn ngữ hỏi 'tên đơn giản, hợp lý cho khái niệm này' là gì? sau đó, theo thời gian, một số tên trở nên phổ biến (đôi khi vì chúng là tên tốt, đôi khi chỉ vì). thêm 20 năm, và hầu hết mọi người đều chọn cùng tên, dựa trên những gì họ đã thấy.

một câu hỏi tương tự, có lẽ, để hỏi cách thêm từ mới vào (nói) tiếng Anh.

+1

Tôi thực sự quan tâm nhiều hơn trong quá trình dẫn đến khái niệm đó hơn là lựa chọn tên. Tên có vấn đề, nhưng thật thú vị khi thấy những vấn đề mà họ có vào thời điểm đó khiến họ cảm thấy cần thiết cho các khái niệm này. Có lẽ có một dự án tuyệt vời đã bị lãng quên trong thời gian chờ đợi. Ai biết. –

+1

Simula, như tên gọi của nó, là ngôn ngữ được thiết kế để mô phỏng các quy trình - ban đầu (Simula I) được tập trung xung quanh "các diễn viên", nhưng sau đó các nhà thiết kế cảm thấy khái niệm đó có thể được khái quát hóa hơn. Simula 67. –

2

công khai, riêng tư và được bảo vệ access modifiers đến từ C++. It seems công khai và riêng tư đã tồn tại trong "C với các lớp học", tiền thân tồn tại ngắn của C++. Đây có thể là chi tiết trong The design and Evolution of C++.

I nghĩ trừu tượng và cuối cùng đến từ Java và nội bộ từ C#.

+0

Cảm ơn bạn đã liên kết. Mặc dù không hoàn toàn hoàn chỉnh, nó cung cấp một số nền tảng. –

0

Đối với C++, nguồn gốc của bảo vệ cá nhân và công cộng xuất phát trước các thử nghiệm của Stroustrup với C Với lớp học, nhưng từ một hệ thống thậm chí cũ hơn - máy tính Cambridge CAP. Điều này được mô tả trong phần 2.10 của "Thiết kế & Sự phát triển của C++".

Để được bảo vệ, trước đây đã có một tiếng rầm rộ hơn & Tôi không có tham chiếu tốt cho nó.

Các vấn đề liên quan