1. 程式人生 > >資料結構基礎1

資料結構基礎1

一、資料型別:

1.基本資料型別(物理資料型別)

一般分為整數、實數、字元等。

c語言的基本資料型別:

整數(int)字元(char)單精度浮點數(float)雙精度浮點數(double)

2.結構資料型別(虛擬資料型別)

指一個數據結構包含其他的資料型別,如字串(string)、集合(set)、陣列(Array),比基礎資料型別更高階。

3.抽象資料型別(Abstract Data Type)

指定義一些結構資料型別所具備的數學運算關係,只針對資料的運算,而非資料本身的性質。例如:某個資料物件可以插入一個列表,或者在列表中增刪資料物件,而不需關心這個物件的型別是字串、整數、實體還是邏輯值。(堆疊Stack和佇列Queue就是一種典型的ADT模式,比結構資料型別更高階)

二、面向物件程式設計

面向物件 = 物件 + 類 + 繼承 + 訊息

物件

物件(Object):具有責任的實體。用來描述客觀事物的實體,是構成系統的一個基本單位,由一組屬性以及作用在這組屬性的操作構成。

特性:識別符號(區別其他物件)、屬性(狀態)和操作(行為)。

屬性(Attribute):與物件關聯的資料,描述物件靜態特性;

操作(Operation):與物件關聯的程式,描述物件動態特性;

類(Class):

概念

具有相同屬性和操作的一組物件的抽象,它為屬於該類的全部物件提供了統一的抽象描述。

區別

類是靜態的,類的存在、語義和關係在程式執行前就已經定義好了。

物件是動態的,物件在程式執行時可以被建立和刪除。

層次 
這裡寫圖片描述


屬性 
這裡寫圖片描述


方法 
這裡寫圖片描述

 

訊息

這裡寫圖片描述

面向物件程式設計具備以下三個特性:

1.封裝性:利用“類”來實現抽象資料型別。

抽象:將代表事務特徵的資料隱藏起來,並定義一些方法來作為操作這些資料的介面,讓使用者可以接觸到這些方法,而無法直接使用資料,也符合資訊隱藏的意義。這種自定義的資料型別稱為“抽象資料型別”

封裝:每個類都有其資料成員與函式成員,將資料成員定義為私有的(private),而將用來運算或操作資料的函式成員定義為公有的(public)或受保護的(protected)來實現資訊隱藏的功能,即封裝的作用。

封裝的作用

使物件形成兩個部分:介面(可見)和實現(不可見),將物件所宣告的功能(行為)與內部實現(細節)分離

“封裝”的作用是什麼?

資料的安全性:保護物件,避免使用者誤用。
模組的獨立性:保護客戶端(呼叫程式),其實現過程的改變不會影響到相應客戶端的改變。
易開發、易維護性:隱藏複雜性,降低了軟體系統開發難度;各模組獨立元件修改方便,重用性好。

2.繼承性:接近於現實生活中的遺傳,就像子女遺傳父母的某些特徵。繼承允許定義一個新的類來繼承現有的類,進而使用或者修改繼承而來的方法,也支援在子類中加入新的資料成員與函式成員。

泛化(generalization)/繼承(Inheritance) 關係是類元的一般描述和具體描述之間的關係,具體描述建立在一般描述的基礎之上,並對其進行了擴充套件。

繼承(Inheritance):子類( Subclass)可自動擁有父類/超類(SuperClass)的全部屬性和操作。

表示兩個類之間是“is a”關係。
繼承使兩個以上的類共享相同的屬性和/或相同方法。
繼承的各個類間形成層次結構。
繼承提高了複用性,使多型成為了可能。

3.多型性:“同名異式”

在父類中定義的屬性或服務被子類繼承後,可以具有不同的資料型別或表現出不同的行為。

java中有重寫(靜態),過載(動態)

抽象類(abstract class)與介面(Interface)
抽象類

抽象類中至少有一個方法被定義為“abstract”型別的。
“abstract”型別的方法:只有方法定義,沒有方法的具體實現。https://blog.csdn.net/vegetable_bird_001/article/details/51820835
抽象類的類名在模型中一般為“斜體”,或
介面

介面(Interface):描述了一個類的一組外部可用的操作(方法)集合

體現了“介面與實現的分離”的思想,即“資訊隱藏”。