面向物件的設計從發明計算機的那一刻起就開始了,那里有編程,編程方法也應運而生,編程基本上是在向計算機提供某些指令,

?
在計算時代的開始,編程通常僅限于機器語言編程,機器語言是指特定于特定機器或處理器的那些指令集,其形式為0和1,這些是位序列(0100110…),但是用機器語言撰寫程式或開發軟體非常困難,
用當今的場景開發使用位序列的軟體實際上是不可能的,這是程式員轉向下一代編程語言,開發匯編語言的主要原因,因為匯編語言與英語足夠接近,易于理解,這些匯編語言用于微處理器,隨著微處理器的發明,匯編語言在整個工業中得到了繁榮和統治,但這還遠遠不夠,程式員再次想出了新的東西,即結構化和程序式編程,

?
結構化編程–
結構化編程方法的基本原理是將程式分為功能和模塊,模塊和功能的使用使程式更易于理解和閱讀,它有助于撰寫更簡潔的代碼,并保持對功能和模塊的控制,這種方法重視功能而不是資料,它專注于大型軟體應用程式的開發,例如,C用于現代作業系統開發,編程語言:PASCAL(由Niklaus Wirth引入)和C(由Dennis Ritchie引入)遵循這種方法,
程式編程方法–
這種方法也稱為自頂向下方法,在這種方法中,程式分為執行特定任務的功能,此方法主要用于中型應用程式,資料是全域的,所有功能都可以訪問全域資料,程式編程方法的基本缺點是資料不安全,因為資料是全域的并且可以由任何功能訪問,程式控制流程是通過函式呼叫和goto陳述句實作的,編程語言:FORTRAN(由IBM開發)和COBOL(由Grace Murray Hopper博士開發)遵循這種方法,
這些編程結構是在1970年代末和1980年代開發的,這些語言雖然滿足了結構良好的程式,軟體等的標準,但仍然存在一些問題,它們的結構不如當時的要求,它們似乎過于籠統,與實時應用程式無關,
為了解決這類問題,開發了面向物件的方法OOP作為解決方案,

?
面向物件編程(OOP)的方法–
OOP的概念基本上是為了克服上述編程方法的缺點而設計的,該方法與現實世界中的應用不太接近,需求增加了,但是仍然使用常規方法,這種新方法帶來了編程方法學領域的一場革命,
面向物件編程(OOP)就是什么,它允許在某些類和實時物件的幫助下撰寫程式,我們可以說這種方法與現實世界及其應用非常接近,因為這些類和物件的狀態和行為與現實世界物件幾乎相同,
讓我們更深入地介紹OOP的一般概念,如下所示:
什么是類和物件?
這是OOP的基本概念;C語言中使用的結構的擴展概念,它是抽象的且用戶定義的資料型別,它由幾個變數和函陣列成,該類的主要目的是存盤資料和資訊,類的成員定義類的行為,類是物件的藍圖,但是,我們可以說類的實作是物件,該類對世界不可見,但物件可見,
Class car { int car_id; char colour[4]; float engine_no; double distance; void distance_travelled(); float petrol_used(); char music_player(); void display(); }
在這里,類汽車具有屬性car_id,顏色,engine_no和距離,它類似于具有相同規格的現實世界中的汽車,可以將其宣告為公開(對班級以外的所有人可見),受保護和私有(對任何人都不可見),另外,還有一些方法,例如distance_travelled(),petrol_used(),music_player()和display(),在下面給出的代碼中,汽車是類,而c1是汽車的物件,
#include <iostream> using namespace std; class car { public: int car_id; double distance; void distance_travelled(); void display(int a, int b) { cout << "car id is=\t" << a << "\ndistance travelled =\t" << b + 5; } }; int main() { car c1; // Declare c1 of type car c1.car_id = 321; c1.distance = 12; c1.display(321, 12); return 0; }
資料抽象–
抽象是指表示重要特征和特殊特征而不包含背景細節或對該特征的解釋的行為,資料抽象簡化了資料庫設計,

?
物理級別:
它描述了記錄的存盤方式,這些記錄通常對用戶是隱藏的,可以用短語“存盤塊”來描述,
邏輯級別:
它描述存盤在資料庫中的資料以及資料之間的關系,程式員通常在此級別上作業,因為他們知道維護資料之間的關系所需的功能,
查看級別:
應用程式出于安全目的隱藏資料型別和資訊的詳細資訊,此級別通常在GUI的幫助下實作,并顯示了針對用戶的詳細資訊,
封裝–
封裝是面向物件編程(OOP)中的基本概念之一,它描述了包裝資料的思想以及在一個單元(例如Java中的類)中處理資料的方法,此概念通常用于從外部隱藏物件的內部狀態表示,
繼承–
繼承是一個類繼承父類的另一類的功能或屬性的能力,當我們撰寫一個類時,我們從其他類繼承屬性,因此,當我們創建一個類時,我們不需要一次又一次地撰寫所有屬性和函式,因為它們可以從擁有它的另一個類中繼承,繼承使用戶可以在可能的情況下重用代碼并減少其冗余,

import java.io.*; class GFG { public static void main(String[] args) { System.out.println("GfG!"); Dog dog = new Dog(); dog.name = "Bull dog"; dog.color = "Brown"; dog.bark(); dog.run(); Cat cat = new Cat(); cat.name = "Rag doll"; cat.pattern = "White and slight brownish"; cat.meow(); cat.run(); Animal animal = new Animal(); animal.name = "My favourite pets"; animal.run(); } } class Animal { String name; public void run() { System.out.println("Animal is running!"); } } class Dog extends Animal { /// the class dog is the child and animal is the parent String color; public void bark() { System.out.println(name + " Wooh ! Wooh !" + "I am of colour " + color); } } class Cat extends Animal { String pattern; public void meow() { System.out.println(name + " Meow ! Meow !" + "I am of colour " + pattern); } }
多型性–
多型性是指以多種形式處理資料的能力,它允許以各種方式執行同一任務,它由方法多載和方法重寫組成,即,一次撰寫方法并使用相同的方法名稱執行許多任務,

?
?
#include <iostream> using namespace std; void output(float); void output(int); void output(int, float); int main() { cout << "\nGfG!\n"; int a = 23; float b = 2.3; output(a); output(b); output(a, b); return 0; } void output(int var) { // same function name but different task cout << "Integer number:\t" << var << endl; } void output(float var) { // same function name but different task cout << "Float number:\t" << var << endl; } void output(int var1, float var2) { // same function name but different task cout << "Integer number:\t" << var1; cout << " and float number:" << var2; }
有關OOP的一些重要知識:
OOP將資料視為關鍵要素,
重點是資料而不是程式,
將問題分解為更簡單的模塊,
不允許資料在整個系統中自由流動,即區域控制流,
資料受到外部功能的保護,
OOP的優勢–
它很好地模擬了現實世界,
使用OOP,程式易于理解和維護,
OOP提供代碼可重用性,已經創建的類可以重復使用,而不必再次撰寫它們,
OOP促進了可以并行開發類的程式的快速開發,
使用OOP,程式更易于測驗,管理和除錯,
OOP的缺點–
使用OOP時,有時會過度概括類,
階級之間的關系有時變得膚淺,
OOP設計很棘手,需要適當的知識,另外,需要對OOP編程進行適當的規劃和設計,
要使用OOP進行編程,程式員需要適當的技能,例如根據物件和類等進行設計,編程和思考的技能,
文章來源丨極客(geeksforGeeks)
每天學點小知識,希望對你有幫助~
另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~
C語言C++編程學習交流圈子,QQ群:765803539【點擊進入】微信公眾號:C語言編程學習基地
分享(原始碼、專案實戰視頻、專案筆記,基礎入門教程)
歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
編程學習視頻分享:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/273531.html
標籤:其他
上一篇:QT 遍歷UI控制元件到XML和從XML加載值到UI控制元件
下一篇:Java的集合類
