Javaでデータ抽象化を実装する方法は?

公開: 2022-05-17

抽象化、ポリモーフィズム、カプセル化、および継承は、オブジェクト指向プログラミングの4つの基本要素です。 それらの1つであるデータ抽象化については、次の記事で詳しく説明します。 また、Javaでデータの抽象化を実行する方法についても学習します。

目次

データ抽象化とは何ですか?

データの抽象化は、最も重要な詳細だけがユーザーに表示される特徴的な機能です。 ユーザーは、些細な詳細や本質的でない詳細に気付かないままです。 たとえば、自動車は、個別の部品ではなく、全体として見なされます。 無関係な情報を破棄しながら、アイテムの必要な属性のみを識別する方法は、データの抽象化として知られています。

簡単に言うと、データの抽象化では、重要でない要素を非表示にしたまま、重要なアイテムをユーザーに表示します。

キーワード「abstract」を使用して、クラスとインターフェイスを使用して抽象化を実装します。 抽象クラスには、抽象メソッドと具象メソッドの両方を含めることができます。

抽象クラスとは何ですか?

オブジェクト指向プログラミングでは、抽象クラスは1つ以上の抽象メソッドを宣言するクラスです。 抽象クラスと通常のJavaクラスの唯一の違いは、抽象クラスには抽象キーワードが含まれているのに対し、通常のJavaクラスには含まれていないことです。 抽象クラスの宣言には、クラス名の前にabstractキーワードを使用します。 クラスには抽象メソッドと具体メソッドの両方があります。 ただし、抽象メソッドは通常のクラスには存在できません。 少なくとも1つの抽象メソッドを持つクラスは、抽象クラスと呼ばれます。

その構文は次のとおりです。

パブリック抽象クラスName_of_Class

{{

public abstract Name_of_Method();

}

抽象クラスの実装例は次のとおりです。

//抽象クラスの命名

抽象クラスDemoClass

{{

//抽象的なメソッドの命名

抽象voiddisp();

}

//抽象クラスを続行します

パブリッククラスMainClassはDemoClassを拡張します

{{

//抽象クラスのメソッド本体を定義する

void display()

{{

System.out.println( "抽象メソッドが呼び出されました。");

}

public static void main(String [] args)

{{

MainClass obj = new MainClass();

//抽象メソッドを呼び出す

obj.display();

}

}

ポイントごとにリストするには:

  • クラスに少なくとも1つの抽象メソッドがある場合、クラスは抽象として定義する必要があります。
  • 抽象として宣言されたクラスはインスタンス化できません。
  • 別のクラスから抽象クラスを継承し、それを利用するためにその抽象メソッドの実装を提供する必要があります。
  • 継承する場合は、抽象クラス内のすべての抽象メソッドの実装を提供する必要があります。

抽象メソッドとは何ですか?

抽象メソッドには、メソッド宣言のみがあり、実装はありません。 抽象メソッドは、それ自体の本体のないメソッドで表すことができます。 抽象メソッドは、抽象クラス内で排他的に宣言する必要があります。

クラスにメソッドを持たせたいが、そのメソッドの実際の実装を子クラスによって決定する場合は、メソッドを親クラスの抽象として指定します。

オブジェクト指向プログラミングにおけるデータ抽象化の利点

  • オブジェクト指向プログラミングでは、抽象化により、プログラム設計の複雑さとソフトウェアへの実装プロセスが軽減されます。
  • Javaプログラミングで抽象化を実装する最大の利点は、ユーザーが兄弟などの類似性に基づいてクラスを簡単に編成できることです。したがって、データの継承とデータの移行が簡単かつ実行可能になります。
  • 継承が可能です。 例えば:

/ *ファイル名:DemoAbstract.java * /

パブリッククラスDemoAbstract{

public static void main(String [] args){

/ *以下を記述できず、エラーが発生します* /

従業員e=新入社員(「ピーターD。」、「コネチカット州ハートフォード」、35);

System.out.println(“ \ n従業員参照を使用し、MailCheck–“);を呼び出します。

e.mailCheck();

}

}

これは、次のエラーを示しています。

Employee.java:46:従業員は抽象的です。 インスタンス化できません

従業員e=新入社員(「ピーターD。」、「コネチカット州ハートフォード」、35);

^

1エラー

したがって、抽象クラスの使用法を次のように使用します。

/ *ファイル名:employee.java * /

パブリック抽象クラスの従業員{

プライベート文字列N;

プライベート文字列追加;

private int Num;

public Employee(String N、String Add、int Num){

System.out.println( "従業員の構築");

this.name = N;

this.address=追加;

this.number = Num;

}

public double compute_pay(){

System.out.println( "内部従業員compute_pay");

0.0を返します。

}

public void Mailcheck(){

System.out.println(“小切手を” + this.name +”” + this.addressに郵送します);

}

public String toString(){

N +”” + Add +””+Nを返す;

}

public String getName(){

Nを返します。

}

public String getAddress(){

追加を返します。

}

public void setAddress(String newAddress){

追加=newAddress;

}

public int getNumber(){

数値を返します。

}

}

抽象クラスまたは抽象メソッドはいつ使用しますか?

「形状」の一般的な例を考えると、コンピュータ支援設計システムを参照して、またはビデオゲームのシミュレーションに使用されていると想像できます。 ここでいう基本的なタイプは「形状」であり、すべての形状に独自の色属性やサイズなどがあります。円、正方形、三角形などの特定のクラスの形状は、これから派生(継承)され、それぞれが派生します。特別な固有のプロパティと動作がある場合があります。 たとえば、特定の形状は対称にすることができますが、そうでない形状もあります。 形状間の類似点と明確な相違点の両方が、タイプ階層に具体化されています。

したがって、形状は抽象クラスに類似している可能性がありますが、さまざまなタイプの形状は具象クラスとして表すことができます。

抽象クラスを説明するための実際のシナリオは次のとおりです。

//抽象化を示すJavaプログラム

抽象クラスの形{

ストリングカラー;

抽象ダブルエリア();

パブリック抽象文字列toString();

//抽象クラスはコンストラクターを持つことができます

パブリックシェイプ(ストリングカラー)

{{

System.out.println( "Shapeコンストラクターが呼び出されました");

this.colour = colour;

}

//これは具体的な方法です

public String getColour(){return colour; }

}

クラスCircleは形状を拡張します{

ダブルr;

public Circle(String colour、double(r)

{{

//Shapeコンストラクターを呼び出す

スーパー(色);

System.out.println( "Circleコンストラクターが呼び出されました");

this.r = r;

}

@Override double area()

{{

Math.PIを返す*Math.pow(r、2);

}

@Override public String toString()

{{

「円の色は」+super.getColor()を返します

+「そして面積は:」+ area();

}

}

クラスRectangleは形状を拡張します{

ダブルレングス;

倍幅;

public Rectangle(文字列の色、2倍の長さ、

倍幅)

{{

//Shapeコンストラクターを呼び出す

スーパー(色);

System.out.println( "長方形コンストラクターが呼び出されました");

this.length=長さ;

this.width = width;

}

@Override double area(){return length * width; }

@Override public String toString()

{{

「長方形の色は」+super.getcolor()を返します

+「そして面積は:」+ area();

}

}

パブリッククラステスト{

public static void main(String [] args)

{{

形状s1=new Circle( "Red"、2.2);

形状s2=new Rectangle(“ Yellow”、2、4);

System.out.println(s1.toString());

System.out.println(s2.toString());

}

}

このコードセグメントは、ここにあるものの修正バージョンです

Javaでのデータ抽象化が使用されるプログラムのコードスニペット:

//Javaでの抽象化

抽象クラスElecBill

{{

//抽象メソッド

抽象フロートcompBill();

}

クラスCommはElecBillを拡張します

{{

float compBill(){

1.00*100を返します。

}

}

クラスDomesticはElecBillを拡張します

{{

float compBill(){

0.50*75を返します。

}

}

結論

データの抽象化は、オブジェクト指向プログラミングの重要な側面です。 Javaのような言語の場合、抽象化や、継承、カプセル化、ポリモーフィズムなどの他のOOPの概念は、効率的なプログラムを作成する上で重要な役割を果たします。

OOPを詳細に学び、一流のプログラミングスキルを習得したい場合は、学生がJava、OODAP、DSA、HTML5、CSS3のスキルを習得できるように設計されたソフトウェアエンジニアリングのupGradのジョブリンクPG認定に参加することをお勧めします。 、JavaScript、MERN、AWS、SQLおよびNoSQLデータベース、Spring Bootなど。5か月のコースは、MERNスタックスペシャライゼーションとクラウドネイティブスペシャライゼーションの2つのスペシャライゼーションをカバーし、upGrad360°キャリアカウンセリングセッションへのアクセスを提供します。

世界のトップ大学からオンラインでソフトウェア開発コース学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを迅速に追跡します。

ポリモーフィズムとは何ですか? データの抽象化とどう違うのですか?

ポリモーフィズムは、データの抽象化と同様の一般化ですが、実行時に発生します。 互いに区別できない別個のオブジェクトタイプのコレクションにアクセスするメカニズムがある場合、それらはポリモーフィックです。 したがって、それらが同一でなくても、内部のすべてのオブジェクトは同じ外観と感触を持っています。 目標は、コーディングを大幅に減らすことです。 個々のタイプごとに多数の順列をすべて記述する代わりに、1つのユニバーサルソリューションを記述することができます。

カプセル化とデータ抽象化の違いは何ですか?

カプセル化-1.カプセル化はデータ(情報)を非表示にし、抽象化は詳細(実装の非表示)を非表示にします。 2.オブジェクト指向プログラミングの抽象化は、設計レベルで問題を解決します。 3.セキュリティ上の理由から、カプセル化とは、オブジェクトが何かを実行する方法の内部情報またはメカニズムを非表示にすることを意味します。 抽象化-1。カプセル化は、データとそれを操作するメソッドをバインドしますが、データの抽象化は、実装の詳細を隠しながら、ユーザーインターフェイスを公開することに関係します。 2.カプセル化によって実装レベルで解決されます。 3. Javaでは、データの抽象化により、情報オブジェクトに含める必要のあるものに集中できます。

インターフェイスと抽象クラスの特徴は何ですか?

インターフェイス-1。抽象メソッドのみがインターフェイスの一部であることがわかります。 2.多重継承がサポートされています。 3.抽象クラスの実装を提供できません。 4.インターフェイスではパブリック抽象メソッドのみが許可されます。 5.インターフェイスで使用できるpublicstaticfinal変数は1つだけです。 抽象クラス-1。抽象メソッドと非抽象メソッドは、抽象クラスにあります。 2.多重継承はサポートされていません。 3.インターフェースを実装することができます。 4.保護されたパブリックメソッドと抽象パブリックメソッドはどちらも抽象クラスで使用できます。 5.任意のアクセス指定子を使用して、抽象クラスはfinal、static、またはstaticfinal変数を持つことができます。