什麼是物件導向的程式設計思想

時間 2021-10-15 00:15:10

1樓:匿名使用者

物件導向

物件導向(object oriented,oo)是當前計算機界關心的重點,它是90年代軟體開發方法的主流。物件導向的概念和應用已超越了程式設計和軟體開發,擴充套件到很寬的範圍。如資料庫系統、互動式介面、應用結構、應用平臺、分散式系統、網路管理結構、cad技術、人工智慧等領域。

談到物件導向,這方面的文章非常多。但是,明確地給出物件的定義或說明物件的定義的非常少——至少我現在還沒有發現。其初,「物件導向」是專指在程式設計中採用封裝、繼承、抽象等設計方法。

可是,這個定義顯然不能再適合現在情況。物件導向的思想已經涉及到軟體開發的各個方面。如,物件導向的分析(ooa,object oriented analysis),物件導向的設計(ood,object oriented design)、以及我們經常說的物件導向的程式設計實現(oop,object oriented programming)。

許多有關物件導向的文章都只是講述在物件導向的開發中所需要注意的問題或所採用的比較好的設計方法。看這些文章只有真正懂得什麼是物件,什麼是物件導向,才能最大程度地對自己有所裨益。這一點,恐怕對初學者甚至是從事相關工作多年的人員也會對它們的概念模糊不清。

物件導向是當前計算機界關心的重點,它是90年代軟體開發方法的主流。物件導向的概念和應用已超越了程式設計和軟體開發,擴充套件到很寬的範圍。如資料庫系統、互動式介面、應用結構、應用平臺、分散式系統、網路管理結構、cad技術、人工智慧等領域。

一、傳統開發方法存在問題

1.軟體重用性差

重用性是指同一事物不經修改或稍加修改就可多次重複使用的性質。軟體重用性是軟體工程追求的目標之一。

2.軟體可維護性差

軟體工程強調軟體的可維護性,強調文件資料的重要性,規定最終的軟體產品應該由完整、一致的配置成分組成。在軟體開發過程中,始終強調軟體的可讀性、可修改性和可測試性是軟體的重要的質量指標。實踐證明,用傳統方法開發出來的軟體,維護時其費用和成本仍然很高,其原因是可修改性差,維護困難,導致可維護性差。

3.開發出的軟體不能滿足使用者需要

用傳統的結構化方法開發大型軟體系統涉及各種不同領域的知識,在開發需求模糊或需求動態變化的系統時,所開發出的軟體系統往往不能真正滿足使用者的需要。

用結構化方法開發的軟體,其穩定性、可修改性和可重用性都比較差,這是因為結構化方法的本質是功能分解,從代表目標系統整體功能的單個處理著手,自頂向下不斷把複雜的處理分解為子處理,這樣一層一層的分解下去,直到僅剩下若干個容易實現的子處理功能為止,然後用相應的工具來描述各個最低層的處理。因此,結構化方法是圍繞實現處理功能的「過程」來構造系統的。然而,使用者需求的變化大部分是針對功能的,因此,這種變化對於基於過程的設計來說是災難性的。

用這種方法設計出來的系統結構常常是不穩定的 ,使用者需求的變化往往造成系統結構的較大變化,從而需要花費很大代價才能實現這種變化。

二、物件導向的基本概念

(1)物件。

物件是人們要進行研究的任何事物,從最簡單的整數到複雜的飛機等均可看作物件,它不僅能表示具體的事物,還能表示抽象的規則、計劃或事件。

(2)物件的狀態和行為。

物件具有狀態,一個物件用資料值來描述它的狀態。

物件還有操作,用於改變物件的狀態,物件及其操作就是物件的行為。

物件實現了資料和操作的結合,使資料和操作封裝於物件的統一體中

(3)類。

具有相同或相似性質的物件的抽象就是類。因此,物件的抽象是類,類的具體化就是物件,也可以說類的例項是物件。

類具有屬性,它是物件的狀態的抽象,用資料結構來描述類的屬性。

類具有操作,它是物件的行為的抽象,用操作名和實現該操作的方法來描述。

(4)類的結構。

在客觀世界中有若干類,這些類之間有一定的結構關係。通常有兩種主要的結構關係,即一般--具體結構關係,整體--部分結構關係。

①一般——具體結構稱為分類結構,也可以說是「或」關係,或者是「is a」關係。

②整體——部分結構稱為組裝結構,它們之間的關係是一種「與」關係,或者是「has a」關係。

(5)訊息和方法。

物件之間進行通訊的結構叫做訊息。在物件的操作中,當一個訊息傳送給某個物件時,訊息包含接收物件去執行某種操作的資訊。傳送一條訊息至少要包括說明接受訊息的物件名、傳送給該物件的訊息名(即物件名、方法名)。

一般還要對引數加以說明,引數可以是認識該訊息的物件所知道的變數名,或者是所有物件都知道的全域性變數名。

類中操作的實現過程叫做方法,一個方法有方法名、引數、方法體。訊息傳遞如圖10-1所示。

二、物件導向的特徵

(1)物件唯一性。

每個物件都有自身唯一的標識,通過這種標識,可找到相應的物件。在物件的整個生命期中,它的標識都不改變,不同的物件不能有相同的標識。

(2)分類性。

分類性是指將具有一致的資料結構(屬性)和行為(操作)的物件抽象成類。一個類就是這樣一種抽象,它反映了與應用有關的重要性質,而忽略其他一些無關內容。任何類的劃分都是主觀的,但必須與具體的應用有關。

(3)繼承性。

繼承性是子類自動共享父類資料結構和方法的機制,這是類之間的一種關係。在定義和實現一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作為自己的內容,並加入若干新的內容。

繼承性是物件導向程式設計語言不同於其它語言的最重要的特點,是其他語言所沒有的。

在類層次中,子類只繼承一個父類的資料結構和方法,則稱為單重繼承。

在類層次中,子類繼承了多個父類的資料結構和方法,則稱為多重繼承。

在軟體開發中,類的繼承性使所建立的軟體具有開放性、可擴充性,這是資訊組織與分類的行之有效的方法,它簡化了物件、類的建立工作量,增加了**的可重性。

採用繼承性,提供了類的規範的等級結構。通過類的繼承關係,使公共的特效能夠共享,提高了軟體的重用性。

(4)多型性(多形性)

多型性使指相同的操作或函式、過程可作用於多種型別的物件上並獲得不同的結果。不同的物件,收到同一訊息可以產生不同的結果,這種現象稱為多型性。

多型性允許每個物件以適合自身的方式去響應共同的訊息。

多型性增強了軟體的靈活性和重用性。

物件,強調物體屬性, 比如實現邏輯 物體a 移動到b點,

物件思想就是要你想象 你吧a 看成什麼 你可以吧它看成車, 用車輪的方式(方法)讓它走動, 可以看成託運(方法)的方式拉過去。

物件導向的方法 是一類物體的屬性 所具備的 行為,理論上 可以參照程序導向的函式去理解

兒程序導向, 我不關心你用什麼方式,看成什麼 ,管你是推,是拽,只要你運過來就行 相對而言 沒有針對性

樓主可以 設想一下網路遊戲, 你玩的遊戲 的怪物, 是分種類的, 他們都是自動的東西, 沒人去手動生成, 一類怪物 有一類招數和樣子, 行為屬性, 這就是物件思想

2樓:秦敬線香梅

面向象面向象(object

oriented,oo)

前計算機界關

重點90

代軟體發

主流面向象概念

應用已超越

程式設計軟體發

擴充套件寬範圍資料庫系統、互動式介面、應用結構、應用平臺、布式系統、網路管理結構、cad技術、

工智慧等領域談面向

象面文章非明確給象

定義或說明象定義

非少——至少我現沒發現

其初面向象專指

程式設計

採用封裝、繼承、抽象等設計

定義顯能再適合現

情況面向

象思想已經涉及軟體發

各面面向象

析(ooa

object

oriented

analysis)面向象

設計(ood

object

oriented

design)、及我經

說面向象程式設計實現(oop

object

oriented

programming)

許關面向

象文章都

講述面向象發

所需要注意

問題或所採用

比較設計

看些文章真懂

象面向象才能

程度自所裨益點恐怕初

者甚至事相關工作

員概念模糊清面向

象前計算機界關

重點90

代軟體發

主流面向象概念

應用已超越

程式設計軟體發

擴充套件寬範圍資料庫系統、互動式介面、應用結構、應用平臺、布式系統、網路管理結構、cad技術、

工智慧等領域

、傳統發存問題

1.軟體重用性差

重用性指同

事物經修改或稍加修改

重複使用

性質軟體重用性

軟體工程追求

目標2.軟體

維護性差

軟體工程強調軟體

維護性強調文件資料

重要性規定

終軟體產品應該由完整、致配置

組軟體發程

始終強調軟體

讀性、修改性

測試性軟體

重要質量指標

實踐證明

用傳統發

軟體維護

其費用本仍高其原

修改性差

維護困難

導致維護性差3.發

軟體能滿足使用者需要

用傳統結構化

髮型軟體系統涉及各種

同領域知識

發需求模糊或需求

態變化系統所發

軟體系統往往

能真滿足使用者

需要用結構化發軟體

其穩定性、

修改性重用性都比較差

結構化本質功能解

代表目標系統整體功能

單處理著手

自頂向斷

複雜處理解處理

層層解直

僅剩若干

容易實現

處理功能

止用相應

工具描述各

低層處理

結構化圍繞實現處理功能

程構造系統

使用者需求變化部

針功能種變化於基於程設計

說災難性用種

設計系統結構

穩定使用者需求

變化往往造

系統結構較變化

需要花費

代價才能實現

種變化二、面向

象基本概念

(1)象

象要進行研究

任何事物

簡單整數

複雜飛機等均看作象

僅能表示具體

事物能表示抽象

規則、計劃或事件

(2)象狀態行

象具狀態

象用資料值

描述狀態象操作

用於改變象狀態

象及其操作象行

象實現資料

操作結合

使資料操作封裝於象統

體(3)類

具相同或相似性質象抽象

類象抽象類

類具體化象說類

例項象類具屬性象狀態

抽象用資料結構

描述類屬性

類具操作象行

抽象用操作名

實現該操作

描述(4)類

結構客觀世界

若干類些類間定

結構關係

通兩種主要

結構關係

即般--具體結構關係

整體--部

結構關係

①般——具體結構稱

類結構說或關係

或者isa關係

②整體——部

結構稱組裝結構間關係

種與關係或者

hasa

關係(5)訊息

象間進行通訊

結構叫做訊息象操作

訊息傳送給某

象訊息包含接收

象執行某種操作

資訊傳送

條訊息至少要包括說明接受訊息

象名、傳送給該

象訊息名(即

象名、名)般要

引數加說明

引數認識該訊息

象所知道

變數名或者

所象都知道

全域性變數名類操作

實現程叫做

名、引數、

體訊息傳遞

圖10-1所示

二、面向象特徵

(1)象唯性每

象都自身唯標識通

種標識找相應象

象整命期標識都改變同

象能相同標識

(2)類性類性指

具致資料結構(屬性)

行(操作)

象抽象類

類種抽象

反映與應用

關重要性質

忽略其些

關內容任何類劃都

主觀必須與具體應用關

(3)繼承性

繼承性類自

共享父類資料結構機制類

間種關係

定義實現類候

已經存類

基礎進行

已經存類所定義

內容作自

內容並加入若干新

內容繼承性

面向象程式設計語言

同於其語言

重要特點

其語言所沒類層類

繼承父類

資料結構

則稱單重繼承

類層類繼承

父類資料結構

則稱重繼承軟體發

類繼承性使所建立

軟體具放性、

擴充性資訊組織與類行

效簡化象、類建立工作量

增加**

重性採用繼承性提供類

規範等級結構通類

繼承關係

使公共特效能夠共享

提高軟體

重用性(4)

態性(形性)

態性使指相同

操作或函式、

程作用於

種型別象並獲同

結同象收

同訊息產同

結種現象稱

態性態性允許每

象適合自身

式響應共同

訊息態性增強軟體靈

性重用性

象強調物體屬性

比實現邏輯

物體a移

b點象思想要想象

吧a看吧看

車用車輪

式()讓走看

託運()

式拉麵向

象類物體

屬性所具備行理論

參照面向程函式

理解面向程我

關用式看

管推拽要

執行相言

沒針性樓主

設想網路遊戲玩遊戲

怪物種類都自

東西沒手類怪物

類招數行

屬性象思想

物件導向思想 簡單描述,什麼是物件導向思想?

物件導向的基本哲學是認為世界是由各種各樣具有自己的運動規律和內部狀態的物件所組成的 不同物件之間的相互作用和通訊構成了完整的現實世界。物件導向的方法是物件導向的世界觀在開發方法中的直接運用。至今還沒有統一的概念,我這裡把它定義為 按人們認識客觀世界的系統思維方式,採用基於物件 實體 的概念建立模型,...

什麼是物件導向?為什麼要用物件導向來程式設計

物件導向和麵向過程相對應,但是程序導向的應用不如物件導向來的廣,原因在於物件導向定義物件的屬性和方法,不同的程式設計想要用直接呼叫就可以,方便且適用性廣。這麼說你明白了嗎?為什麼要用物件導向思想程式設計 物件導向的主要思想是 繼承 封裝 多型 這種思想方便解決較為複雜的專案,且維護起來較為容易。物件...

物件導向程式設計都有哪些知識,什麼是物件導向程式設計?

封裝,繼承,多型。物件導向的三大特性,深刻理解了這三大特性,就基本上掌握了物件導向程式設計思想的精髓。繼承 多型 虛類 方法 屬性 事件 建構函式 解構函式 過載 公共 私有 委託 介面 好陌生哦 什麼是物件導向程式設計?在我理解,物件導向是向現實世界模型的自然延伸,這是一種 萬物皆物件 的程式設計...