2009-08-13 38 views
5

Trong mô hình OO, chúng tôi chọn sử dụng các lớp học vì chúng giúp chúng tôi phá vỡ hệ thống và cung cấp các lợi ích phụ tốt đẹp như đóng gói, phân chia trách nhiệm, thừa kế, mô-đun, v.v.Thuật ngữ: Sự khác biệt giữa một lớp học và một thành phần là gì?

Nếu chúng tôi xem xét hệ thống phần mềm ở cấp độ thành phần, chúng ta có thể đơn giản xử lý các thành phần theo cùng một cách khái niệm, tức là một thành phần đơn giản chỉ là một "Lớp lớn"? Hay có nhiều hơn thế?

Cần cân nhắc thêm gì khi thiết kế các thành phần?

EDIT:

Tôi biết rằng một lớp và một phần những thứ khác nhau. Tôi cũng hiểu rằng một thành phần có thể chứa nhiều lớp, mỗi lớp có vai trò và trách nhiệm riêng.

Tôi sẽ xem liệu tôi có thể giải thích cho bản thân mình tốt hơn không.

  • Lớp học cho phép chúng tôi giải quyết các vấn đề lớn hơn vì chúng cho phép chúng tôi suy nghĩ và thiết kế trừu tượng hơn.
  • Có các quy tắc & kỹ thuật để xác định cách phân tích và gán dữ liệu và chức năng cho các lớp học.

Điều này có vẻ giống như một tình huống tương tự với thiết kế thành phần, chỉ ở mức trừu tượng cao hơn. Các kỹ thuật được sử dụng để xác định những lớp nào là cần thiết để mở rộng các thành phần và/hoặc có những thứ khác ảnh hưởng đến thiết kế hệ thống cấp cao không áp dụng ở cấp trừu tượng lớp không?

+0

cũng kiểm tra http://stackoverflow.com/questions/1027875/in-a-software-project-how-would-you-differentiate-a-component-from-a-module – dfa

Trả lời

10

điều gì về việc sử dụng giai đoạn hoặc vai trò dự án để phân biệt chúng?

Ví dụ một thành phần là một đơn vị thiết kế thời gian (kiến trúc sư hệ thống, nhà thiết kế) trong khi một lớp là đơn vị thực hiện thời gian (lập trình viên). Vì vậy, các nhà thiết kế nói về các thành phần (hoặc các hệ thống con hoặc các mô-đun, các hộp cấp cao trong bản vẽ kiến ​​trúc của bạn) trong khi lập trình viên nói về các thành phần và các lớp (thực hiện các thành phần).

Theo chế độ xem này, một thành phần được thực hiện bởi một hoặc nhiều lớp.

-1

Eh?

Các "File tải lên" thành phần có thể bao gồm nhiều lớp: Trang tiếp nhận hồ sơ, lớp để tiết kiệm nó, vv

+0

Có lẽ tôi chưa rõ câu hỏi của tôi. Tôi đã làm rõ nó ngay bây giờ :) – andrewdotnich

2

Tôi thường nghĩ về phần theo nghĩa UML (xem Wikipedia mô tả), theo đó nó đại diện cho một "phần mô-đun của một hệ thống". Theo nghĩa này, nó có xu hướng đại diện cho một phần chức năng lớn hơn một lớp và trên thực tế có thể được tạo thành từ nhiều lớp.

cân nhắc tôi sẽ cung cấp cho việc thiết kế các thành phần bao gồm:

  • Làm thế nào nó có thể được tái sử dụng. Cụ thể là những trường hợp sử dụng nào đảm bảo thực hiện điều gì đó như là một thành phần chứ không phải mã riêng biệt (Khi tôi đã sử dụng để làm mọi thứ có thể sử dụng lại được!)
  • Cung cấp (các) giao diện hợp lý và trong một số trường hợp được đơn giản hóa bổ sung giao diện, có thể sử dụng mẫu Facade.

Hy vọng điều đó sẽ hữu ích.

1

Trong ngữ cảnh (giả thuyết) này, một thành phần có thể được coi là một chuỗi các lớp.

Tuy nhiên, tùy thuộc vào công nghệ bạn sử dụng, các thành phần có thể nhiều hơn sau đó là một tập hợp các lớp. tức là chúng có thể có các thuộc tính và chức năng bổ sung mà không phải là một phần của các lớp tạo thành chúng. ví dụ: một thành phần COM +.

Vì vậy, nó phụ thuộc vào một tình huống cụ thể thực sự.

1

Theo các UML v2 specification:

8.3.1 Component (từ BasicComponents, PackagingComponents)

Một thành phần đại diện cho một phần mô-đun của một hệ thống rằng gói gọn nội dung và của nó có biểu hiện là có thể thay thế trong môi trường của nó.

Một thành phần xác định hành vi của nó theo điều kiện của giao diện được cung cấp và được yêu cầu. Là như vậy, một thành phần đóng vai trò là loại có sự phù hợp được xác định bởi giao diện được cung cấp và yêu cầu (bao gồm cả static của chúng là cũng như ngữ nghĩa động). Do đó, một thành phần có thể được thay thế chỉ khi một thành phần khác phù hợp với hai loại . Các phần lớn hơn của chức năng của hệ thống có thể được lắp ráp bằng cách sử dụng lại các thành phần như các bộ phận trong thành phần bao gồm hoặc lắp ráp thành phần và dây.

Khi bạn sử dụng định nghĩa này, các thành phần có vẻ là tất cả về Inversion Of Control.

Nhìn vào khuôn khổ .NET cho ví dụ, giao diện IComponent thực sự cung cấp IComponent. Site. GetService để đảo ngược kiểm soát thông qua mẫu nhà cung cấp dịch vụ. Một lựa chọn trọng lượng nhẹ hơn là tiêm phụ thuộc.

-1

thành phần là các hệ thống con của các lớp. Lớp cung cấp các kế hoạch chi tiết ở mức độ thấp cơ bản của một giao diện đối tượng trong khi thành phần thêm một số chức năng với nó.

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