Tôi đang cố gắng tìm hiểu cách sử dụng đúng các lớp trong mã của mình, khi nó không rõ ràng như một tập hợp khách hàng, những con chó kế thừa từ động vật, v.v.Có phải hình thức xấu để thử và có các lớp khác với chính/form1 tương tác với nhau không?
Tôi đã chia nhỏ các phần lớn của mã thành "các tính năng" chẳng hạn như Installer.cs
, Downloader.cs
, UiManager.cs
. Cách duy nhất tôi có thể tìm thấy để có những lớp tương tác với các thuộc tính và phương pháp của nhau là làm cho chúng tĩnh, mà tôi đã được nói trong một câu hỏi khác là sai đường đi.
Vì vậy, vấn đề của tôi là một trong 3 điều:
Có một cách để làm cho các lớp học nói chuyện với nhau mà tôi chỉ không hiểu được nêu ra.
Lớp học không bao giờ nên cố gắng nói chuyện với nhau, nhưng thực hiện hành động một lần và sau đó trả lại một cái gì đó về số
main/form1
, sau đó lớp chính có thể sử dụng để chuyển sang một lớp khác.Lớp học thực sự chỉ hữu ích khi tạo nhiều trường hợp, và có một số cấu trúc khác hoàn toàn tôi cần tìm hiểu để tóm tắt các khối chức năng lớn từ lớp chính.
Tất cả các hướng dẫn tôi có thể tìm và bài giảng tôi xem dường như chỉ cho bạn biết cách lớp việc, nhưng không phải khi nào và làm thế nào để sử dụng chúng trong một sản phẩm thực sự.
EDIT - Một ví dụ cụ thể hơn:
Nói rằng tôi đã một chuỗi mà là trung tâm của toàn bộ ứng dụng, và cần phải được nhìn thấy và/hoặc sửa đổi có khả năng bởi tất cả các lớp. Làm cách nào để di chuyển thông tin đó xung quanh mã mà không có mọi thứ trong một lớp hoặc làm cho nó tĩnh?
Tôi không thể thấy cách để chuỗi đó tồn tại trong Form1
mà không làm cho nó tĩnh (vì tất cả các sự kiện và chức năng biểu mẫu sẽ cần để có thể xem nó để chuyển nó vào một lớp).
Tôi không thể nhìn thấy một cách để đưa chuỗi vào một lớp khác mà không cần phải làm cho chuỗi và toàn bộ lớp tĩnh, vì vậy các lớp khác có thể nhìn thấy nó.
Có thể có điều gì đó tôi thiếu trong việc thực sự khởi tạo các lớp và làm cho các đối tượng tương tác với nhau.
Đây là câu hỏi lớn và không thể trả lời dễ dàng. Xem xét đọc một số sách về OOP và [Mẫu thiết kế] (http://www.amazon.co.uk/Head-First-Design-Patterns-Freeman/dp/0596007124/ref=sr_1_fkmr0_1?ie=UTF8&qid=1346955994&sr=8 -1-fkmr0). –
Bỏ phiếu để đóng "nếu sách có thể được viết để trả lời ...". Một bộ sách khác sẽ là sách về TDD. I E. một số được tham chiếu tại đây http://stackoverflow.com/questions/880401/what-book-on-tdd-for-c-sharp-with-treatment-of-mocks. –
Đó thực sự là một câu hỏi lớn. Để hy vọng ít nhất là giúp đỡ, hãy xem xét rằng _classes_ của bạn có lẽ không nên nói chuyện với nhau, nhưng _objects_ instantiated từ những lớp học chắc chắn có thể. Bạn sẽ muốn giữ các phụ thuộc đối tượng chéo ở mức tối thiểu, tất nhiên, chỉ vì các lý do hỗ trợ. Thực hiện theo các quy tắc của ngón tay cái như "yêu cầu, không khởi tạo" có nghĩa là nếu một hàm trong Class A cần một thể hiện của Class B thì nó sẽ yêu cầu một đối tượng được cấp cho nó, chứ không phải tạo ra nó trong nội bộ. Có một _lot_ nhiều hơn cho tất cả điều này, tất nhiên. – David