約 5,856,224 件
https://w.atwiki.jp/nicepaper/pages/221.html
PHPでオブジェクト指向入門1~クラスの定義~では、定義の仕方を覚えました。今度はそのクラスに対して色々と命令をして、最後にそれを出力してみます。9月16日記事 目次 プロパティ コード 説明 インスタンス化(index.phpの方) アロー演算子(index.phpの方) アクセス修飾子を付ける(Sports.phpの方) まとめ プロパティ クラスの中で定義された変数のことを言います。 プロパティまたはメンバ変数 と呼ばれることがあります。今度はそのプロパティを定義して、最後に実行させます。 コード classを定義したファイル(Sports.phpの方) ?php class Sports{ public $event;//種目など public $type;//観戦かやる方かなど } ユーザ定義関数では一つの命令に対して、返ってくるのに対し、クラスでは二つの命令を行って返ってきています。 呼び出す方(index.phpの方) ?php require_once ( ../class/Sports.php ); $s = new Sports(); $s- event = ラグビー ; $s- type = 観戦する ; print 私は .$s- event. に対して .$s- type. 方が好きです ; 説明 インスタンス化(index.phpの方) クラスを使えるようにするためには、ファイルを読み込むことと、実際にそのクラスを利用すよう呼び出すことが必要です。使えるようにすることをインスタンス化といいます。new Sports()がそのことです。 インスタンスは、実体と訳されますが、Sportsという実体をとってきましたよ。あとはそれを使って色々命令していきましょう(グルグル回す)とよく言われる。 アロー演算子(index.phpの方) $s- eventの- は何を意味するのでしょうか。予想するに、$eventというプロパティ(メンバ変数)を呼び出していそうことですが、まったくその通りです。- は呼び出しますよという意味で覚えておいてください。 $を付けないこと重要です。 アクセス修飾子を付ける(Sports.phpの方) アクセス装飾子はその変数をどこから使えるようにするかを決めるキーワードです。「public」「private」「protected」のどれかを指定します。 まとめ クラスのファイルに対してプロパティ(メンバ変数)をセットし、それを呼び出していきました。今度は手続き型でいう関数のようなもの(オブジェクト指向ではメソッドと呼ばれる)をPHPでオブジェクト指向入門3~メソッド~で作っていきたいと思います。
https://w.atwiki.jp/cschola/pages/27.html
クラスの実体 実体の生成 クラスは型であり、それだけでは実体はありません。 実体を宣言するには以下のように記述します。 クラス名* 変数名; この実体の事をオブジェクト、またはインスタンスと呼びます。 1つのクラスに対し複数のオブジェクトを作ることが出来ます。 Character* hero;// Characterクラスの実体「hero」を定義 Character* slime;// Characterクラスの実体「slime」を定義 ポインタを使う理由 (難しいので今は読み飛ばし読み飛ばして、後で戻って見直すことをお勧めします。) 上記の方法だと、オブジェクトはスコープ { } 内でしか生存できません。 スコープが終了するとint型など普通の変数同様そこで破棄されます。 しかしそれでは都合が悪い場合が多く存在します。 そこでオブジェクトのポインタとnewを使いスコープが終了しても生存し続けるオブジェクトを作ることが出来ます。 オブジェクトの生成 ポインタの確保と定義を別々にする場合。 Character* hero; hero = new Character("勇者", 10, 2); 一行で生成する場合 Character* hero = new Character("勇者", 10, 2); オブジェクトの破棄 newしたオブジェクトは明示的に削除しない限りメモリに残り続けます。 必要のなくなったオブジェクトは必ずdeleteでを破棄しましょう。 delete hero; オブジェクトの変数へのアクセス ポインタを使って定義されたオブジェクトは - (アロー演算子)を使ってアクセスします。 hero- Damage(5);// 勇者に5ダメージ cout "HP " hero- HP endl;// 勇者のHPを表示 ファイル分けでのクラス作成 では実際にプログラムを書いてみましょう。 基本はクラスごとにファイルを分け、ヘッダーで定義、ソースで実装を記述します。 ファイル名はクラス名と同じにするのが好ましいです。 /*--------------Character.hの中身----------------*/ #pragma once #include iostream #include string // キャラクタークラス class Character{ public // アクセス修飾子 //【メンバ変数】 std string name;// 名前 int HP;// 体力 int STR;// 攻撃力 //【メンバ関数】 Character(std string name, int HP, int STR);// コンストラクタ ~Character();// デストラクタ void Damage(int damage); // ダメージ関数 }; /*--------------Character.cppの中身----------------*/ #include "Character.h" using namespace std; // コンストラクタ Character Character(string name, int HP, int STR){ this- name = name; this- HP = HP; this- STR = STR; } // デストラクタ Character ~Character(){ // 何もしない } // ダメージ関数 void Character Damage(int damage){ this- HP -= damage; cout name "は" damage "のダメージをうけた" endl; } /*--------------main.cppの中身----------------*/ #include "Character.h" int main(){ using namespace std; // Characterクラスの実体「yuusya」を作成 Character* hero = new Character("勇者", 10, 2); hero- Damage(5);// 勇者に5ダメージ cout "HP " hero- HP endl;// 勇者のHPを表示 delete hero;//「hero」を削除 return 0; } 問題 第1問 上記のCharacterクラスに、防御力を表すint型変数 DEF を追加せよ。 第2問 上記のCharacterクラスのコンストラクタを name, HP, STR, DEF を初期化するように書き換えよ。 第3問 上記のCharacterクラスに、メンバ変数の値を全て表示する関数 Draw_Status() を追加せよ。 また、main.cpp でCharacterクラスの実体を1つ作り、Draw_Status() を呼び 内容を表示せよ ※実行例 名前:勇者 HP:10 STR:2 DEF:255 第4問 mainでCharacterクラスの実体を3つ作り、それぞれ Draw_Status() を呼び、内容を表示せよ testcounter 合計 - 今日 - 昨日 -
https://w.atwiki.jp/sevenlives/pages/471.html
GoF? オブジェクト指向 疎結合 開閉原則?
https://w.atwiki.jp/macca/pages/13.html
分析 設計
https://w.atwiki.jp/nicepaper/pages/225.html
これまでのオブジェクト指向入門1~5では「インスタンス化し、アロー演算子(- )を使ってメソッド呼び出したり」「インスタンス化するタイミングでコンストラクタを使いメソッドを呼び出したり」していました。 今回はインスタンス化しなくても呼び出す方法についてまとめていきたいと思います。9月20日記事 目次 これまでの方法はインスタンスメソッドと呼ばれる 静的メソッド コード どっち使えばいいの? まとめ これまでの方法はインスタンスメソッドと呼ばれる インスタンス化をしてから、プロパティやメソッドを呼び出していくという方法でした。 静的メソッド インスタンス化しなくてもクラスそのものに属し、インスタンスメソッドとかかわりがないような独立して存在しているような状態は静的メソッドを使います。 コード Class ?php class Static_Method{ public static function addition($num1,$num2){ return $num1 + $num2; } } 呼び出す方 ?php require_once ( ../class/Static_Method.php ); $num1 = 4; $num2 = 5; print $num1."+".$num2."は".Static_Method addition($num1,$num2)."です。"; Static_Methodがクラス名、additionがメソッド名です。classの方では、public static functionとなっているのに対して、呼び出す方ではインスタンス化せずにクラス名とメソッド名を ではさんで記述して引数に変数を渡しています。 どっち使えばいいの? 時々現場でも議論になることがあります。インスタンスを意識した場合にはインスタンスメソッドで、そうでない場合には静的メソッドです。どちらでも可能な場合がありますが、概念的にどちらを使うべきかを意識するためには、やはりインスタンス化された時にアロー演算子を使って値の処理を色々したい場合、インスタンスメソッドで 別にアロー演算子を使わなくてもよく、値の処理が絡まない場合は静的メソッドを利用します。うまく説明できているとは限りませんので、 「インスタンスメソッド 静的メソッド 使い分け」などで検索してみてください。この部分の理解はクロスチェックが必要です。 まとめ オブジェクト指向最初の方は静的メソッドでもインスタンスメソッドでいい場合が多いですが、インスタンスするまでもなさそうな場合は静的メソッドを使うようにするといいと思います。 次はPHPでオブジェクト指向入門7~静的プロパティ~です。 以上
https://w.atwiki.jp/kameda/pages/1.html
https://w.atwiki.jp/xwingmini2/pages/26.html
オブジェクト Object 船、障害物、デバイスはすべてオブジェクトである。プレイエリア内のオブジェクトの正確な位置は管理され、ゲーム効果によって制限される。 船はオブジェクトをロックすることができる。 船はオブジェクトの上を通過することができる。
https://w.atwiki.jp/hogazurou/pages/66.html
GoF
https://w.atwiki.jp/devindex/pages/17.html
コンストラクタ引数なし 引数あり 補足 デストラクタ ステップアップtry、catch、finally、using クラス 参考 コンストラクタ 引数なし public コンストラクタ(){ } 引数あり public コンストラクタ(引数){ } 補足 並べることでオーバーロード可能 デストラクタ ~コンストラクタ(){ } ステップアップ try、catch、finally、using 例)ファイルの読み込み +第1段階……tryなし String str; StreamReader FILE = new StreamReader(ファイルパス);while((str = FILE.ReadLine()) != null){System.Console.WriteLine(str);//表示} +第2段階……try、catch、finallyあり String str; try{StreamReader FILE = new StreamReader(ファイルパス);while((str = FILE.ReadLine()) != null){System.Console.WriteLine(str);//表示}}catch(System.IO.FileNotFoundException ex ){System.Console.WriteLine(ex.Message);System.Console.Read();//エンターで終了return -1;}finally{//後処理if (FILE != null){FILE.Close();}} +第3段階……try、catch、usingあり String str; try{using(StreamReader FILE = new StreamReader(ファイルパス)){while((str = FILE.ReadLine()) != null){System.Console.WriteLine(str);//表示}}}catch(System.IO.FileNotFoundException ex ){System.Console.WriteLine(ex.Message);System.Console.Read();//エンターで終了return -1;} クラス 参考 http //www.labasp.net/CsharpNote/mTips/Moji/index.html
https://w.atwiki.jp/hear_br0wn/pages/61.html
オブジェクト指向プログラミング(Object Orinted Programming=略してOCP) Java、C#、Perl、Ruby、PHPなどにも取り入れられている 「クラス」「インスタンス」「プロパティ」「メソッド」などで成り立っている。 ●自動車を例に考えてみる 【自動車「プリウス」】 ・車種 :普通車 ・ドア数 :4ドア ・形 :セダン ・燃費 :45km/L ※グレードによるオプション ・タイヤ :普通、スタッドレスなど ・排気量 :680cc、1200ccなど ・色 :青、白、黒など ・内装 :革素材、布素材など 一概に「プリウス」といっても、店で売られているものは「プリウス-タイプS]「プリウス-タイプR]など 内装やエアロパーツ、出せるスピード、色などさまざまな種類のものがある。 ●クラスとインスタンスに当てはめて考えてみる 工場で完成したもの = クラス お店で販売されているもの = インスタンス と仮定してプリウスを作るとき、 同じ設計図(ひな形)を元に、すべての「プリウス」に共通するもの(工場で完成したもの)を作成し、 オプションだけをそれぞれ別々につけたもの(お店で販売されているもの)を作ってグレード別でお店で販売。 つまり、 大元の共通部分を作成し、そこから細かい部分を加えたり、減らしたりして別なものをつくる考え方。 ●MovieClipに当てはめて考える。 ※シーンとライブラリをうまく使い分ける 【クラス】 ・ライブラリに前車共通部分を含めた「プリウス」を作成 【インスタンス】 ・ライブラリからシーンに「プリウス」をもってたもの ⇒「プリウス-タイプS」「プリウス-タイプR」などそれぞれの名前をつけられる(それぞれのインスタンス名) 【インスタンスのカスタマイズ(プロパティ)】 ・シーンに持ってきた「プリウス」にオプションパーツをつけられる ⇒インスタンスにそれぞれのオプションを指定できる 【メソッド】 ・前に動かす、バックする、曲がるなどの命令 ※プロパティとメソッドは一緒に扱われることがおおいので、 運転手が車に乗っているのを前提とした時の、車の「概観」と「運転」、と考えるとわかりやすいかも。 ●クラスとインスタンス var インスタンス変数名 = new クラス名(); ※配列・オブジェクト変数もこの一種 var 配列名 = new Array() var オブジェクト変数名 = new Object() ●プロパティ(属性) ※インスタンスがもともともっている性質で、そのインスタンスがムービークリップか、ボタンか、グラフィックかでその性質が変わる。 ⇒位置情報、大きさ 【プロパティの参照】 インスタンス名.プロパティ名 インスタンス名.プロパティ名 = プロパティの値 ●メソッド(関数・命令) ※「メソッド」は関数(一連の処理がまとめられた部品のようなもの)で、ターゲットによって使えるもの、使えないものがある。 【メソッドの参照】 インスタンス名. メソッド名(引数1,引数2,・・・); ○プロパティとメソッドは携帯にたとえるとわかりやすいかも。 電話する、メールするなどの機能がメソッド。 機種・色・画面の大きさなどがプロパティ 例:ライブラリ内のムービークラスにスクリプトを記述 ⇒スクリプト