Mô hình phù hợp cho lập trình UI


9

Đây là một câu hỏi cụ thể hơn (hoặc thực tế là hai, nhưng chúng có liên quan) đến từ các bình luận về cái chết của công nghệ OOP khi ai đó tuyên bố rằng OOP không phải là mô hình phù hợp cho lập trình GUI.

Đọc các bình luận ở đó và ở đây tôi vẫn có cảm giác có nhiều điều cần học: mô hình lập trình nào được coi là phù hợp và tại sao chúng tốt hơn các ví dụ khác (có lẽ có ví dụ để minh họa?)

Tôi đã xóa ví dụ tk khỏi tiêu đề và câu hỏi


@Inca - Hãy nhớ rằng SK-logic (người bắt nguồn nhận xét này) chiến đấu với OOP trong mọi dịp có thể - như thể anh ta có một nhiệm vụ cuồng tín. Tôi hoàn toàn nghi ngờ rằng anh ấy thực sự có thể chứng minh rằng tk hoàn toàn không liên quan đến OOP.
Andreas_D

-1: để trích dẫn ý kiến ​​cá nhân như thể đó là sự thật. "OOP không phải là mô hình phù hợp cho lập trình GUI" sẽ xuất hiện khi đối mặt với C # và Objective C, dường như phụ thuộc rất nhiều vào OOP cho lập trình GUI. Nếu đó không phải là mô hình đúng thì tất cả thị phần khổng lồ của Apple không thực sự tồn tại hay gì đó.
S.Lott

1
@ S.Lott không phải là mô hình đúng, GUI nên được khai báo. Bạn có vẻ khó hiểu phổ biến với những gì là đúng.
Raynos

@Raynos: "khai báo". Như trong, một số đối tượng liên quan? Tôi không hiểu làm thế nào khai báo không phải là một loạt các mối quan hệ giữa một loạt các đối tượng. Và. Điều đó có vẻ lạc đề cho câu hỏi này. Câu hỏi dường như là về OO, không phải là cách tốt hơn để viết GUI. Tiêu đề dường như bị sai lệch so với câu hỏi thực tế. Không phải là rất tốt.
S.Lott

1
@Inca: Xem xét việc coi thường nó hoàn toàn như một cường điệu.
S.Lott

Câu trả lời:


9

Tôi thường không phải là người đề xuất OOP, nhưng tôi sẽ nói rằng lập trình GUI thể hiện một số cơ hội tốt nhất để sử dụng các điểm mạnh của OOP. Việc triển khai các vật dụng khác nhau được thực hiện dễ dàng hơn nhiều bằng cách sử dụng tính đa hình và kế thừa của OOP. Thư viện GUI của PLT Rquet là một ví dụ điển hình.


2
Lập trình phản ứng chức năng dường như là một phù hợp tốt hơn.
SK-logic

@ SK-logic: Bạn có thể tạo ra một trường hợp rất tốt cho điều đó, và một số công việc thú vị trong Common Lisp (bạn đã nghe nói về Tế bào chưa?) Đã được thực hiện theo hướng đó. Tôi sẽ chỉnh sửa câu trả lời của tôi để làm cho nó chính xác hơn.
Larry Coleman

5

Một GUI điển hình, được làm bằng các widget và bố cục của chúng, hoàn toàn có thể khai báo. Các widget trên mỗi se sẽ không tương tác với nhau, vì vậy một khái niệm về các đối tượng và tin nhắn có phần xa lạ ở đây. Hiện tại DSL khai báo phân cấp là một loại chính thống, với Tk là một trong những ví dụ ban đầu và WPF là một cách tiếp cận hiện đại hơn cho cùng một điều. Lập trình phản ứng chức năng là một cách tiếp cận thú vị (nhưng không phổ biến lắm).

Một số người có xu hướng nhìn thấy OOP ở bất cứ nơi nào có phân cấp được xác định, điều này là sai - hoàn toàn không có mối liên hệ nào giữa các hệ thống phân cấp nghiêm ngặt (kiểu đọc dữ liệu đại số) và định nghĩa OOP của Kay.


3
Theo kinh nghiệm của tôi, các widget cần phải tương tác với nhau để tạo GUI tốt hơn và các hệ thống khai báo hơn mà tôi đã gặp (một số hệ thống dựa trên xml nhất định, bao gồm HTML + css) chắc chắn thiếu khả năng trong phần tương tác. Ngoài ra, những trải nghiệm của tôi khi kết hợp UI sử dụng khai báo (prolog) và chức năng (Haskell) không thực sự mang lại ấn tượng dễ dàng. Bạn có nguồn nào tôi có thể xem xét mà thảo luận cụ thể hơn về điều này không? Tôi chỉ đưa ra các ví dụ rất trừu tượng (hoặc rất cơ bản) mà không giải thích nhiều về lý do tại sao một số cách tiếp cận nhất định hoạt động tốt hơn
Inca
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.