オブジェクトとクラスがよくわかりません
>>>
このオブジェクトというものは、PHPでは「設計図」と「作った部品」とから構成されます。まず最初に、オブジェクトの内容を定義した設計図を作り、その設計図をもとにして、実際に操作する部品を作る、というわけです。
この設計図のことを「クラス」、クラスから作られた部品の事を「インスタンス」といいます。クラスは、以下のような形で設計します。
>>>
を見るとオブジェクトとはクラスとインスタンスを合体したものなのでしょうか?
インスタンスはクラスを具現化したものと言いますが、具体的なイメージが付きません。
またクラスは設計図の事で、関数と同じく何度も同じ記載をしたくない時につかうようですが、関数とどう違うのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
オブジェクトとはクラスとインスタンスを合体したものなのでしょうか?
オブジェクトはクラスやインスタンスよりも意味が曖昧な単語なので、こういう意味だという明確な定義はありません。
この文脈ではオブジェクトを、「クラスの持つ機能(メソッドやプロパティ)+インスタンス」をオブジェクトと表現しているようです。
インスタンスはクラスを具現化したものと言いますが、具体的なイメージが付きません。
またクラスは設計図の事で、関数と同じく何度も同じ記載をしたくない時につかうようですが、関数とどう違うのでしょうか?
クラス、インスタンス、関数は、プログラム言語の持つ機能として明確に定義されているものなので実際コードを書けばイメージできます。
学習のために実際にコードを書いてください。
投稿2018/01/26 03:09
総合スコア4524
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
関数は入力を与えて1つの処理を行い結果を得ることができます。
クラスは処理をいくつも含めることができます。
PHPではなく、C#でごめんなさい。
関数
using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { Console.WriteLine(Kansu(1)); } static int Kansu(int a) { return a+1; } } }
結果は2とでます。
オプジェクト
using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { Class1 class1 = new Class1(); Console.WriteLine(class1.Tashizan(1, 2)); Console.WriteLine(class1.Hikizan(1, 2)); } } class Class1 { public int Tashizan(int a, int b) { return a + b; } public int Hikizan(int a, int b) { return a - b; } } }
結果は3と-1がでます。
他にもオブジェクトが使えるとデータベースを扱えるなど、
色々便利です。
投稿2018/01/26 09:40
総合スコア349
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/26 13:23
2018/01/26 14:58
退会済みユーザー
2018/01/27 04:13
0
オブジェクト指向のシステムは、クラス(設計書・仕様書)という種類のものと、インスタンス(実体)という種類のものから成り立っています。
各インスタンスは、その基になるクラスが関係づいていいます。
これらのもの(クラス、インスタンス)がひっくるめて「もの(Object)」という曖昧な名前で呼ばれているのです。
==
インスタンスをオブジェクトと呼んでいる場合があります。
まぁ、クラスもインスタンスもオブジェクトなので、インスタンスをオブジェクトと呼ぶのは間違いではないのですが、インスタンスを意味する狭義のオブジェクトと、クラスまでも含んだ広義のオブジェクトを区別するのは容易ではありません(その人が、どちらのつもりで使っているか判らない、そもそも区別できている人なのか否かも判らない、、、)
こういう事も、オブジェクトという語を判りにくくしている原因だと思います。
==
<確かだと思われる事:私見>
クラスは、クラス名、クラス継承、インスタンスが備える値(プロパティ)、クラスが提供する機能(メソッド)などを定義したもの。
インスタンスは、あるクラスに基づいて作られたもの(計算機上では、メモリ上のデータ群と、メソッドを実現するプログラム群)
投稿2018/01/26 08:01
総合スコア6915
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/26 10:20
2018/01/30 08:22
0
こんにちは。
回答がたくさん付いているので、普段解説に使用されないような表現でオブジェクト指向を説明してみます。
自分の専門はC#なので、この回答はC#の言語仕様を基準としていますが、オブジェクト指向の概念自体はどの言語でもほぼ同等なものです。
オブジェクトとは?
プログラムで扱える「データの最小単位」のこと。intの1
はオブジェクトであり、stringの"abc"
もオブジェクト。intとstringをまとめたようなデータを作ったら、それもまたオブジェクト。
オブジェクト指向のプログラムでは、データが存在する空間(即ちメモリ空間)に無数のオブジェクトが散らばっている状態をイメージすれば良い。プログラムが計算するときは、オブジェクト単位でのみデータを操作できる。
クラスとは?
オブジェクトが「データ空間に存在する多様なデータの内の一つ」とすると、そのオブジェクトには「種類」が存在していないとまともなプログラムは作れないでしょう。例として、整数型の場合は「四則演算に利用可能な『オブジェクト』」を必要としていると言い換えることができます。このとき、データ空間上の無数のオブジェクトの中から「四則演算が可能な性質」を持つオブジェクトを探し、丸で囲みます。この「丸」こそが、クラスです。文字列型の場合は、「オブジェクトの中で、文字列としての性質を持つもの」を囲む「丸」の存在をイメージできるでしょう。文字列型の「丸」には、例えば「その中のオブジェクト同士を連結できる」という性質を持たせることができます。
ところで、特定の丸(A)に囲まれたオブジェクト群の中で、さらに小さな丸(B)で囲むことができるオブジェクト群が存在する場合、それは「継承」を表します。データ空間をイメージすると、「Bで囲まれたオブジェクト群は、必ずAにも囲まれている」ということは、Bのオブジェクトは「Aとしても扱える」、即ち、BはAを継承したクラスであると言うことになります。
インスタンスとは?
データ空間に存在する無数のオブジェクトの内、特定の一つをピックアップしたとき、それが仮に「intの丸(クラス)に囲まれた中に存在する」場合、そのオブジェクトは「intのインスタンス」であると表現します。そのオブジェクトは「intクラスに定義されている性質を持つ」ということが保証されます。オブジェクト指向プログラミングは、「プログラミング言語」としての制約や利便性の理由から、「オブジェクトは、任意のクラス定義を基にして生成する」等の決まりごとがあります。これを指して「インスタンス生成」と表現します。
まとめ(要約)
- オブジェクト: プログラムで扱う「データ」そのもののこと。
- クラス: オブジェクトの持つ性質に着目した「分類」のこと。
- インスタンス: 特定のクラスに所属している「オブジェクト」のこと。
投稿2018/01/27 05:45
総合スコア4103
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/27 08:57
2018/01/27 13:27
退会済みユーザー
2018/01/28 07:26
0
プリミティブな型で例えます。
int x;
があったとき、intがクラス、xがオブジェクトに対応します。もっともクラスやオブジェクトはもっと多機能ですけれど、クラスとオブジェクトの違いはこれに対応します。
で、どう複雑かといいますと、内部にたくさんの入れ子変数をもつことができたり、内部関数を定義できたりします。さらには他のクラスの機能を引き継いだり、内包したりすることができます。
投稿2018/01/27 04:48
編集2018/01/27 04:50総合スコア4830
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/26 13:29
退会済みユーザー
2018/01/27 08:18
2018/01/27 11:44
退会済みユーザー
2018/01/28 07:30
2018/01/28 23:48
退会済みユーザー
2018/01/29 10:06
2018/01/29 23:46
退会済みユーザー
2018/01/30 07:53
2018/01/30 08:28
退会済みユーザー
2018/01/30 08:51