タグ

Programmingとoopに関するjjzakのブックマーク (51)

  • 碧落 - C 言語でオブジェクト指向プログラミングを行う

    はじめに この記事では C 言語でオブジェクト指向プログラミングを行う方法を、 アドレス帳ソフトの作成を例にしながら紹介します。 とは言っても、 現在「オブジェクト指向プログラミング」という言葉で表されることを完全に実現するわけではありません。 Bjarne 氏が言うところの 「データ抽象化のスーパーセットであるオブジェクト指向プログラミング」 を現実的な手間で実現します。 これによって次に挙げる点の向上を狙います。 安全性 可読性 他言語との相互運用性 オブジェクト指向とは オブジェクト指向という言葉が魔法の呪文のように唱えられた時代は終わったように思いますが、 オブジェクト指向という言葉は何を表すのでしょうか。 隠蔽、継承、多相性という 「オブジェクト指向の三原則」 を満たさなければオブジェクト指向言語ではないとしてプログラミング言語が批判されたこともありました。 しかし「オブジェクト

  • Cで実現する「ぷちオブジェクト指向」

    はじめに CodeZineではお初にお目にかかります、επιστημη(エピステーメー)です。最初のアーティクルはクラシックなCのお話。 昨今のアプリケーションはオブジェクト指向言語による実装が主流と言ってもいいでしょう。C++Java、VB.NETさらにはRubyPythonといったスクリプト言語まで、オブジェクト指向でない言語を探すのに苦労するくらいです。 記事では、今なお現役バリバリで活躍している手続き型言語の代表格(?)Cによる、オブジェクト指向のマネゴト(オブジェクト指向風味のCコーディングスタイル)を試みます。 対象読者 もっぱらCを主な開発言語として使ってはいるけども、オブジェクト指向に興味と憧れを抱いている方。 抽象データ型 手始めにオブジェクト指向の特徴の1つ、「抽象データ型(ADT:Abstract Data Type)」をCで実現してみます。抽象データ型とは、デ

    Cで実現する「ぷちオブジェクト指向」
  • http://www.malib.net/api/ja/node2.html

  • Gushwell's C# Programming Page - 『C#プログラミングレッスン』書庫

    2004年夏から発行を開始したメールマガジン『C#プログラミングレッスン』のバックナンバーをダウンロードできます。 GitHubに移行しました。 当ページからはダウンロードすることはできません。ご注意ください。 メールマガジン『C#プログラミングレッスン』が『C#プログラミング入門』という題名で書籍になりました。メールマガジンの記事のなかからC#の機能に的を絞った箇所をベースとし、大幅な修正加筆をしています。詳しくはこちらをどうぞ。

  • DCIアーキテクチャ - Trygve Reenskaug and James O. Coplien - Digital Romanticism

    この記事はartima developerに掲載されている、Trygve Reenskaug氏とJames O. Coplien氏による記事「The DCI Architecture: A New Vision of Object-Oriented Programming」を、著作権者であるBill Bennrs氏の許可を得て翻訳したものです。文内の図の著作権はArtima, Inc.に帰属します。(原文公開日:2009年3月20日) 要約 オブジェクト指向プログラミングはプログラマとエンドユーザの視点をコンピュータコードにおいて統一するものと考えられていた。この恩恵はユーザビリティとプログラムの分かりやすさの両面にわたる。しかし、オブジェクトは構造をとらえるのに長けている一方で、システムの動作をとらえることができていない。DCIはエンドユーザのロールに関する認識モデルとロール間の関係を

    DCIアーキテクチャ - Trygve Reenskaug and James O. Coplien - Digital Romanticism
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • Efficient data transfer through zero copy

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Efficient data transfer through zero copy
  • 2008-03-22

    最近やってる事を書きます。しばらく前に、アランさんからメールが来て、ここしばらくイアンの奴に全力投球するようにと言われました。他に Javascript がどうだとか OpenDocument がどうだとか沢山あるけど、色々出来ないのでとりあえず全然分かっていないイアンの奴を勉強するのが先決だと思い、エディタを書くという課題を自らに課しました。ほんとは物理シミュレーションとか、関数型言語を作るとか、そういう派手な奴をやりたかったのですが、イアンの奴がそれどころでは無い完成度なのでそれは諦めました。 なぜエディタかと言うと、良くある GUI フレームワークや、Squeak でさえもテキスト入力の部分はブラックボックスになっていて、ユーザが気軽に触れない事になっているので、前々から良くないと思っていたからです。この点で Swing は結構カスタマイズ出来るようになっていて参考になります。あと、

    2008-03-22
  • NyaRuRuが地球にいたころ

    github.com github.com InputMethodService#BACK_DISPOSITION_ADJUST_NOTHING InputMethodService#requestShowSelf(int) github.com HapticFeedbackConstants#KEYBOARD_PRESS HapticFeedbackConstants#KEYBOARD_RELEASE HapticFeedbackConstants#TEXT_HANDLE_MOVE HapticFeedbackConstants#VIRTUAL_KEY_RELEASE github.com EditorInfo#IME_FLAG_NO_PERSONALIZED_LEARNING 1 年遅れぐらいになりますが,OSS Mozc 関係で 2015 年にやったことのまとめです. 空き時間を利用

    NyaRuRuが地球にいたころ
  • Windowsを馬鹿すると永遠に分からない……かもしれない? メッセージ・パッシング・モデルで自分にメッセージを送る理由!? 【▲→川俣晶の縁側→ソフトウェア→技術雑記】

    僕は、オブジェクトもthisもサッパリ理解できなかった より引用 それで、一番わからないのが、thisとかselfに対するメッセージ・パッシング。「自分にメッセージを送る」って何よ、それ? 他人を動かすならともかく、自分ならサッサとやりゃいいじゃん。イチイチ「俺、お茶飲め」とか「私、ドア開けましょう」とかメッセージしないといけないわけか。 この問題ですが。 なぜ、自分に対するメッセージを送る必然性があるのか、という問い掛けは、ある意味でもっともに思えます。しかし、実際に必然性のあるシステムが存在するので、その仕様、あるいは実装をベースにすれば、なぜ必要なのかを説明できます。 そのシステムとは何か? § オブジェクト間でメッセージをパッシングして動作するモデルを採用しているシステムというのは、実はみんなが使っているWindowsです。ほとんどのプログラム言語では、メッセージ・パッシング・モデ

  • プログラミングテクニックのまとめ - プログラミング日記

    とりあえず思いついたもののまとめ。 まずは、ベーシックなものから。 変数のスコープをなるべく狭くしろ 他はグローバル変数を使うなとか、モジュール化と界面を意識せよなど。とにかくスコープは重要かつ意外と奥が深い。スコープに関係する機能は、モジュール(パッケージ)、クロージャ、ローカル関数、ローカルクラス、変数の種類、アクセス制御など。 同じロジックのコードを2度以上書くな 他はDRY原則、コピペをするななど。自分の場合、2度書く方がシンプルになる場合、2度書くこともある。特に、ifやswitchなどのロジックの中で同じコードが2度現れる場合、ちょっとしたコードでわざわざ別のところで関数やブロックにまとめて、それを参照するのは面倒。但し3度以上現れる場合は関数などにまとめるケースが多いかも。 汎用コード内で条件分岐コードを減らせ 他はifをポリモーフィズムによりなくせなど。条件分岐は汎用性を損

    プログラミングテクニックのまとめ - プログラミング日記
  • Ruby1.9 のクラスのメタ階層とかevil-rubyとか - 世界線航跡蔵

    sumimさんの「 Ruby1.9のクラスのメタ階層を整理する 」という記事、Rubyの型階層は雑然としているというのは、なんかsumimさんの図が悪いような気もするなぁ。整理すればもうちょっと情報を引き出せるよ。あと、モジュールのせいもある。 前提知識 Rubyは基的には単一継承のクラスベースオブジェクト指向言語なのだけれども、幾つか注意すべき処がある。 クラスはClassクラスのインスタンスである。 モジュール 制限付きの実装多重継承をもたらす仕組み。内部的には、モジュールの「化身」となるクラスを継承階層を挟み込むことで実装されている。 以下、モジュール M に対してその化身クラスを I(M) と表記する。 詳しくは 以前の記事 を参照。 特異クラス 特定のオブジェクトに専属するクラスのこと。特定のオブジェクトにだけ存在するメソッド「特異メソッド」を定義すると、内部的には特異クラスを

    Ruby1.9 のクラスのメタ階層とかevil-rubyとか - 世界線航跡蔵
  • 大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係(その2)

    大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係(その2):プログラミング言語の進化を追え(1/3 ページ) 前回に引き続き、Scheme言語の処理系、Gaucheを開発している川合史朗氏が、クロージャの機能を検証し、関数型言語とオブジェクト指向言語の関係について解説していきます。今回は、クロージャとオブジェクトのより深淵を探求します。 抽象化ツールとしてのクロージャ C++的なオブジェクトの世界では、オブジェクトの実体とは「ひとかたまりの構造体としてメモリ上に置かれたインスタンス変数の値」にすぎません。オブジェクトのポインタを取れば、それは事実上、その構造体へのポインタを持っていることになります。クロージャを「関数」中心で見ていると、その実体は「オブジェクト」の実体とは異質なもののように思えるでしょう。 確かにクロージャのナイーブな「実装」は、関数ポインタと環

    大人のためのブラックボックス読解講座――クロージャとオブジェクトの微妙な関係(その2)
  • アラン・ケイの「Is "Software Engineering" an Oxymoron?」 - Smalltalkのtは小文字です

    UPDATE!!: id:propella さんがすばらしい翻訳を公開してくださいましたので、そちらをどうぞ 「ソフトウェア工学」は矛盾語法か? "-- -- -- -- -- -- -- -- -- -- -- -- -- --" Is "Software Engineering" an Oxymoron? [PDF(勝手ミラー版)] タイトルの訳はよく分からないのですが「“ソフトウエア工学”は矛盾表現か?」みたいな感じでしょうか。 これは、Croquet(Squeak システム上に構築された仮想3D空間オーサリング用のフレームワーク。Qwaq 社による商用化もされている)の最初の公開バージョンのマニュアル(Croquet0.1.pdf)の付録に掲載された文章なのですが、なぜか公式サイトからは消えていて、ググって見つけた勝手アーカイブから入手できる元の PDF でも絵が壊れていたので、そ

    アラン・ケイの「Is "Software Engineering" an Oxymoron?」 - Smalltalkのtは小文字です
  • まつもと直伝 プログラミングのオキテ 第12回 多重継承再び

    今回は継承,特に誤解されがちな多重継承について改めて解説します。「オブジェクトは現実世界のモノの反映であり,継承はそのモノの分類を反映したものである」,「多重継承は良くないものだ」という意見が正しいかどうか,判断する基準を紹介します。 今回は,オブジェクト指向にまつわる誤解を取り上げましょう。 これまで,オブジェクト指向プログラミングの古くからのファンとして解説を書き,Rubyというオブジェクト指向プログラミング言語を提供してきました。オブジェクト指向プログラミングをより多くの人が身近に感じられるように貢献してきたつもりです。Smalltalkよりも手軽に入手でき,JavaC++よりも簡単にオブジェクト指向プログラミングを実践できるRubyによってオブジェクト指向という概念がより理解しやすくなったのではないかと自負しています。 しかし,その過程で,私自身の未熟さもあり,オブジェクト指向プ

    まつもと直伝 プログラミングのオキテ 第12回 多重継承再び
  • OOコード養成ギブス - rants

    Binstock on Software: Perfecting OO's Small Classes and Short Methods The Pragmatic Programmersシリーズの新しい、The ThoughtWorks Anthologyの中に 興味をそそるエッセイがある。Jeff Bayの"Object Calisthenics"だ。 これは良いオブジェクト指向の性質を実証する小さなルーチンを書く方法をマスターするための 詳細にわたるエクササイズだ。オブジェクト指向なルーチンを書く能力を向上させたい開発者がいるなら このエッセイに目を通すことを勧める。ここにBayのアプローチを要約してみよう。 彼は次にあげられる制約のもとに1000行のプログラムを書くことを勧めている。 これらの制約は意図的に過剰な制限となっているが、これは開発者を手続き的なやり方から脱却させるた

    OOコード養成ギブス - rants
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • CLOS - ファイヤープロジェクト

    CLOSとはCommon Lisp Object Systemの略らしい.OOというのはメソッドというしばしば破壊的な関数がバンバンでてきて,Lispとは相容れない世界かと思っていたのだが,そうではないようだ. クラス定義とインスタンンス化とスロットの参照 メソッド スロット 優先度 総称関数 スロットの継承 補助メソッド オペレータメソッドコンビネーション 総称関数の削除 クラス定義とインスタンンス化とスロットの参照クラスはdefclassで定義する. (defclass クラス名 スーパークラスのリスト スロットのリスト) スロットとは,多くのOOプログラミング言語でスロットと呼ばれているものに該当する.以下は二つのスロットfoo,barをもつhogeというクラスを定義している. > (defclass hoge () (foo bar)) #<STANDARD-CLASS HOGE>

    CLOS - ファイヤープロジェクト
  • 2007-08-01

    よってらっさい、みてらっさい 人生で大切なことはすべて文字列が教えてくれた 部分文字列を取り出す 文字列を結合する 文字列同士を比較する 任意の比較関数を使って文字列同士を比較する 一度に文字列の各文字を操作する 文字列を逆順にする 文字列を単語単位で逆順にする 様々な方法で文字列を組み立てる 文字から組み立てる 印字可能な表現から組み立てる 様々なオブジェクトから組み立てる 文字列の前後の空白を削除する すべての文字を大文字または小文字にする 各英単語の先頭文字を大文字にする 文字列を整数に変換する 文字列を整数以外の数値に変換する 数値を文字列に変換する ANSI Common Lispでの扱い cl-ppcre 正規表現にマッチする文字列を探す グローバル変数を定義する 概要 文法 実行の順序と戻り値 リストの各要素に対して繰り返し処理を行う 指定した回数だけ繰り返す ループ内でのみ

    2007-08-01
  • Rubyのメタクラス階層 - 世界線航跡蔵

    この記事は、先日開催した 第3回 RHGの逆襲 のまとめみたいなものである。と、同時に『初めてのRuby(仮題)』の宣伝である。 クラス、その例外、そのトリック Rubyはクラスベースのオブジェクト指向だから、メソッドの情報はクラスに属している。インスタンスメソッドを呼び出すときには、そのオブジェクトの属するクラスを調べて、そのクラスの持っているインスタンスメソッドの中から探す。 でも、Rubyの場合は例外がある。1つはモジュール。モジュールはクラスではないのに、でもインスタンスメソッドを提供している。1つは特異メソッド。特異メソッドは特定のインスタンスに直接所属するメソッドだ。 でも、ここには実装上のトリックがある。Rubyにとってはモジュールのインスタンスメソッドも特異メソッドも、等しくクラスに属するインスタンスメソッドなんだな。 モジュール モジュールをクラスにincludeすると、