オブジェクト向けプログラミング(OOP)の整理
3515 ワード
やっと整理しなければならない友達を連れてきた.もっと詳しく整理するために、鄭アマチュアのブログのかなりの部分を引用しました!
出典:https://jeong-pro.tistory.com/95[基本功を積むアマチュアコードブログ]
オブジェクト向けプログラミング(OOP)とは?
出典:https://jeong-pro.tistory.com/95[基本功を積むアマチュアコードブログ]
オブジェクト向けプログラミング(OOP)とは?
オブジェクト向けプログラミングは、コンピュータプログラミングのモデルの1つであり、プログラミングで必要なデータを抽象化し、状態と動作を持つオブジェクトを作成し、これらのオブジェクト間の有機的なインタラクションによって論理を組織する方法である.
子犬を用いてオブジェクト向けのプログラミングを行うと,子犬の基本プログラムは子犬の毛色,瞳の色,大きさ,長さなどの状態や子犬ができる行動などの基礎を持つクラスを作成することができる.この点から必要なデータを抽象化し,状態と動作を持つオブジェクトを作成する.
今、私たちはいくつかの問題を考えなければなりません.1. 객체 지향 프로그래밍을 했을 때 장점이 뭔가요?
2. 객체 지향 프로그래밍의 특징이 뭔가요?
3. 객체(또는 클래스)가 뭔가요?
=> 이는 결국 객체 지향 키워드 5가지에 관한 장단점을
알고 있는지에 대해서 물어보는 것이다.
オブジェクト向けプログラミングの利点は何ですか?
コードの再利用は簡単です。
他の人が作成したクラスをインポートおよび使用するか、継承によって拡張できます.
メンテナンスが容易です。
プロシージャ向けのプログラミングでは、コードを1つずつ検索および変更する必要がありますが、オブジェクト向けのプログラミングはクラス内でメンバー変数またはメソッドであるため、その一部を変更するだけでよいです.
大型プロジェクトにぴったりです。
クラス単位でモジュール化された開発が可能なため、大規模なプロジェクトのように複数の人、複数の会社が開発を行う必要がある場合、作業を分担しやすい.
オブジェクト向けプログラミングの欠点は?
処理速度が比較的遅い。
オブジェクトが多ければ多いほど、容量が大きくなります。
設計には多くの時間と精力が必要です。
オブジェクト向けプログラミングの5つのキーワード
1)クラスとインスタンス(オブジェクト)
2)抽象化
3)パッケージ
4)継承
5)多形性
1)クラスとインスタンス
クラス:ある問題を解決するためにデータの抽象化を作成し、グループに属する属性(attribute)と動作(behavior)を変数と方法として定義します.
上の犬を例にとると、犬の毛色や瞳の色、大きさや長さの重さなどの状態や、犬ができる行動などがあります.
≪インスタンス|Instance|ldap≫:クラス定義に基づいて実際のメモリに割り当てられた実際のアプリケーションで使用されるデータ
上の子犬の例では、左側がクラス、右側がインスタンスで、左側のクラスは実際に存在するデータではなく、ベースとして作成された青写真です.この青写真を利用して、実際のアプリケーションに使用できるデータを作成するのが例です.
2)抽象化
不要な情報を非表示にし、必要な情報だけを表現し、共通の属性や機能を組み合わせて名前を付けます.
(=オブジェクト向けの角度からクラスを定義)
(=青写真の子犬)
3)パッケージ
もし誰かが私たちに車のデータを作るように命令したら、製造する車はティコ、アウディ、モニン、ポルシェです.など、全部で20種類の自動車を作る課題が与えられました.
これらの情報は、どの車にもメーカーとモデル名があり、誰が持っているのか、速度がどの程度向上するかを教えてくれます.
これらの情報を一つ一つ体現するのは私たちにとって難しいです.そこで,自動車の共通属性と挙動を集合させ,オブジェクトでデータを生成する方法を実現した.ここで,共通の属性と行為を集合させる行為はカプセル化と見なすことができる.
4)継承
プロシージャ向けのプログラミングでは、他のライブラリで実装されたソースコードを使用することもできます.私の意図通りに修正すると、別のライブラリになり、バージョンに基づいて実現できず、不要なコード修正作業を招く可能性があります.
これらの問題を解決するために,継承法を導入した.
継承は親から属性と機能を継承し、機能の一部を変更する必要がある場合は、継承子の一部の機能のみを変更できます.
5)多形性
すなわち,1変数名,関数名などは状況に応じて異なる解釈が可能である.
ゲームについて言えば、英雄同盟というゲームはキャラクターごとにスキルがあり、最強のスキルはRキーを押す究極のスキルで発動することができます.
それぞれのヒーローに共通の特徴があり、Rを押すと究極期が現れるが、すべてのキャラクターが同じ究極期を持っているわけではない.誰かが足で蹴ったり、誰かが物を発射したり、誰かが走り回ったりします.
共通の特徴を持っていますが、場合によっては異なる解釈ができます.これが多形性です.
内容の整理を手伝うブログ
出典:https://jeong-pro.tistory.com/95[基本功を積むアマチュアコードブログ]
出典:https://evan-moon.github.io/2019/08/24/what-is-object-oriented-programming/[Evens Library]
出典:https://velog.io/@piecemaker/2.-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%98-4%EB%8C%80-%ED%8A%B9%EC%84%B1[作成者]
Reference
この問題について(オブジェクト向けプログラミング(OOP)の整理), 我々は、より多くの情報をここで見つけました
https://velog.io/@vvsogi/객체-지향-프로그래밍-OOP-정리
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
1. 객체 지향 프로그래밍을 했을 때 장점이 뭔가요?
2. 객체 지향 프로그래밍의 특징이 뭔가요?
3. 객체(또는 클래스)가 뭔가요?
=> 이는 결국 객체 지향 키워드 5가지에 관한 장단점을
알고 있는지에 대해서 물어보는 것이다.
コードの再利用は簡単です。
他の人が作成したクラスをインポートおよび使用するか、継承によって拡張できます.
メンテナンスが容易です。
プロシージャ向けのプログラミングでは、コードを1つずつ検索および変更する必要がありますが、オブジェクト向けのプログラミングはクラス内でメンバー変数またはメソッドであるため、その一部を変更するだけでよいです.
大型プロジェクトにぴったりです。
クラス単位でモジュール化された開発が可能なため、大規模なプロジェクトのように複数の人、複数の会社が開発を行う必要がある場合、作業を分担しやすい.
オブジェクト向けプログラミングの欠点は?
処理速度が比較的遅い。
オブジェクトが多ければ多いほど、容量が大きくなります。
設計には多くの時間と精力が必要です。
オブジェクト向けプログラミングの5つのキーワード
1)クラスとインスタンス(オブジェクト)
2)抽象化
3)パッケージ
4)継承
5)多形性
1)クラスとインスタンス
クラス:ある問題を解決するためにデータの抽象化を作成し、グループに属する属性(attribute)と動作(behavior)を変数と方法として定義します.
上の犬を例にとると、犬の毛色や瞳の色、大きさや長さの重さなどの状態や、犬ができる行動などがあります.
≪インスタンス|Instance|ldap≫:クラス定義に基づいて実際のメモリに割り当てられた実際のアプリケーションで使用されるデータ
上の子犬の例では、左側がクラス、右側がインスタンスで、左側のクラスは実際に存在するデータではなく、ベースとして作成された青写真です.この青写真を利用して、実際のアプリケーションに使用できるデータを作成するのが例です.
2)抽象化
不要な情報を非表示にし、必要な情報だけを表現し、共通の属性や機能を組み合わせて名前を付けます.
(=オブジェクト向けの角度からクラスを定義)
(=青写真の子犬)
3)パッケージ
もし誰かが私たちに車のデータを作るように命令したら、製造する車はティコ、アウディ、モニン、ポルシェです.など、全部で20種類の自動車を作る課題が与えられました.
これらの情報は、どの車にもメーカーとモデル名があり、誰が持っているのか、速度がどの程度向上するかを教えてくれます.
これらの情報を一つ一つ体現するのは私たちにとって難しいです.そこで,自動車の共通属性と挙動を集合させ,オブジェクトでデータを生成する方法を実現した.ここで,共通の属性と行為を集合させる行為はカプセル化と見なすことができる.
4)継承
プロシージャ向けのプログラミングでは、他のライブラリで実装されたソースコードを使用することもできます.私の意図通りに修正すると、別のライブラリになり、バージョンに基づいて実現できず、不要なコード修正作業を招く可能性があります.
これらの問題を解決するために,継承法を導入した.
継承は親から属性と機能を継承し、機能の一部を変更する必要がある場合は、継承子の一部の機能のみを変更できます.
5)多形性
すなわち,1変数名,関数名などは状況に応じて異なる解釈が可能である.
ゲームについて言えば、英雄同盟というゲームはキャラクターごとにスキルがあり、最強のスキルはRキーを押す究極のスキルで発動することができます.
それぞれのヒーローに共通の特徴があり、Rを押すと究極期が現れるが、すべてのキャラクターが同じ究極期を持っているわけではない.誰かが足で蹴ったり、誰かが物を発射したり、誰かが走り回ったりします.
共通の特徴を持っていますが、場合によっては異なる解釈ができます.これが多形性です.
内容の整理を手伝うブログ
出典:https://jeong-pro.tistory.com/95[基本功を積むアマチュアコードブログ]
出典:https://evan-moon.github.io/2019/08/24/what-is-object-oriented-programming/[Evens Library]
出典:https://velog.io/@piecemaker/2.-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%98-4%EB%8C%80-%ED%8A%B9%EC%84%B1[作成者]
Reference
この問題について(オブジェクト向けプログラミング(OOP)の整理), 我々は、より多くの情報をここで見つけました
https://velog.io/@vvsogi/객체-지향-프로그래밍-OOP-정리
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
1)クラスとインスタンス(オブジェクト)
2)抽象化
3)パッケージ
4)継承
5)多形性
1)クラスとインスタンス
クラス:ある問題を解決するためにデータの抽象化を作成し、グループに属する属性(attribute)と動作(behavior)を変数と方法として定義します.
上の犬を例にとると、犬の毛色や瞳の色、大きさや長さの重さなどの状態や、犬ができる行動などがあります.
≪インスタンス|Instance|ldap≫:クラス定義に基づいて実際のメモリに割り当てられた実際のアプリケーションで使用されるデータ
上の子犬の例では、左側がクラス、右側がインスタンスで、左側のクラスは実際に存在するデータではなく、ベースとして作成された青写真です.この青写真を利用して、実際のアプリケーションに使用できるデータを作成するのが例です.
2)抽象化
不要な情報を非表示にし、必要な情報だけを表現し、共通の属性や機能を組み合わせて名前を付けます.
(=オブジェクト向けの角度からクラスを定義)
(=青写真の子犬)
3)パッケージ
もし誰かが私たちに車のデータを作るように命令したら、製造する車はティコ、アウディ、モニン、ポルシェです.など、全部で20種類の自動車を作る課題が与えられました.
これらの情報は、どの車にもメーカーとモデル名があり、誰が持っているのか、速度がどの程度向上するかを教えてくれます.
これらの情報を一つ一つ体現するのは私たちにとって難しいです.そこで,自動車の共通属性と挙動を集合させ,オブジェクトでデータを生成する方法を実現した.ここで,共通の属性と行為を集合させる行為はカプセル化と見なすことができる.
4)継承
プロシージャ向けのプログラミングでは、他のライブラリで実装されたソースコードを使用することもできます.私の意図通りに修正すると、別のライブラリになり、バージョンに基づいて実現できず、不要なコード修正作業を招く可能性があります.
これらの問題を解決するために,継承法を導入した.
継承は親から属性と機能を継承し、機能の一部を変更する必要がある場合は、継承子の一部の機能のみを変更できます.
5)多形性
すなわち,1変数名,関数名などは状況に応じて異なる解釈が可能である.
ゲームについて言えば、英雄同盟というゲームはキャラクターごとにスキルがあり、最強のスキルはRキーを押す究極のスキルで発動することができます.
それぞれのヒーローに共通の特徴があり、Rを押すと究極期が現れるが、すべてのキャラクターが同じ究極期を持っているわけではない.誰かが足で蹴ったり、誰かが物を発射したり、誰かが走り回ったりします.
共通の特徴を持っていますが、場合によっては異なる解釈ができます.これが多形性です.
内容の整理を手伝うブログ
出典:https://jeong-pro.tistory.com/95[基本功を積むアマチュアコードブログ]
出典:https://evan-moon.github.io/2019/08/24/what-is-object-oriented-programming/[Evens Library]
出典:https://velog.io/@piecemaker/2.-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%98-4%EB%8C%80-%ED%8A%B9%EC%84%B1[作成者]
Reference
この問題について(オブジェクト向けプログラミング(OOP)の整理), 我々は、より多くの情報をここで見つけました
https://velog.io/@vvsogi/객체-지향-프로그래밍-OOP-정리
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
不要な情報を非表示にし、必要な情報だけを表現し、共通の属性や機能を組み合わせて名前を付けます.
(=オブジェクト向けの角度からクラスを定義)
(=青写真の子犬)
3)パッケージ
もし誰かが私たちに車のデータを作るように命令したら、製造する車はティコ、アウディ、モニン、ポルシェです.など、全部で20種類の自動車を作る課題が与えられました.
これらの情報は、どの車にもメーカーとモデル名があり、誰が持っているのか、速度がどの程度向上するかを教えてくれます.
これらの情報を一つ一つ体現するのは私たちにとって難しいです.そこで,自動車の共通属性と挙動を集合させ,オブジェクトでデータを生成する方法を実現した.ここで,共通の属性と行為を集合させる行為はカプセル化と見なすことができる.
4)継承
プロシージャ向けのプログラミングでは、他のライブラリで実装されたソースコードを使用することもできます.私の意図通りに修正すると、別のライブラリになり、バージョンに基づいて実現できず、不要なコード修正作業を招く可能性があります.
これらの問題を解決するために,継承法を導入した.
継承は親から属性と機能を継承し、機能の一部を変更する必要がある場合は、継承子の一部の機能のみを変更できます.
5)多形性
すなわち,1変数名,関数名などは状況に応じて異なる解釈が可能である.
ゲームについて言えば、英雄同盟というゲームはキャラクターごとにスキルがあり、最強のスキルはRキーを押す究極のスキルで発動することができます.
それぞれのヒーローに共通の特徴があり、Rを押すと究極期が現れるが、すべてのキャラクターが同じ究極期を持っているわけではない.誰かが足で蹴ったり、誰かが物を発射したり、誰かが走り回ったりします.
共通の特徴を持っていますが、場合によっては異なる解釈ができます.これが多形性です.
内容の整理を手伝うブログ
出典:https://jeong-pro.tistory.com/95[基本功を積むアマチュアコードブログ]
出典:https://evan-moon.github.io/2019/08/24/what-is-object-oriented-programming/[Evens Library]
出典:https://velog.io/@piecemaker/2.-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%98-4%EB%8C%80-%ED%8A%B9%EC%84%B1[作成者]
Reference
この問題について(オブジェクト向けプログラミング(OOP)の整理), 我々は、より多くの情報をここで見つけました
https://velog.io/@vvsogi/객체-지향-프로그래밍-OOP-정리
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
プロシージャ向けのプログラミングでは、他のライブラリで実装されたソースコードを使用することもできます.私の意図通りに修正すると、別のライブラリになり、バージョンに基づいて実現できず、不要なコード修正作業を招く可能性があります.
これらの問題を解決するために,継承法を導入した.
継承は親から属性と機能を継承し、機能の一部を変更する必要がある場合は、継承子の一部の機能のみを変更できます.
5)多形性
すなわち,1変数名,関数名などは状況に応じて異なる解釈が可能である.
ゲームについて言えば、英雄同盟というゲームはキャラクターごとにスキルがあり、最強のスキルはRキーを押す究極のスキルで発動することができます.
それぞれのヒーローに共通の特徴があり、Rを押すと究極期が現れるが、すべてのキャラクターが同じ究極期を持っているわけではない.誰かが足で蹴ったり、誰かが物を発射したり、誰かが走り回ったりします.
共通の特徴を持っていますが、場合によっては異なる解釈ができます.これが多形性です.
内容の整理を手伝うブログ
出典:https://jeong-pro.tistory.com/95[基本功を積むアマチュアコードブログ]
出典:https://evan-moon.github.io/2019/08/24/what-is-object-oriented-programming/[Evens Library]
出典:https://velog.io/@piecemaker/2.-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%98-4%EB%8C%80-%ED%8A%B9%EC%84%B1[作成者]
Reference
この問題について(オブジェクト向けプログラミング(OOP)の整理), 我々は、より多くの情報をここで見つけました
https://velog.io/@vvsogi/객체-지향-프로그래밍-OOP-정리
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
出典:https://jeong-pro.tistory.com/95[基本功を積むアマチュアコードブログ]
出典:https://evan-moon.github.io/2019/08/24/what-is-object-oriented-programming/[Evens Library]
出典:https://velog.io/@piecemaker/2.-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%98-4%EB%8C%80-%ED%8A%B9%EC%84%B1[作成者]
Reference
この問題について(オブジェクト向けプログラミング(OOP)の整理), 我々は、より多くの情報をここで見つけました https://velog.io/@vvsogi/객체-지향-프로그래밍-OOP-정리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol