Định nghĩa chính thức / bộ phận đối phó trong toán học cho các đối tượng của người hâm mộ Mô hình hướng đối tượng


9

Đây là một câu hỏi tôi đã hỏi trong diễn đàn toán học SE, và tôi đã được giới thiệu ở đây. Vì vậy, đây là câu hỏi-

Tôi là người mới trong cả toán học chính thức và khoa học máy tính lý thuyết, vì vậy hãy đồng ý với tôi nếu bạn thấy câu hỏi của tôi không được đóng khung chính xác. Mô hình hướng đối tượng có vẻ rất hữu ích trong việc xác định các tương tác phức tạp khi mô phỏng thế giới thực. Nhưng nó chủ yếu được sử dụng trong lập trình. Tôi đã tự hỏi nếu chúng ta có một khái niệm tương tự trong toán học. Khi chúng ta đang lập trình, chúng ta có thể hiểu khái niệm "Đối tượng" và "Lập trình hướng đối tượng" và chỉ cần thực hiện nó. Nhưng chúng ta có định nghĩa chính thức về "Đối tượng" về mặt Lý thuyết tập hợp không? Hoặc cho vấn đề đó, bất kỳ lý thuyết toán học chính thức nào khác?

Chúng ta có thể thực hiện / chính thức xác định ba khái niệm mô hình hướng đối tượng chính- 1. Đóng gói 2. Kế thừa 3. ​​Đa hình

Tôi biết câu hỏi quá rộng, nhưng sẽ thực sự đánh giá cao nếu bạn có thể cung cấp một số gợi ý để tôi có thể hiểu các khái niệm này tốt hơn.


2
Thực sự có hai câu hỏi như tôi thấy. Một là yêu cầu một chủ nghĩa hình thức của các khái niệm hướng đối tượng. Khác là yêu cầu các khái niệm hướng đối tượng trong toán học. Có lẽ sẽ tốt hơn nếu hỏi hai câu hỏi riêng biệt. Có rất nhiều tài liệu ngoài kia để trả lời câu hỏi đầu tiên, mặc dù có lẽ chỉ một ít cho câu hỏi thứ hai. (Và có lẽ ngày mai tôi sẽ tìm thấy thời gian để trả lời câu hỏi.)
Dave Clarke

Cảm ơn .. bạn có thể vui lòng gợi ý cho tôi một tài liệu để chính thức hóa các khái niệm hướng đối tượng được coi là tiêu chuẩn hoặc "sách giáo khoa" không? Tôi sẽ đợi câu trả lời của bạn cho câu hỏi thứ hai .... :)
user1260776

2
Cuốn sách tiêu chuẩn (của một vài năm trước) là A Theory of Object . Công việc gần đây hơn là Feather weight Java . Ngoài ra còn có một loạt các hội thảo được gọi là Cơ sở của Ngôn ngữ hướng đối tượng liên quan đến các vấn đề này.
Dave Clarke

Cảm ơn! Sẽ lướt qua chúng ... Ngoài ra, tôi tình cờ phát hiện ra "phép tính lambda" có liên quan mật thiết đến câu hỏi của tôi ..
user1260776

Câu trả lời:


9

Câu trả lời là phức tạp, vì hai lý do.

  1. Những người khác nhau trong Khoa học Máy tính giải thích thuật ngữ "đối tượng" khác nhau. Một là một đối tượng bao gồm một số dữ liệu và hoạt động được đóng gói cùng nhau. Mặt khác là một đối tượng là tất cả nhưng cũng có "trạng thái", tức là nó là một dạng của một thực thể thể thay đổi .

  2. Có những vấn đề triết học sâu sắc liên quan đến "thay đổi" nghĩa là gì (và "thực thể" nghĩa là gì, vì nó liên tục thay đổi), và liệu các mô tả toán học có thực sự nắm bắt được các thực thể có thể thay đổi hay không.

hg(x)= =gxg-1hggxgxg-1g,xgxg-1g,xgxg-1,xg-1xg

xx˙x(t)x˙x(t)t. Từ điều này, nhiều nhà toán học suy nghĩ sâu sắc đã kết luận rằng sự thay đổi không thực sự tồn tại và tất cả những gì bạn có là chức năng của thời gian. Nhưng những gì đã thay đổi trong cơ học Newton không phải là vị trí, mà là hạt . Vị trí là trạng thái tức thời của nó. Không có nhà toán học hay nhà vật lý nào giả vờ rằng một hạt là một ý tưởng toán học. Nó là một thứ vật chất.

Vì vậy, nó là với các đối tượng. Chúng là những thứ "vật lý" và các trạng thái là thuộc tính toán học của chúng. Để có một cuộc thảo luận tốt về khía cạnh này, hãy xem Chương 3 của Cấu trúc và diễn giải các chương trình máy tính của Abelson và Sussman . Đây là một cuốn sách giáo khoa tại MIT và họ dạy nó cho tất cả các nhà khoa học và kỹ sư, những người mà tôi nghĩ hiểu những thứ "vật lý" hoàn toàn tốt.

x1(t)x2(t)

Tương tự, cách toán học tiêu chuẩn để mô hình hóa các chương trình hướng đối tượng là coi mỗi đối tượng là một chỉ mục vào không gian trạng thái. Sự khác biệt duy nhất là vì các vật thể đến và đi, và cấu trúc của hệ thống là động, chúng ta cần mở rộng nó thành mô hình "thế giới có thể" trong đó mỗi thế giới về cơ bản là một tập hợp các chỉ số. Phân bổ và phân bổ các đối tượng sẽ liên quan đến việc di chuyển từ thế giới này sang thế giới khác.

Tuy nhiên đang có một vấn đề. Không giống như trong cơ học, chúng tôi muốn trạng thái của các đối tượng của chúng tôi được gói gọn . Nhưng các mô tả toán học của các đối tượng đặt các trạng thái ở khắp mọi nơi, phá hủy hoàn toàn việc đóng gói. Có một mẹo toán học gọi là "tham số quan hệ" có thể được sử dụng để cắt mọi thứ về kích thước. Bây giờ tôi sẽ không đi sâu vào nó, ngoại trừ việc nhấn mạnh rằng đó là một thủ thuật toán học, không phải là một lời giải thích rất khái niệm về đóng gói. Một cách thứ hai để mô hình hóa các đối tượng về mặt toán học, với sự đóng gói, là tinh chỉnh các trạng thái và mô tả hành vi của đối tượng theo các sự kiện có thể quan sát được. Để thảo luận tốt về cả hai mô hình này, tôi có thể giới thiệu cho bạn bài viết của tôi có tiêu đề Đối tượng và các lớp trong Ngôn ngữ giống như Algol .


[Ghi chú đã thêm:]

Một phân tích hay về nền tảng toán học của các đối tượng có thể được tìm thấy trong bài viết " Tìm hiểu về trừu tượng hóa dữ liệu, xem xét lại " của William Cook .


2
Tôi biết ai đó ở đây sẽ có thể trả lời ...
Andrej Bauer

Cảm ơn Uday, vì thời gian của bạn, và câu trả lời chi tiết. Khi tôi hỏi câu hỏi này, tôi chỉ nghĩ theo nghĩa "dữ liệu + hoạt động" và tôi chưa bao giờ nghĩ rằng lý thuyết nhóm có thể đại diện cho "ĐỐI TƯỢNG" là "dữ liệu + hoạt động". Ngoài ra, tôi cũng sẽ đi qua các liên kết bạn đã giới thiệu.
dùng1260776

@AndrejBauer. Vâng, tôi có thể đã quá nhiệt tình. OP có lẽ đã sử dụng "toán học" giống như một từ để chính thức hóa, trái ngược với một ngành học.
Uday Reddy

@Uday, tôi có thể không đặt câu hỏi đúng, nhưng khi tôi có nghĩa là "toán học", tôi rõ ràng có nghĩa là toán học chính thức. Suy nghĩ của tôi là "lý thuyết tập hợp" tạo thành nền tảng của toán học, làm thế nào để 'giải thích' hoặc 'rút ra' các đối tượng của Mô hình OO theo lý thuyết tập hợp. Làm thế nào để chúng ta kết hợp tất cả các Lý thuyết, Đối tượng và Logic hình thức (như logic thứ tự đầu tiên) ... "Mặc dù tôi không hiểu câu trả lời của bạn đầy đủ, tôi có thể hiểu" ý nghĩa "của những gì bạn nói, và tôi đảm bảo với bạn, đây là câu trả lời tôi đang mong đợi. Cảm ơn bạn !! (ý tưởng của tôi chưa hoàn toàn được tổ chức, xin vui lòng tha thứ cho tôi. Tôi vẫn là người mới :))
user1260776

2
@ người dùng1260776. Tôi hiểu. Nhưng quan điểm của tôi là "chính thức" và "toán học" là những ý tưởng khác nhau. Bạn có thể chính thức hóa các khái niệm mà không giảm chúng thành (hoặc lấy chúng từ) toán học. Newton đã chính thức hóa cơ học nhưng không thèm giảm "hạt" thành "bộ". Cá nhân tôi khá vui khi làm theo sự dẫn dắt của Newton và thừa nhận những điều mà tôi không giảm bớt thành các bộ. Nhưng, tôi đoán chúng ta phải biết khi nào nên giảm và khi nào không nên giảm. Đã được đào tạo như một nhà vật lý, tôi thấy điều đó khá dễ thực hiện. Đối với nhiều nhà khoa học máy tính khác, nó có thể không dễ dàng như vậy.
Uday Reddy

0

nghĩ rằng có một mô tả lý thuyết khá tốt về các đối tượng trong cuốn sách cổ điển cũ "cấu trúc và giải thích các chương trình máy tính" [1] của abelson & sussman, dựa trên sơ đồ (một biến thể không thể thiếu). bây giờ miễn phí trực tuyến! điều này cho thấy khái niệm hướng đối tượng có thể được nhúng ngay cả vào phép tính lambda (~ aka Lisp) nếu bạn có một số cơ chế để lưu trữ trạng thái cục bộ. theo tôi hiểu, đây là một cuốn sách giáo khoa MIT cho nhiều năm. không nói đây là ref tốt nhất trên subj; chắc chắn có những cái khác tốt hơn tại pt này.

Tôi không nghĩ rằng điều này đã được chính thức hóa hoàn toàn ở bất cứ nơi nào tôi nghe thấy nhưng các đối tượng nói một cách lỏng lẻo về cơ bản bao gồm mã + dữ liệu ở dạng

  • phương thức (có tham số)
  • trạng thái, tức là các biến thể hiện

trong một số hình thức đóng gói. có thể cho rằng các khía cạnh khác như thừa kế không phải là cơ bản. như đã nêu trong abelson & sussman, cái mà họ gọi là "đường cú pháp".

[1] cấu trúc và giải thích các chương trình máy tính của abelson & sussman


3
Tất nhiên các đối tượng trong ý nghĩa lập trình hướng đối tượng đã được chính thức hóa. Có những cuốn sách của Abadi & Cardelli, Castanga và Kim Bruce dành cho chủ đề này. Đã có 10 năm hội thảo trong loạt FOOL dành cho nền tảng của lập trình hướng đối tượng. Các hội nghị ECOOP và OOPSLA thường xuyên có các bài viết về nền tảng của OO. Thật vậy, bài báo đầu tiên về ngữ nghĩa của OO là khoảng 20 năm.
Dave Clarke

@vzn, cảm ơn vì câu trả lời. Tôi sẽ xem qua những cuốn sách bạn đã đề xuất ...
user1260776

DC-- Tôi nói rất tệ. chính xác hơn, hãy nghĩ rằng sẽ an toàn khi nói rằng các định nghĩa chính thức về những gì chính xác cấu thành một "đối tượng" hoặc các thành phần chính / cơ bản của OOP có xu hướng thay đổi đáng kể trong tài liệu. các định nghĩa có thể đã mở rộng đáng kể theo thời gian. ví dụ tôi nghi ngờ tính kế thừa đã được thêm vào sau đó và ý tưởng ban đầu chủ yếu chỉ là mã + dữ liệu ở dạng đóng gói.
vzn

một ví dụ khác về tính năng OOP không được thống nhất là cơ bản từ những gì tôi có thể nói là nhiều kế thừa được thấy trong ví dụ C ++ nhưng cố tình tránh trong java thay vào đó có lợi cho giao diện. vv
vzn
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.