2011-08-29 39 views
9

Có sự khác biệt nào trong việc trừu tượng hóa dữ liệu và ẩn thông tin không? Sau khi đi qua tất cả các câu trả lời trong liên kết này, tôi bối rối hơn. Abstraction VS Information Hiding VS Encapsulation Không thể tìm thấy bất kỳ sự khác biệt nào. Có phải chỉ là chúng ta có thể gọi một (ẩn thông tin) như một mục tiêu & khác (trừu tượng) như một quá trình? Nhưng đây không phải là sự khác biệt thỏa đáng đối với tôi. Hơn nữa, tôi nhận được rằng đóng gói là kỹ thuật để thực hiện quá trình trừu tượng Tôi có ở đây không? Xin giải thích sự khác biệt chính xác.Sự khác biệt về ẩn thông tin và trừu tượng dữ liệu?

Trả lời

6

Ẩn thông tin là khi nhà thiết kế quyết định giới hạn quyền truy cập vào chi tiết triển khai. Đó là một nguyên tắc cũ hơn thiết kế hướng đối tượng, nhưng thường được sử dụng.

Ví dụ đơn giản là xác định các hằng số trong C, ví dụ:, #define NAME_SIZE 15 Mã (khách hàng) của hằng số không cần biết giá trị của nó, và sẽ không gặp rắc rối nếu bạn (nhà thiết kế) quyết định thay đổi giá trị của nó sau này. Họ không nên đưa ra giả định về thực tế là nó thực sự là 15, bởi vì bạn có thể quyết định thay đổi nó.

trừu tượng là khi bạn đang xử lý tổng hợp, ví dụ: Ô tô trừu tượng các chi tiết như khung gầm, động cơ, bánh xe, v.v ... Tóm tắt cho phép chúng ta nghĩ về những thứ phức tạp theo cách đơn giản hơn.

Đóng gói là cách chúng tôi quyết định mức độ chi tiết của các yếu tố bao gồm các tóm tắt của chúng tôi. Đóng gói tốt sẽ áp dụng thông tin ẩn, để thực thi các giới hạn chi tiết. Ví dụ, xe của tôi được bao gồm trong thực tế của tất cả các bộ phận của nó, nhưng nó chỉ cung cấp cho tôi (người lái xe) một giao diện phù hợp với nhu cầu của tôi và không nhiều hơn nữa. Tôi có thể điều khiển cánh cửa, ổ khóa, cửa sổ, đèn, sừng, cửa sổ trời, hướng di chuyển, tăng tốc, giảm tốc, vv Mặc dù tôi có thể tò mò muốn thao tác các chi tiết của "cách" của tất cả những thứ này, tôi nhìn thấy nhiều hơn.

Nếu việc thay đổi xe của tôi thay đổi (tôi thay đổi từ động cơ đốt sang điện hoặc hybrid), vì tôi là người lái xe chỉ biết giao diện giới hạn, tôi không cần phải thay đổi cách lái xe. Trừu tượng cho phép tôi chỉ biết tôi đang lái xe, thay vì hàng trăm mảnh kim loại, cao su vv

Một ví dụ về nơi ẩn thông tin là không phần của một chiếc xe có thể là một choke valve. Cha mẹ tôi nói với tôi rằng những người đã từng làm việc trong những chiếc xe họ lái xe ... đó là một chi tiết động cơ đốt, mà sẽ không hữu ích trong một chiếc xe điện.

+1

appriciate nỗ lực của bạn giải thích ví dụ thời gian thực. Cảm ơn. :) –

1

"Ẩn thông tin" là một phần quan trọng của "trừu tượng dữ liệu", chứ không phải toàn bộ khái niệm. Và hãy nhớ: bạn có thể (và cần) có "ẩn thông tin" trong mã thủ tục (như "không sử dụng hình cầu", v.v. trong FORTRAN hoặc BASIC) - nhưng bạn sẽ không cần thiết có "kiểu dữ liệu trừu tượng" ".

Information hidingAbstract Data Types có liên quan chặt chẽ, nhưng chúng là các khái niệm khác nhau.

2

Một lớp thường ẩn chi tiết triển khai của ứng dụng từ khách hàng. Điều này được gọi là ẩn thông tin. bằng cách tạo ra các giao diện chúng tôi triệu tập thông tin ẩn khái niệm ...

ví dụ về ẩn thông tin bên dưới ... chúng tôi có một giao diện trong tập tin tiêu đề của chúng tôi ...

class Coder 
{ 
    public: 
     Coder(); 
     void prints(); 

private: 
     int x; 

}; 

và thực hiện các chức năng trong tập tin khác "Coder.cpp" là ...

Coder::Coder 
{ 
x=10;//any int value you can take; 
} 

void Coder::prints()  
{ 
    cout<<x; 
} 

thay vì làm trên hai tệp (một tiêu đề + một tệp cpp), chúng tôi có thể thực hiện tại một nơi duy nhất. chúng ta có thể đã đưa ra, định nghĩa của constructor và chức năng in trong tập tin tiêu đề riêng của mình ...

class Coder 
    { 
     public: 
      Coder() 
      { 
       x=10;//any int value you can take; 

      } 
      void prints() 
    { 
      cout<<x; 
     } 

    private: 
      int x; 

    }; 

nếu chúng ta đã làm điều này chúng tôi đã không thể thực hiện thông tin ẩn ... và khách hàng của chúng tôi sẽ biết làm thế nào chúng tôi đã thực hiện của chúng tôi chức năng!

cho dữ liệu absraction bạn có thể xem xét ... ví dụ về ngăn xếp ...

Một khách hàng của một lớp ngăn xếp không cần phải được quan tâm đến việc thực hiện của chồng. Khách hàng chỉ biết rằng khi các mục dữ liệu được đặt trong ngăn xếp, chúng sẽ được gọi lại theo thứ tự từ đầu đến cuối. Khách hàng quan tâm đến chức năng mà một ngăn xếp cung cấp, không phải về cách chức năng đó được triển khai. Khái niệm này được gọi là trừu tượng dữ liệu.

5

Ẩn dữ liệu là quá trình mà các công cụ sửa đổi truy cập được sử dụng để ẩn khả năng hiển thị của các phương thức và biến java. Họ truy cập các công cụ sửa đổi là: công khai, riêng tư và được bảo vệ. Tóm tắt là quá trình mà theo đó chúng tôi xác định một hành vi cụ thể bằng hạt của lớp trừu tượng và phương pháp tạo thành bộ xương cho bất kỳ lớp nào sẽ mở rộng lớp này.

0

Sự trừu tượng là biểu thị của một cái gì đó có ít chi tiết hơn (như trong một bức tranh trừu tượng). Trong OO, một kiểu trừu tượng có thể được thao tác mà không cam kết với biểu diễn bên trong của nó. Ví dụ, số điện thoại như là một trừu tượng của một số điện thoại có thể được hoạt động mà không có khách hàng biết rằng nó bao gồm mã quốc gia, mã vùng, và số thực tế. Tóm tắt là hữu ích nhất trong giai đoạn phân tích và thiết kế bởi vì nó cho phép bạn nói về kiểu dữ liệu trừu tượng (ví dụ: Số điện thoại) mà không phải lo lắng về việc nó sẽ được triển khai như thế nào.

Loại quen thuộc hơn, string là sự trừu tượng của văn bản: bạn thao tác string mà không biết cách triển khai. Sự trừu tượng chuỗi cho phép các phần bên trong của nó được thay đổi mà không ảnh hưởng đến việc sử dụng nó trong một thiết kế ứng dụng.

Ẩn và đóng gói thông tin là hai cách mà một kiểu dữ liệu trừu tượng có thể được triển khai. Một kiểu dữ liệu trừu tượng có thể thậm chí không phải ẩn trạng thái nội bộ của nó hoặc sự đóng gói của nó; ví dụ: Số dưới dạng trừu tượng có thể được triển khai dưới dạng int.

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