根據標準定義,對象是包含數據和行爲的實體。 根據我的理解,數據是從外部發送的。例如,我們有一個計算數字的平方的類。我們創建一個實例,並向對象發送消息以及數字,以計算平方。 我們不是從外部發送數據嗎? 爲什麼所有的定義都指出對象包含數據? 謝謝面向對象,對象概念
3
A
回答
2
在這種情況下,數據是對象的狀態。該定義指出對象的狀態/數據應該在內部存儲。例如,請考慮以下類:
class Math {
Double square(double x) {
return x * x;
}
// other similar functions
}
作爲語言結構,它是一個類。但是,它不是面向對象意義上的真正的類。因爲它沒有狀態或數據。它只是一個包裝在類構造中的函數。這不一定是錯誤的。因爲在這種情況下,恰好你有不需要狀態的操作。
試圖強調的定義是:當它(或它的類)同時具有數據和行爲時,你有一個真實的對象。並非每個類構造的用法都代表一個真正的對象。
因此,如果代表它的類滿足以下三個條件,則您有一個對象。
- 該班有州/日期。如果不是,那麼它只是一堆功能。它不是面向對象的,它是程序性的。
- 該類有行爲。如果不是,那麼它只是一個容器,一堆變量(C中的結構)。
- 不僅該類具有狀態/數據和行爲/方法,而且數據和行爲之間存在內在聯繫。這意味着只是將一些變量和函數放在一起並不能成爲真正的對象。例如,如果你有狀態/數據,並且在類中也有一些方法,但是如果該函數不需要對任何狀態進行操作,那麼這個方法是否真的屬於這個類是有問題的。
下面是我認爲是一個適當的類(對象的表示)的簡單示例。
Class Patient {
// blood pressure
double systolic;
double diastolic;
double weight;
int age;
public Patient(double systolic, double diastolic, double weight, int age){
}
Public boolean isHealthy(){
// do some calculations and algorithms on age, weight and blood pressure indicators.
// return result as true of false
}
}
在這裏,我們看到這個類同時具有狀態和行爲。我們也看到,國家和行爲都屬於這個階層。它們是患者概念的屬性。我們進一步看到,操作與數據有內在的關係。您無法諮詢/使用其狀態,無法確定患者是否健康。
0
你的例子是一個私人的情況下,對象不需要保存數據(即狀態)。在這種情況下,它可以被一個函數替換(只是行爲)。大多數對象需要存儲數據。例如,一個對象人應該包含描述該人的品質,而不僅僅是可能的行爲。
1
我認爲這個問題與你的例子非常適合面向對象的設計。我的意思是計算一個數的平方是一個無記憶的函數,因此顯然沒有理由在對象屬性中存儲數據。然而,當你必須處理有狀態實體的管理時,你會更容易地瞭解類和麪向對象的重要性。
0
對象是一個類的實例。
類(a,a * a)是正方形類,但(2,4)是它的一個實例(對象)。是的,數據被髮送到班級並創建新的對象。
相關問題
- 1. Python面向對象的設計概念
- 2. 關於面向對象的概念
- 3. 面向對象編程實踐 - 概念/實體到對象
- 4. Java:面向對象的概念,抽象類,接口
- 5. 面向對象的概念示例汽車,這裏應該是什麼對象?
- 6. Javascript中的Java面向對象的概念
- 7. 簡單的面向對象的編程概念
- 8. Java的面向對象的概念建議
- 9. 面向對象編程的基本概念(C#)
- 10. 面向對象編程的概念和資源管理
- 11. 河內塔在C++中使用面向對象的概念
- 12. 面向對象的概念 - 你在哪裏把「getUserMembershipStorageSize()」
- 13. 新的面向對象編程的概念
- 14. 與面向對象編程概念相關的問題解決
- 15. 你好世界級的面向對象的概念
- 16. 面向對象的關聯哲學概念
- 17. 面嚮對象語言中繼承的概念
- 18. 3個不同對象的OOP概念
- 19. 在android中執行對象池概念
- 20. 子對象的REST URL概念
- 21. JavaScript中的對象繼承概念
- 22. typoscript中對象變量的概念
- 23. PHP OOP概念(值對象/數據訪問對象)
- 24. 關於面向對象和父母/子女關係的概念性問題
- 25. 使用面向對象編程概念的PHP表單處理問題
- 26. 我們如何在java swing中實現面向對象的概念
- 27. Java:高效的配對對象集合概念
- 28. 概念類型找不到對應的對象層類型
- 29. 面向對象練習「空」對象
- 30. 面向對象層
是的,我們輸入到對象中,但對象由兩者組成。 – 2013-02-26 20:11:31
一個對象可能包含這兩個對象,但沒有要求它這樣做。例如,假設我們有一個File對象。我們可以調用一個文件名爲'File :: Open'的方法,如 'myfile-> Open(「SomeFile.txt」);' 當時的File對象可能試圖打開文件,跟蹤一個類文件指針的內部,可能是文件的名稱等。所以現在它有數據,可能是文件大小爲'myfile-> FileSize'或文件中的位置爲'myfile-> FilePosition'。然後你可以調用更多的函數,「行爲」,如'myfile-> Close','myfile-> Read'等。 – 2013-02-26 20:14:42
對象可以由純數據或純行爲或兩者組成。這是你的選擇。添加字段並保持狀態。添加方法並實現您的行爲。對象範例只說它可以包含它們兩個 – Alex 2013-02-26 20:21:03