面向对象的特征

Jun 07, 2016 pm 04:11 PM
uml 学ぶ 物体 特徴 のために

在UML中,了解到了面向对象,所以对面向对象有个初步的认识,为以后能够更加方便的理解面向对象打下一个好的基

在UML中,了解到了面向对象,所以对面向对象有个初步的认识,为以后能够更加方便的理解面向对象打下一个好的基础。

抽象、封装、继承和多态,这是面向对象技术的四大基本特征,也是面向对象程序设计思想的组成。正是这些特征,使得程序的安全性、可靠性和可重用性得到保证,并且经过发展,面向对象的思想应用范围更加广泛,不光是软件,在硬件、人工智能、分布式计算、操作系统等领域的应用也越来越重要。

抽象

抽象可以忽略事物中与当前目标无关的非本质特征、强调与当前目标有关的特征。比如地球仪,我们的目标是通过地球仪来认识地球的全貌,而不考虑地球仪上的部分与地球对应部分的比例是多少。这只是一个地球的模型,抽象的模型越简单、展露的特点越少,模型就越通用。我们通过观察地球仪,可以找到大家公认的七大洲四大洋,并不一定要知道每个大洲或大洋的具体模样,在地球仪上都有,随便一看就可以分辨出来。

抽象也可以对信息进行分类处理,将对象按照一定的标准进行划分,实现抽象模型的层次结构,更加通用和易处理。这样,抽象出来的类就为对象的重用提供了保障。

封装

把对象的状态和行为绑到一起的机制,使对象形成一个独立的整体,并且尽可能的隐藏对象的内部细节。封装的信息屏蔽作用反应了事物的相对独立性,帮助保护数据的完整性。绑定有两个含义:一时把对象的全部状态和行为结合在一起,形成一个不可分割的整体。对象的私有属性只能够由对象的行为来修改和读取;二是尽可能隐蔽对象的内部细节,与外界的联系只能通过外部接口来实现。封装的结果是使对象以外的部分不能随意更改对象的内部属性或状态,可以通过公共访问控制器来控制对象封装了的属性或状态的改变。

在面向对象的程序设计中,不能一味的限制对象的属性被外部直接读取,否则将增加很多无用的操作,要对对象的属性进行分析后再设置。

继承

各种事物之间不光有它们的共性,还有各个事物自己的特性,如果忽略了事物的特性,那么世界就会变得一层不变,失去了特色的精彩世界。事物的各自的特色和个性是这个层次的世界稳固的原因,这些特色也是来区别事物共性的部分,相辅相成。

与抽象对比,抽象是把事物间的特性舍弃,抽象出事物间的共性成为一个类;而继承则是提取了事物间的不同特性形成的多个类,这个类具有前一个类的全部特征,是前一个类的子集,形成了一个层次的结构。这样就可以看出,继承和抽象是两个相逆的过程,抽象是从多个对象中抽象出来了共性的类,是一个由多到少的过程;继承则是从对象类中分层为多个具有自己特性的子类,是一个由少到多的过程。


特别的,继承意味着“自动拥有”,即在特殊类中不必重新对已经存在一般类中的所定义过的属性和行为进行定义,而是特殊类自动的,隐含的拥有其一般类的属性和行为,且继承后这些属性和行为都是自己确实存在的。一般类称为基类,特殊类称为派生类。以上图为例,小学生和中学生,大学生,研究生这四个特殊类是学生类这个一般类的子类,也是从学生类中继承来的新类,它们自动的拥有了所有属于学生类的属性和方法,而同时它们又有自己的特性,不用再重新定义在学生类中已经定义过的属性和方法。学生类是基类,小学生等类是派生类。

继承在面向对象软件的开发过程中有如下目的,或者可以说是优势:1.对类的描述更加简洁;2.能够重用和扩展现有类库资源;3.是软件易于维护和修改。

多态

多态是指两个或多个属于不同类的对象,对于同一个消息或方法调用所作出的不同相应的能力。在面向对象的程序设计中,多态性是指在两个或多个属于不同类的同一函数名对应于多个具有相似功能的不同函数,可以使用相同的调用方式来调用这些具有不同功能的同名函数。这个可以这样理解,在一个图形的基类中有一个方法是画图,派生类矩形和派生类椭圆中也有画图的方法,但是通过同一个画图动作,矩形类画出来的图形是矩形,椭圆中画图画出来的是椭圆。

继承性和多态性的结合,实现了软件的个性化设计。面向对象中的抽象和继承更加重要,对面向对象的理解非常有帮助,当对面向对象陌生的时候可以以这两个为突破点,全面理解面向对象。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP の json_encode() 関数を使用して配列またはオブジェクトを JSON 文字列に変換する PHP の json_encode() 関数を使用して配列またはオブジェクトを JSON 文字列に変換する Nov 03, 2023 pm 03:30 PM

JSON (JavaScriptObjectNotation) は、Web アプリケーション間のデータ交換の一般的な形式となっている軽量のデータ交換形式です。 PHP の json_encode() 関数は、配列またはオブジェクトを JSON 文字列に変換できます。この記事では、PHPのjson_encode()関数の構文、パラメータ、戻り値、具体的な例などの使い方を紹介します。構文 json_encode() 関数の構文は次のとおりです。

Redisson キャッシュ テクノロジーについて学ぶ Redisson キャッシュ テクノロジーについて学ぶ Jun 21, 2023 am 09:54 AM

Redisson は、Java アプリケーション用の Redis ベースのキャッシュ ソリューションです。 Java アプリケーションで Redis をキャッシュとして使用することをより便利かつ効率的にするための多くの便利な機能が提供されます。 Redisson が提供するキャッシュ機能には以下が含まれます。 1. 分散マッピング (マップ): Redisson は、分散マップを作成するための API をいくつか提供します。これらのマップには、キーと値のペア、ハッシュ エントリ、またはオブジェクトを含めることができ、複数のノード間での共有をサポートできます。

概要: JSP ファイルを開く方法の簡単な概要 概要: JSP ファイルを開く方法の簡単な概要 Jan 31, 2024 pm 09:28 PM

JSP ファイルを開く方法 JSP (JavaServerPages) は、プログラマが HTML ページに Java コードを埋め込むことを可能にする動的 Web ページ テクノロジです。 JSP ファイルは、HTML コード、XML タグ、および Java コードを含むテキスト ファイルです。 JSP ファイルが要求されると、そのファイルは JavaServlet にコンパイルされ、Web サーバーによって実行されます。 JSP ファイルを開く方法 JSP ファイルを開く方法はいくつかあります。最も簡単な方法はテキストエディタを使用することです。

MySQLクエリ結果の配列をオブジェクトに変換するにはどうすればよいですか? MySQLクエリ結果の配列をオブジェクトに変換するにはどうすればよいですか? Apr 29, 2024 pm 01:09 PM

MySQL クエリ結果の配列をオブジェクトに変換する方法は次のとおりです。 空のオブジェクト配列を作成します。結果の配列をループし、行ごとに新しいオブジェクトを作成します。 foreach ループを使用して、各行のキーと値のペアを新しいオブジェクトの対応するプロパティに割り当てます。新しいオブジェクトをオブジェクト配列に追加します。データベース接続を閉じます。

Python の __contains__() 関数を使用してオブジェクトの包含操作を定義する Python の __contains__() 関数を使用してオブジェクトの包含操作を定義する Aug 22, 2023 pm 04:23 PM

Python の __contains__() 関数を使用して、オブジェクトの包含操作を定義します。Python は、さまざまな種類のデータを処理するための多くの強力な機能を提供する、簡潔で強力なプログラミング言語です。その 1 つは、__contains__() 関数を定義してオブジェクトの包含操作を実装することです。この記事では、__contains__() 関数を使用してオブジェクトの包含操作を定義する方法とサンプル コードを紹介します。 __contains__() 関数は Pytho です

Python の __le__() 関数を使用して、2 つのオブジェクトの小なり等しい比較を定義します。 Python の __le__() 関数を使用して、2 つのオブジェクトの小なり等しい比較を定義します。 Aug 21, 2023 pm 09:29 PM

タイトル: Python の __le__() 関数を使用して 2 つのオブジェクト以下の比較を定義する Python では、特別なメソッドを使用してオブジェクト間の比較演算を定義できます。その 1 つは __le__() 関数で、以下の比較を定義するために使用されます。 __le__() 関数は Python のマジック メソッドであり、「以下」演算を実装するために使用される特別な関数です。小なり等しい演算子 (<=) を使用して 2 つのオブジェクトを比較すると、Python

PHP における配列とオブジェクトの違いは何ですか? PHP における配列とオブジェクトの違いは何ですか? Apr 29, 2024 pm 02:39 PM

PHP では、配列は順序付けられたシーケンスであり、要素はインデックスによってアクセスされます。オブジェクトは、new キーワードによって作成されたプロパティとメソッドを持つエンティティです。配列へのアクセスはインデックス経由で、オブジェクトへのアクセスはプロパティ/メソッド経由で行われます。配列値が渡され、オブジェクト参照が渡されます。

PHP の Request オブジェクトとは何ですか? PHP の Request オブジェクトとは何ですか? Feb 27, 2024 pm 09:06 PM

PHP の Request オブジェクトは、クライアントからサーバーに送信される HTTP リクエストを処理するために使用されるオブジェクトです。 Request オブジェクトを通じて、リクエストを処理して応答するために、リクエスト メソッド、リクエスト ヘッダー情報、リクエスト パラメータなどのクライアントのリクエスト情報を取得できます。 PHP では、$_REQUEST、$_GET、$_POST などのグローバル変数を使用して、要求された情報を取得できますが、これらの変数はオブジェクトではなく配列です。リクエスト情報をより柔軟かつ便利に処理するために、次のことができます。

See all articles