タグ

クラスに関するm_shige1979のブックマーク (27)

  • クラス・モジュールの概念 Ruby - Qiita

    オブジェクトについて学習してきたがここでクラスとモジュールの概念について学ぶ。 クラス はオブジェクトになれる、、、つまりインスタンス化能力を持ち、インスタンスメソッドやクラスメソッドを格納できる。 モジュール はインスタンス化能力は持たないがメソッドを格納できる。 例えば、以下のクラスとモジュールがあるとする。 module Panda def visit_to_Japan "Mr.TonTon" end def panda @panda = "panda" end end class Zoo def the_zoo "There are lots of animal" end end class UenoZoo < Zoo include Panda def monkey @monkey = "monkey" end def elephant @elephant = "elephant

    クラス・モジュールの概念 Ruby - Qiita
  • rubyのクラスやらモジュールがモヤっとしている人へ - Qiita

    どうも。今、やっとこの「モヤッ」が解消されたgogotanakaです。 この記事はrubyrailsはそれなりに書けるけど 実はclassとかmoduleの継承とかインスタンスとかそいう言葉を出されると「モヤッ」となる、 方々のためにこの辺をまとめてみましたよ。 という体裁の自分用の備忘録である。 表記法 よくとかに載っている表記法だけど一応確認。 ThisIsClass#this_is_method これはThisIsClassクラスのインスタンスのメソッドthis_is_methodを指してる ThisIsClass.this_is_method ThisIsClass::this_is_method これはThisIsClassクラスのクラスメソッドthis_is_methodを指している 一回 class Hoge ~ end を忘れよう rubyをいじった事がある方にはおなじ

    rubyのクラスやらモジュールがモヤっとしている人へ - Qiita
  • 継承はメソッドを使いまわすためにあるのでない - 超ウィザード級ハッカーのたのしみ

    まだまだオブジェクト指向を極めたわけではないのですが、最近気になったこと。 オブジェクト指向の継承はメソッドを使いまわすためにあるのではないということです。 Fooというクラスがあって、BarというクラスがFooを継承(inherit)しているとする。つまり、Bar is a Fooとなっている。 このとき、Barに求められるのは、Fooと同じメソッドを持つということだけではない。メソッドの動作は変えても良いが、意味は変えてはならない。プログラム内でFooクラスを使っているところをBarに置き換えても、Fooを使っているつもりで動作しなければならない。 これを守ろうと思ったら、継承はむやみにできなくなると思うです。 ただメソッドを使いまわしたいだけなら継承ではなくて、委譲(delegate)をするべきなのです。例えば、Fooを継承したBarというクラスがあったとして、他にFooを継承したク

    継承はメソッドを使いまわすためにあるのでない - 超ウィザード級ハッカーのたのしみ
  • 無名クラス(PHP7)をマイクロフレームワークで使ってみた - ぷぎがぽぎ

    PHP7からは無名クラスが使えるようになりました。 どういった場合に無名関数を使う機会があるかなぁと考えていると、ふとマイクロフレームワークの無名関数部分の代わりに使うと良いんじゃないかと思いやってみましたというのがこの記事。 [追記] 実際にSlim3 のアプリで使えるようにcomposerでインストールできるようにコードを整理しなおして用意してみた。 Slim3 ではなく、もっと薄いPHP7フレームワークを書き始めてみた記事はこっち。 無名関数 vs 無名クラス また、PSR-7でリクエストとレスポンスのインターフェースが決められ、それに従ったフレームワークやミドルウェアが出てきています。そこで、PSR-7 のサポートをした Slim3 と PHP7 試してみます。 まずは、Slim3 のドキュメント通りに Hello World すると: <?php use \Psr\Http\Me

    無名クラス(PHP7)をマイクロフレームワークで使ってみた - ぷぎがぽぎ
  • クラス設計の原則 — みんなのウェディングエンジニアリングブログ

    みんなのウェディングの高井です。 クラスベースのオブジェクト指向プログラミング言語を利用している人であれば、クラスとは、ありふれていて普段から利用するものです。にもかかわらず、良いクラスをつくるというのは、なかなかに難しいことです。 先日、みんなのウェディングでアルバイトをしてくれている学生さんのコードレビューをしていたときにも、それを強く感じました。 実践的プラグマティックには「ソフトウェアの規模や文脈にあわせて、適切に抽象化していただきたい」という以上のことを言っても仕方がないところなのですが、それだけでは経験の浅いプログラマーにとって、まったく分からないという話になってしまいます。 というわけで、今回はクラス設計の原則についてのお話しです。 Bertrand Meyerのクラス設計の原則 Bertrand Meyerは『オブジェクト指向入門 第2版』の中で、クラス設計について章をひと

    クラス設計の原則 — みんなのウェディングエンジニアリングブログ
  • Google流 JavaScript におけるクラス定義の実現方法

    目次 2019年追記 はじめに クラス実現のために必要な JavaScript の言語仕様 function this call new 演算子 prototype チェーン プロパティ: prototype Google Closure 流のクラスの実現方法の概要 クラスの宣言とコンストラクタの定義 メンバ変数 (インスタンス変数) メソッド定義と呼び出し private, protected 継承 プロトタイプチェーンを利用してメソッドを親クラスから引き継ぐ 親クラスのコンストラクタの呼び出し メソッドオーバーライドと親クラスのメソッドの呼び出し 多重継承 abstract, interface inherits の実際のコード 良くないクラス実現方法 ES6 のクラス 2019年追記 この記事ではclassが導入されたES6以前のJavaScriptでどのようにクラスに相当するものを

  • PHPにおける継承、オーバーライド、protected、parentの書き方と使い方、継承の設計

    PHPにおける継承、オーバーライド、protected、parentの書き方と使い方、継承の設計:PHPオブジェクト指向プログラミング入門(3)(1/3 ページ) 「PHPで、どのようにオブジェクト指向プログラミングをしていくか」を解説する連載。今回は、継承、オーバーライド、protected、parentの書き方と使い方、継承の設計についてコード例を交えて解説します。

    PHPにおける継承、オーバーライド、protected、parentの書き方と使い方、継承の設計
    m_shige1979
    m_shige1979 2015/08/05
    parent、self、static
  • PHPオブジェクト指向入門(前半) - Qiita

    コンセプト オブジェクト指向プログラミング未経験者~理解を深めたい人、ノンケ~ホモまで幅広くカバーするつもり。多分。 クラスとオブジェクト(初級) 唐突ですが、量産型のロボットの設計・製造について考えてみましょう。 ロボ太郎 ロボ次郎 イラストで初心者を釣る クラス まず、ロボットの設計図を クラス として定義します。設計図をもとにロボットを製造するには、 new 演算子を使います。製造された物体のことを オブジェクト や インスタンス と呼びます。ここではこれらの用語を区別せずに用いることにします。 Yahoo!知恵袋 - オブジェクトとインスタンスの違い

    PHPオブジェクト指向入門(前半) - Qiita
  • 【javascript】やさしいクラスの作り方 - Qiita

    勉強がてら。「TypeScript使えばいいじゃん」「ES6」とか言わないで。 hogeクラスをつくるとき 1. 一般的なつくりかた // constructor var hoge = function(arg) { this.x = 5; this.y = 10; this.z = arg; }; // メソッド hoge.prototype = { f1: function() { return true; }, f2: function() { return false; } }; var instance = new hoge(1); // hoge {x: 5, y: 10, z: 1, f1: function, f2: function} var hoge = (function() { var FOOFOO = 777; // クラス内定数 // constructor v

    【javascript】やさしいクラスの作り方 - Qiita
  • PHPにおけるオブジェクトインジェクション脆弱性について — A Day in Serenity (Reloaded) — PHP, CodeIgniter, FuelPHP, Linux or something

    SQLインジェクションはかなり有名になりましたが、オブジェクトインジェクションはまだあまり聞かないので、まとめておきます。 Dependency Injection(DI)とは関係ありません。 オブジェクトインジェクション脆弱性とは? SQLインジェクションが外部からSQL文を注入する攻撃であるのと同じように、オブジェクトインジェクションとは外部からオブジェクトを注入する攻撃です。 外部からオブジェクトを注入できれば、そのオブジェクトの機能によりさまざまな攻撃ができる可能性があります。最悪の場合、任意のコードを実行できる脆弱性になります。 PHPの場合、この攻撃が可能なのは、unserialize()関数を悪用できる場合です。 攻撃の方法 unserialize()関数に外部から任意のデータを渡すコードがあった場合、攻撃者は自由にシリアライズされたデータを送信することで、生成されるオブジェ

  • Laravelのartisanの自作 | IT屋だけど、なにか?

    こんにちは、かねこです。 あたまのいいチャラ男になりたいですが、頭はなかなか良くなりません。一方で、チャラ男にはすぐになれるため、結果的にただのチャラ男になっています。どうぞよろしくお願いします。 今回は、PHPのウェブアプリケーションフレームワークLaravelの、artisanコマンドクラスの自作方法について試しました。 Laravelちょういいよ! Welcome! – Laravel PHP Framework はじめに Laravelにはartisanという強力なコマンドラインインターフェースがあり、開発作業をサポートするような便利なコマンドがたくさん用意されています。 http://four.laravel.com/docs/artisan さて、今回はartisanコマンドの自作クラスを作ってみましょう artisanていうのは、Wikipediaでみると、 アルチザン

    Laravelのartisanの自作 | IT屋だけど、なにか?
  • JavaScript フレームワークがデータバインディングを実現する4通りの手法

    最近流行りの JavaScript MV* フレームワークは、どれもデータバインディングをサポートしているが、実現方法はフレームワークによって異なる。 この記事では、各種フレームワークがどのようにモデルの変更を検知しているかを次の 4 つのパターンに分類して紹介する。 モデル クラス方式 (Ember.js、Backbone.js、Ractive.js、Knockout.js など) 力ずく方式 (AngualrJS) モデル書き換え方式 (Vue.js) Object.observe 方式 (Polymer) パターン名は私が勝手に名づけたものだけど、このへんの雰囲気が理解できれば、フレームワークごとの個性が分かるだろうし、利用イメージもわきやすいんじゃないかと思っている。 1. モデル クラス方式 「モデルとして扱えるのはフレームワークが用意したモデル クラスのインスタンスだけ」という

    JavaScript フレームワークがデータバインディングを実現する4通りの手法
  • クラス設計が難しいと改めて思い知る - Gobble up pudding

    クラス設計は難しい... 前回のエントリーで書いたテトリス Windows APIC++でテトリス - Gobble up pudding のプログラムを書いて、オブジェクト指向というよりクラス設計は難しい、 当に難しい!!ということを痛感しました。 絶対にコレ!っていう定石みたいのがほとんどないからなのでしょうか。 一方、フレームワークやライブラリを作っている人のクラス設計は当に綺麗。 一方僕の書くようなものはともすれば 気を付けてはいるものの 密結合になりがちだったり、 汎用性に欠けたり、変更に弱かったりします。 この差はなんなんでしょうか。センスなんでしょうか? 経験なんでしょうか。 たぶん経験が大きいと思われます。 テトリスで考えてみる... 今回のテトリスの例で考えてみます。 これは私の現在の設計の大まかなやり方 (設計といっても頭で考えながらとりあえず実装してみて トライ

    クラス設計が難しいと改めて思い知る - Gobble up pudding
  • Androidエンジニア必見!「挫折しないユニットテスト」を始めるための3つのポイント | VASILY DEVELOPERS BLOG

    Androidエンジニアの村田です。チームメンバーが増えてきてますますテストコードの必要性を感じています。 ということでAndroidアプリの開発でユニットテストを導入しました。 挫折しないでユニットテストを始めるための3つのポイントを紹介していきたいと思います。 なぜ始めたか? まずはじめにそもそもなぜ始めたのかの理由を3つ紹介します。 プロダクトの品質を仕組みとして保ちたかった コードレビューはしてるが、あくまで人の目の確認となり抜け漏れが生じてしまいます。クラスやメソッド単位での品質は仕組みとして担保したいと思いました。 チーム内でクラス、メソッドの仕様についての共通認識を高めたかった そのコードは何を受け取ったらエラーとするのか?テストコードを書けばわかりやすくなると思います。自分のためにもチームメイトのためにもなると思います。 仕様変更によるバグ発生の回避 たくさんの機

    Androidエンジニア必見!「挫折しないユニットテスト」を始めるための3つのポイント | VASILY DEVELOPERS BLOG
  • 【JavaBeans】BeanとDTOとEntityとVOとFormの違いって何?- Javaプログラマーのはしくれダイアリー

    色んなシステムに携わっていると、様々なJavaのクラス名に遭遇する。 ○○Beanとか ○○DTOとか ○○Entityとか ○○VOとか ○○Form。 ここらへんって 「MVCのModelのデータ部分にあたるって意味で同じだし」 とか 「ゲッター/セッターがあるクラスで意味的に一緒じゃない?なんで色々名前つけてんの?」 って思いませんか? ってことで、今回はそれぞれの定義を改めて考えてみようと思う。 とりあえずはそれぞれの意味から ・Bean 総称はBean。あえて言うならJavaBeansの略。 Javaの初心者でも知っている。 あまりに有名すぎるが、Oracleのサイトのガイドを見ながらパクってまとめてみた。 ・Sun Microsystems社のJavaBeans仕様に準拠した再使用可能なソフトウェア・コンポーネント。 ・最低限、クラスにはプロパティが必要。 ・プロパティはメソッ

    【JavaBeans】BeanとDTOとEntityとVOとFormの違いって何?- Javaプログラマーのはしくれダイアリー
  • RubyのString/Regexpクラスによる強力な文字列操作/正規表現

    連載目次 前回の「RubyのRangeクラスと範囲オブジェクト、範囲演算子、イテレーターの使い方」では、数などの範囲を表現するためのRangeクラスと、ArrayクラスやHashクラス、Rangeクラスに関わりの深い概念である「イテレーター」について解説しました。 今回も、引き続きRubyの組み込みクラスの解説を行います。ここでは、特に文字列を表現するためのStringクラスと、正規表現を扱うためのRegexpクラスについて学びましょう。 Stringクラスにも有用なメソッドがたくさんありますし、正規表現は文字列と密接に関わっており、文字列を扱う上で非常に強力な武器となります。ただし強力であると同時に、自分以外の人が書いた正規表現の意味を理解するのは困難です。用法用量を守って正しく正規表現を使いこなしましょう。 Stringクラスのメソッドに文字列操作を、よく使うものを中心に紹介 Stri

    RubyのString/Regexpクラスによる強力な文字列操作/正規表現
  • CakePHP3まとめ(Entityクラス編) - Qiita

    CakePHP3から新しく追加されるEntityクラスの簡単なまとめ 環境構築についてはCakePHP dev-3 + Windows7 + IIS + MySQLの環境構築を参照 概要 ファイル名・クラス名 Getter と Setter Eager loading と Lazy loading その他 概要 2.xまでのModelクラスは、3.xではTableクラスとEntityクラスに分離される Tableクラスは主に下記のような機能を有する(2.xまでのModelクラスと機能的にはほぼ同じ) データのCRUD アソシエーション バリデーション Entityクラスはクエリ結果の各レコードにアクセスするためのクラス namespace App\Model\Table; use Cake\ORM\Table; class ArticlesTable extends Table { pub

    CakePHP3まとめ(Entityクラス編) - Qiita
  • Duck Typing - LukeSilvia’s diary

    最近コードと書く上で使っていきたいなと思ったので勉強。 Duck Typing (ダックタイピング)とは 定義 結論から書くと、「あるオブジェクトがアヒルのように歩き、アヒルのように話すなら、Rubyインタプリタはそのオブジェクトをアヒル」とみなす。この考え方をダックタイピングといいます。 クラス≠型 ダックタイピングの背景には、「クラス≠型」という考え方があります。 Java 等、静的型付け言語では「オブジェクトの型=そのオブジェクトのクラス」という考えが一般的です。しかし、Ruby では(Javaであっても)、オブジェクトの型は、その「オブジェクトが何ができる」かによって定義されます。 説明の文を書いてもいまいちピンとこないと思いますので、コードを混ぜて考えていきます。 Duci Typing を用いたCSV パーサーのテスト CSVParser のテスト 例えば、Rails 内で次の

    Duck Typing - LukeSilvia’s diary
  • Java8 で StringBuilder/StringBuffer クラスがリファクタリングされていました。 - 地平線に行く

    ついに Java SE 8 がリリースされました! そこで、早速ダウンロードして、Java 8 のソースコード(src.zip)を Java 7と比較してみたところ、公表はされていないのですが、ちょこちょことリファクタリングされていることがわかりました。 そこで、そのうち StringBuilder/StringBuffer クラスについて調べてみました。 引数に null が渡されたときの処理 append メソッドの仕様で、「引数が null の場合、"null" という4文字が追加される」というのがあります。 この仕様について、Java 7までは "null" という文字列を追加するという実装がされていました。 // Java 7 Update 51 (AbstractStringBuilder クラス 422行目〜) public AbstractStringBuilder app

    Java8 で StringBuilder/StringBuffer クラスがリファクタリングされていました。 - 地平線に行く
  • ふたつのIterator - プログラマーの脳みそ

    コードを書いているとたまにふたつのIteratorをいっしょに回すコードを書くはめになる。 /** ふたつのItaratorを並べて回すサンプル */ static boolean compare1(List<String> list1, List<Integer> list2) { if (list1.size() != list2.size()) { throw new IllegalArgumentException("個数の不一致"); } Iterator<String> ite1 = list1.iterator(); Iterator<Integer> ite2 = list2.iterator(); // 敢えてショートサーキットしない&演算を用いる while (ite1.hasNext() & ite2.hasNext()) { String v1 = ite1.nex

    ふたつのIterator - プログラマーの脳みそ