オブジェクト指向プログラミング

オブジェクト指向プログラミングOOP)は、データやメソッドを表現するために「オブジェクト」という概念を使ったコンピュータプログラムの書き方です。通常、コンピュータプログラムは、コンピュータにある特定のことをある特定の方法で行うようにコンピュータに指示を与えるだけのものであり、手続き型プログラミングと呼ばれていました。しかし、オブジェクト指向プログラミングでは、コンピュータプログラムは、互いに話しかけるオブジェクトを利用して、そのオブジェクトの中のデータを変化させ、ユーザーが望むように動作するようにしています。また、オブジェクト指向プログラミングはそのように設計されているため、プログラムの他の部分や他の人にもコードを簡単に再利用することができ、開発者を支援します。

ほとんどのプログラミング言語は、コンピュータプログラムの書き方の異なるタイプが混在しています。例えば、Pythonでは、オブジェクト指向プログラミングと手続き型プログラミングの両方でコンピュータプログラムを書くことができます。OOPでコンピュータプログラムを書くことができるプログラミング言語はたくさんあります。C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Pythonなどです。

特徴

オブジェクト指向プログラミングの主な考え方は、すべてのものがオブジェクトであるということです。しかし、オブジェクトにはさまざまな種類があります。

  • 変数は、プログラミング言語でサポートされているさまざまな型の情報(またはデータ)を保持することができます。例としては、整数データ型やリストデータ構造などがあります。変数は、手続き型プログラミング言語からすでに利用可能なアイデアです。オブジェクト指向プログラミングでは、変数は主に属性として知られています。
  • 手続き(関数、メソッド、ルーチンとしても知られています)は、コンピュータに入力を取り、計算やデータの変更を行い、出力をユーザーに返すように指示する命令のリストです。プロシージャは、手続き型プログラミング言語からすでに利用可能なアイデアでもあります。オブジェクト指向プログラミングでは、プロシージャは主にメソッドとして知られています。
  • クラスは、異なる変数とプロシージャの集合体です。クラスは通常、ユーザーが望む方法で動作するようにデータに変更を加えるために、互いに話をします。

オブジェクトとは、クラスのインスタンスを指す用語です。

批判

以下の例では、Humanというクラスを作成します。このクラスには、name (人の名前) と friend (友人の名前) という属性があります。Human クラスの各メソッドには、name 属性と friend 属性の両方を使用する命令のリストが含まれています。

パイソン

このコードはPythonで書かれています。

class Human(object): def __init__(self, name, friend=None): self. name = name self. friend = friend def say_name(self): print("私の名前は"+self. name): def say_goodnight(self): if self. friend is None: print("おやすみなさい。name) # 名前"Stephen"の新しいHumanオブジェクトを作成します stephen = Human("Stephen") # 名前"Joe"の新しいHumanオブジェクトを作成します joe = Human("Joe", stephen) # 名前"Joe"の新しいHumanオブジェクトを作成します joe = Human("Joe", stephen) stephen.say_name() # shows 'My name is Stephen' stephen. say_goodnight() # shows 'Good night nobody.' joe. say_name() # shows 'My name is Joe' joe. say_goodnight() # shows 'Good night Stephen' joe. say_goodnight() # shows 'Good night Stephen'

ジャワ

このコードはJavaで書かれています。

人間クラス

class Human { private String name = "unnamed"; // このHumanの名前 private Human friend = null; // このHumanの友人 // このメソッドは、名前と友人を与えられたときに新しいHumanオブジェクトを作成します public Human(String name, Human friend) { this. name = name; this. friend = friend; } このメソッドは、名前だけを与えられたときにも新しいHumanオブジェクトを作成します。// このメソッドは、名前だけを指定した場合にも新しい Human オブジェクトを作成します// このメソッドは、名前と友人の両方が与えられていない場合にも新しい Human オブジェクトを作成します public Human() { this. name = "unnamed"; this. friend = null; }public void sayName() { System. out.println("私の名前は" + this.name); } public void sayGoodnight() { if (friend == null) { System. out. println("Good night nobody."); }else { System. out. println("Good night " + friend. name); } } }else { System. out.}}

上記のHumanクラスに話しかけるためのメソッド

class Main { public static void main(String[] args) { //新しい Human オブジェクト stephen を作成する Human stephen = new Human("Stephen"); //名前が「Joe」で stephen を友達として持つ新しい Human オブジェクト joe を作成する Human joe = new Human("Joe", stephen); stephen.sayName(); // '私の名前はStephenです' stephen. sayGoodnight(); // 'おやすみなさいませんでした' joe. sayName(); // '私の名前はJoeです' joe. sayGoodnight(); // 'おやすみなさいませんでしたStephen' }を表示します。}


オブジェクト指向プログラミングが流行っていても、それを悪いと思って批判している人はたくさんいます。

  • Luca Cardelli氏は「オブジェクト指向言語の工学的特性が悪い」と題した論文を書いています。
  • 私は Lisp Machine のウィンドウシステムで作業していたときに OOP を使用していましたが、それが優れたプログラミング方法であるという一般的な見解には同意できません。
  • Potokらの研究は、OOPと手続き的アプローチの生産性にほとんど差がないことを教えてくれます。
  • クリストファー・J・伊達氏は、OOPと他のものを比較すること、特にOOPと他のものがどのように関係しているかを比較することは、OOPの意味について人々の意見が一致していないので難しいと述べています。
  • アレクサンダー・ステパノフは、OOPは数学のように限定された視点を与えることを示唆し、"人工知能とほぼ同じくらいのデマ"と呼んでいます。
  • 成功したインターネットセールスマンでありプログラマーでもあるポール・グラハム氏は、OOPの目的は、平均的な組織の平均的なプログラマーが「あまりにも大きなダメージを与えないようにする」ための群れメカニズムとして機能することだと示唆しています。これはまた、より強力でコンパクトな方法で物事を行う方法を知っている、より速くて優れたプログラマーの動きを鈍らせることにもなります...。[1]

質問と回答

Q:オブジェクト指向プログラミングとは何ですか?


A:オブジェクト指向プログラミングとは、データやメソッドを表す「オブジェクト」を使ってコンピュータプログラムを記述する方法です。

Q: オブジェクト指向プログラミングは手続き型プログラミングとどう違うのですか?


A: 手続き型プログラミングでは、コンピュータプログラムは、コンピュータに特定のことを特定の方法で行うように指示する命令のリストです。オブジェクト指向プログラミングでは、コンピュータプログラムは、互いに会話するオブジェクトを使用して、そのオブジェクト内のデータを変更し、ユーザーが望む方法で動作します。

Q:オブジェクト指向プログラミングは、開発者にとってどのようなメリットがあるのでしょうか?


A:オブジェクト指向プログラミングでは、コードをプログラムの他の部分や、他の人にも簡単に再利用することができます。

Q:プログラミング言語Pythonは何で知られていますか?


A: Pythonは、オブジェクト指向プログラミングと手続き型プログラミングの両方でコンピュータプログラムを記述することができます。

Q: オブジェクト指向プログラミングでコンピュータ・プログラムを書くことができるプログラミング言語の例を挙げてください。
A:オブジェクト指向でプログラムを書くことができるプログラミング言語には、C++、Java、Ruby、Perl、Emarald、Sapphire、PHP、Python、C#、などがあります。

Q:オブジェクト指向プログラミングにおけるオブジェクトとは何ですか?


A: オブジェクトとは、オブジェクト指向プログラミングにおいて、データとメソッドを含む実体のことです。

Q: オブジェクト指向プログラミングにおいて、オブジェクトはどのように機能するのでしょうか?


A: オブジェクトは互いに影響し合って、そのオブジェクト内のデータを変化させ、ユーザーの望むように動作します。

AlegsaOnline.com - 2020 / 2023 - License CC3