Visual Studio Users Community Japan #1 で発表した資料になります。 https://vsuc.connpass.com/event/143114/

Visual Studio Users Community Japan #1 で発表した資料になります。 https://vsuc.connpass.com/event/143114/
ソフトウェア設計とは何か? (原文: What Is Software Design?) by Jack W. Reeves (c)C++ Journal - 1992 訳者まえがき この文書は,Jack W. Reeves 氏が1992年に C++ Journal に寄稿した記事の邦訳です。 本記事では,オブジェクト指向プログラミング言語の代表として C++ を挙げていますが,これは本記事が執筆された当時,一般的に利用可能なオブジェクト指向言語は C++ だけであったという事情があるためです。 今では C++ に加えて Java,Delphi,C# といったオブジェクト指向言語が利用可能となっていますが,そんな今でさえこの記事は古さを感じないものとなっており,ソフトウェア開発の本質,現状を鋭くえぐるものとなっています。 邦訳の公開を許諾していただいた Jack W. Reeves 氏に,
|記事一覧|if 篇|for 篇|配列 篇| Python.use(better) 《Python3.1, Jython2.5.0, IronPython2.6.x》 OOP への道 《余録》〜 if/for/配列と別れる50の方法 〜 《著》真樹育未・後藤いるか・小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部第0版♪1988/10/12 ● 第1版♪1993/05/23 ● 第2版♪2003/05/25 Smalltalk-80 セミナー用に作成したテキスト(1988)をもとに、C++ 版(1993)を経て、Jython 版(2003)として加筆/再構成した余録集です。 Oh 脳《120》Python には switch もないのか - 続・ひよ子のきもち ■ 概要 伝統的なC言語風の for 文や悪名高い switch 文、配列の呪縛から解かれ、オブジェクト指向プログラミング〔OOP〕の醍
■ はじめに 先日、目黒雅叙園にて開催されたDevelopers Summit 2009。私たちオブジェクトの広場も第一日目の開発プロセストラックの枠で「オブジェクト指向エクササイズのススメ」という講演をさせていただきました。 ■ タイムテーブルに載った内容 制約と誓約、ある能力を高めるためには、この二つの制限が必要だといわれます。自分の人生をオブジェクト指向に捧げると誓約したエンジニアのために、オブジェクト指向の能力を高めるための制約「オブジェクト指向エクササイズ」を紹介します。 これはもちろん「ハンター×ハンター」の「制約と誓約」のことです。ある種のルールを遵守することによって、能力向上をするというものです。ルールは厳しく不自由なものほど、より爆発的な能力向上が可能になるという設定です。 この「オブジェクト指向エクササイズ」は先日出版された「ThoughtWorks アンソロジー」中の
わかっててわざとやるんだったらいいんですけど、そうじゃないなら定石通りに書くべきだと思います。 5 sub new { 6 my $c = shift; 7 bless $c; 8 } 33 my $human = Human::new({'name' => 'ビンゴ', 34 'age' => 1, 35 'bag' => {} 36 }); 第31回 Perlでオブジェクト指向を書こう この書き方の問題点は二つあります。まず、コンストラクタを Human::new のように静的呼び出ししていること。もう一つが、blessを1引数で使っていることです。 確かにblessは1引数で使っても、デフォルトとして定義された時点でのパッケージへリファレンスを紐づけてくれます。ってことは、わざわざクラス名が渡るように書かない方が、冗長じゃなくていいじゃん? と思われるかもしれないですが、それはちょっ
さて、オブジェクト指向のプログラムを書いてみようといったので書いてみました〜。 といってもいきなりソースを載せるのもなんなので、まずどんなプログラムを書こうとしたか。 そこからお話させていただきます。 今朝、電車に乗ると必死で、PSPをされている方がおられました(たぶんモンスターハンターだと思われる)。 ということで、なにか冒険者が冒険するようなものを作ってみたいと思います。 でも、そんな大げさなものは作れないので、たんに主人公だけを作ってみたいと思います(といってもこの主人公もできることは少ないのですが)。 主人公 まず、主人公ですから、名前を持ちましょう。そしてこの主人公には年齢の情報も持たせます。そしてこの主人公は、袋(bag)をもっており、なんでもそこに入れることができます。 主人公ができること 主人公は袋を持っていますので、何かを袋に入れることができます。 以下のようにpushメ
さて、どこから説明したらいいものやら...... という感じなのですが、前回のソースの説明をしたいと思います。 前回のソースはもうひとつ窓を開けてもらって(別のブラウザとかで見てもらって)ここでは、部分的に説明していきたいと思います。 まずは、 new 33 my $human = Human::new({'name' => 'ビンゴ', 34 'age' => 1, 35 'bag' => {} 36 }); このnew をしている部分からいきたいと思います。 new関数自体は次のようになっています。 5 sub new { 6 my $c = shift; 7 bless $c; 8 } 単に、受け取ったものをblessしているだけ。 つまり、受け取ったものに魔法をかけて、Humanパッケージの関数を使えるようにしているわけですね。 おっと! そうそう、主人公をつくるためのパッケージは
さて、ただblessするだけの関数を作ったが、 これを各々のパッケージに持たせることで、 各パッケージに、blessされた変数を返してもらうことにする。 これにより、 パッケージ名::blessされた変数を返す関数 という書式で、そのパッケージの関数を呼び出せる変数がもらえることになる。 例えば、Hogeパッケージの関数を呼び出すことができる変数を返してもらうなら、 my $c = Hoge::new(); と書ける。 あとは、 $c->h() といった感じで使っていけばいいのだ。 なお、今回は、 blessされた変数を返してくれる関数を new という名前にした。 それでは、もっと具体的な例を見てみよう。 use strict; package Hoge; sub new { my $c = shift; bless $c; # Hogeパッケージ内で呼ばれているので、第2引数は'Hog
さあ、 別パッケージを呼び出す方法が、たくさん出てきたので、混乱してきたところではないだろうか? いままでのところをまとめよう。 別パッケージの関数を呼び出す方法 パッケージ名::関数名 blessされた変数->関数名 'パッケージ名'->関数名 パッケージ名->関数名 この 4つの方法がでてきたわけだが、 下3つに共通しているのは、 -> 記号で関数を呼んでることである。 つまり 前回の最後のソースを実行してみよう それでは、前回の最後のソースを実行してみよう! 先ほども述べたが、別パッケージを呼び出す方法は、 で呼び出す方法 > で呼び出す方法 に大別できるのである。 この違いを示すのが、前回のソースである。 (再掲) use strict; package Hoge; sub h { my $z = shift; print "$z", "\n"; # 関数に与えられた第1引数を表示
JavaScript における new 演算子の動作は大まかにいって以下のとおりである。(new F() とした場合。) 新しいオブジェクトを作る。 1 で作ったオブジェクトの [[Prototype]] 内部プロパティ (__proto__ プロパティ) に F.prototype の値を設定する。 F.prototype の値がオブジェクトでないのなら代わりに Object.prototype の値を設定する。 F を呼び出す。このとき this の値は 1 で作ったオブジェクトとし、引数には new 演算子とともに使われた引数をそのまま用いる。 3 の返り値がオブジェクトならそれを返す。そうでなければ 1 で作ったオブジェクトを返す。 ここで「オブジェクトである」というのはプリミティブ値 (文字列、数値、真偽値、undefined 、null) ではないということだ。new Stri
クラスを定義する方法です。考え付くだけでも、これだけたくさんの方法があります。やっぱり、 JavaScript って柔軟であり複雑な言語ですね。 ちなみに、以下のすべての例はこのクラスを定義しています。 ちなみに、僕は一番下の書き方ですね。 皆さんはどのようにプログラミングしていますか? プロトタイプを使わない。クロージャを使う。 // プロトタイプを使わない。 // クロージャを使う。 function Item(price) { this.showPrice = function() { alert(price); }; } プロトタイプを使わない。クロージャを使わない。 // プロトタイプを使わない。 // クロージャを使わない。 function Item(price) { this.price = price; this.showPrice = function() { aler
コメント: ◆除菌清掃・フィルム梱包。アマゾンから迅速発送◆帯は付属しません。表紙に若干のスレがあります。その他に目立つダメージはありませんが、中古品につき小キズなどがありますので、ご了承ください。丁寧な検品と清掃、迅速な発送を心がけております。アマゾン配送センターより毎日迅速発送いたします。お届けした商品に気になる点がございましたら、アマゾンカスタマーセンターまでお問い合わせ下さい。誠意をもって対応を致します。 フルフィルメントby Amazon™というサービスを利用している出品者の商品になります。これらの商品は、Amazonフルフィルメントセンターにて保管・管理され、Amazon.co.jpが商品の梱包、出荷、返品などを代行しています。フルフィルメントby Amazonの商品は、Amazon.co.jp が販売している商品と同様に国内配送料無料(条件あり)やAmazonプライム®の対象
■商品の状態【付属品】 問題なし。【カバー】 多少のキズ・ヨゴレあり。【本体】 多少のキズ・ヨゴレあり。■ご注文通知から1営業日以内に発送。■水ヌレ、ヨゴレ、キズ防止の為、耐水ビニール封筒に入れて発送いたします。■万が一、こちらの商品説明及びガイドラインで認められている範囲以外に不良点がございましたら送料及び商品代金を全額返金いたします。 ■商品の状態【付属品】 問題なし。【カバー】 多少のキズ・ヨゴレあり。【本体】 多少のキズ・ヨゴレあり。■ご注文通知から1営業日以内に発送。■水ヌレ、ヨゴレ、キズ防止の為、耐水ビニール封筒に入れて発送いたします。■万が一、こちらの商品説明及びガイドラインで認められている範囲以外に不良点がございましたら送料及び商品代金を全額返金いたします。 一部を表示
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く