2012-02-12 22 views
6

Tôi hiện đang học C# và tôi đã tự hỏi, điểm khai báo các lớp/phương thức riêng là gì? Chúng tôi đang ẩn/giới hạn quyền truy cập vào các lớp này.Chúng tôi bảo vệ các lớp học của mình từ ai?

Bởi vì nếu ai đó đang chỉnh sửa nguồn, họ chỉ có thể thay đổi thẻ từ riêng tư thành công khai. Tôi không chắc chắn làm thế nào một người dùng sẽ có thể truy cập các phương pháp này và những vấn đề nó sẽ gây ra.

tldr; Điểm điều chỉnh truy cập là gì.

Cảm ơn!

+2

Bạn không thực sự "bảo vệ" chúng với bất kỳ ai. Không ai sử dụng công cụ sửa đổi truy cập để bảo mật. Vâng, ngoại trừ có lẽ một số kẻ ngu nghèo có ý tưởng hoàn toàn sai. Không có gì an toàn về nó - người ta có thể sửa đổi mã nguồn như bạn đã nói; thiếu mã nguồn có thể giả mạo với đầu ra của trình biên dịch; thiếu điều đó, người ta có thể làm những điều kỳ quặc nhất với sự phản ánh bằng nhiều ngôn ngữ bao gồm C#. – delnan

+1

http://www.merithub.com/q/99-encapsulation-oops.aspx –

Trả lời

7

Chế độ hiển thị thành viên, vì tính năng này thường được gọi, không phải là tính năng bảo mật. Đó là một sự thuận tiện cho lập trình viên, được thiết kế để giúp hạn chế sự phụ thuộc chéo lớp. Bằng cách tuyên bố một thành viên riêng tư, bạn ngăn chặn mã khác truy cập trực tiếp vào nó. Điều này có hai ưu điểm:

  • nếu bạn thấy rằng một biến thành viên được chế tác một cách bạn không có ý định, số lượng mã bạn cần phải kiểm tra là nhỏ hơn đáng kể khi biến là tin
  • bạn có thể thay đổi các hoạt động bên trong một lớp (tất cả những gì được khai báo là private) mà không vi phạm giao diện (tất cả những gì đã tuyên bố công)

Member tầm nhìn có lẽ là tính năng ngôn ngữ quan trọng nhất trong việc thực hiện đóng gói, một trong những nguyên tắc cốt lõi của đối tượng lập trình định hướng.

1

Đây là khái niệm OO cơ bản - encapsulation và hầu như không có gì liên quan đến bảo mật. Trích dẫn từ Wikipedia (tôi nhấn mạnh):

Ẩn ruột của đối tượng bảo vệ tính toàn vẹn của nó bằng cách người dùng ngăn chặn từ thiết lập các dữ liệu nội bộ của các thành phần vào một trạng thái không hợp lệ hoặc không phù hợp. Lợi ích của việc đóng gói là nó có thể làm giảm độ phức tạp của hệ thống và do đó tăng cường độ mạnh, bằng cách cho phép nhà phát triển hạn chế sự phụ thuộc lẫn nhau giữa các thành phần phần mềm .

0

bổ truy cập được sử dụng để đóng gói: chúng cho phép bạn sắp xếp mã của bạn trong các gói và các lớp học, và chỉ có một "chính thức" public interface có thể nhìn thấy bên ngoài, trong khi lẩn trốn các chi tiết thực hiện (mà bạn muốn làm, để sau này bạn có thể thay đổi nó mà không cần nói với bất kỳ ai).

Điều này đặc biệt quan trọng (chỉ?) Khi bạn phát hành mã làm thư viện để các lập trình viên khác sử dụng. Ngay cả khi mã chỉ được sử dụng trong chương trình của riêng bạn, nó giúp cấu trúc các chương trình lớn hơn thành nhiều gói . - Thilo

1

Nó giữ mã của bạn gọn gàng. Bạn tách mã của mình thành giao diện công khai và nội bộ riêng.

Bằng cách đó, bạn có thể thay đổi nội bộ của mình mà không sợ phá vỡ mã phụ thuộc vào lớp học của bạn.Bạn cũng có thể giả định rằng không có mã nào khác đã sửa đổi trạng thái nội bộ của bạn trong khi bạn không tìm kiếm.

0

Bạn có thể viết mã theo 2 cách: được thiết kế để mở rộng và được thiết kế để sử dụng như hiện tại.

Bạn có thể hoặc không có quyền truy cập vào mã nguồn.

Công cụ sửa đổi truy cập là quan trọng nhất trong mã được thiết kế cho tiện ích mở rộng nơi lập trình viên khách hàng (người mở rộng và sử dụng mã của bạn) cần truy cập vào API bạn trưng ra - về cơ bản, với giao diện bạn cung cấp bằng cách sử dụng quyền truy cập này sửa đổi.

0

Công cụ sửa đổi truy cập được sử dụng cho encapsulation, sao cho nội bộ của đối tượng/lớp bị ẩn khỏi người dùng hoặc lớp bên ngoài. Điều này ngăn cản người dùng vô tình hoặc cố ý phá vỡ một đối tượng/lớp bằng cách sửa đổi các biến cá thể và/hoặc các hàm của nó.

Đóng gói là một phần quan trọng của Open/closed principle, trong đó đề cập đến một lớp là "mở để mở rộng" nhưng "đóng để sửa đổi". Nguyên tắc này cho phép mở rộng các lớp mà không sợ rằng API của một lớp có thể thay đổi trong tương lai.

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