タグ

関連タグで絞り込む (277)

タグの絞り込みを解除

OOPに関するkiyo_hikoのブックマーク (216)

  • オブジェクト指向で作ってみる その3 - PHPでOOP

    MVCフレークワークの作り方について解説してあるPHPがありました。 「PHPによるWebアプリケーションスーパーサンプル 活用編」というの第6章にある「フレームワークを作ろう」という内容を参考にして、MVCフレームワークの基的な仕組みを勉強してみます。 MVCフレームワークの仕組みを利用して、以前に作った掲示板を改良してみます。 http://www.amazon.co.jp/dp/4797332638/ 書名 PHPによるWebアプリケーションスーパーサンプル 活用編 著者 KJ, 田中ナルミ 出版社 ソフトバンククリエイティブ 発刊日 2006.05.27 ISBN 4797332638 動作サンプル http://kameleon.s241.xrea.com/oop/bbs_mvc1/index.php ファイル構成 ファイル 全26個 (記号:■ディレクト

  • Class::Struct - declare struct-like datatypes as Perl classes - Perldoc Browser

    CONTENTS NAME SYNOPSIS DESCRIPTION The struct() function Class Creation at Compile Time Element Types and Accessor Methods Initializing with new EXAMPLES Author and Modification History #NAME Class::Struct - declare struct-like datatypes as Perl classes #SYNOPSIS use Class::Struct; # declare struct, based on array: struct( CLASS_NAME => [ ELEMENT_NAME => ELEMENT_TYPE, ... ]); # declare struct, bas

  • クラスの抽象化を考えるとき、「抽象クラス」にすべきか、「インターフェイス」にすべきか。それを決め - クラスの抽象化を考える... - Yahoo!知恵袋

    クラスの抽象化を考えるとき、「抽象クラス」にすべきか、 「インターフェイス」にすべきか。 それを決め クラスの抽象化を考えるとき、「抽象クラス」にすべきか、 「インターフェイス」にすべきか。 それを決める際のもっとも 明確な基準を教えて下さい。 誰でも簡単に理解できるような 「○○なら抽象クラス、××ならインターフェイス」という 明解な判断の基準をぜひ知りたいのですが。 *All Aboutガイドからの大質問特集の質問です。 回答する際は、Yahoo!知恵袋トップから特集内容をご確認ください。*

    クラスの抽象化を考えるとき、「抽象クラス」にすべきか、「インターフェイス」にすべきか。それを決め - クラスの抽象化を考える... - Yahoo!知恵袋
    kiyo_hiko
    kiyo_hiko 2012/02/16
    アドリブ
  • 7. Builder パターン

    7.1 Builder パターンとは 第7章では、Builder パターンを学びます。builder とは、建築者や建築業者などを意味する単語です。Builder パターンとは、同じ作成過程で異なる表現形式の結果を得るためのパターンです。 例えば、家を建てることを考えてみます。完成する家がどのような家になるかというのは「家の構築過程」と「素材」大きく2つの要素で決定されると考えてみてください。「作成過程」とは、「どのような順番で、どこに何を配置していくか」というようなことであり、「素材」とは、「柱には何を使って、壁には何を使って・・・」ということであると考えてください。 このとき、「作成過程」には、"平屋を建てるための作成過程" や "2階建ての家を建てるための作成過程"、または "少し変わった平屋を建てるための作成過程" など様々なものが考えられます。同様に、「素材」にも、"柱は木で、壁

    kiyo_hiko
    kiyo_hiko 2012/02/14
    最近作ってるのは小規模なアプリばかりなので直接ビルダークラスのメソッドをロジックから呼んでる事が多い
  • 「なぜオブジェクト指向を使うのか?」(1) Java Solution - @IT

    IT 会議室 Indexリンク Windows Server Insider Insider.NET System Insider XML & SOA Linux Square Master of IP Network Java Solution Security & Trust Database Expert RFID+IC リッチクライアント & 帳票 Server & Storage Coding Edge @ITクラブ Cafe VB業務アプリケーション開発研究 @IT SpecialPR

    kiyo_hiko
    kiyo_hiko 2012/02/03
    めんどくさいものをオブジェクトという外注に出すイメージ。もちろんAPIはちゃんと文書で保証してもらう。Perlのコードで個人的な感覚では、1スクリプトで500行を超える辺りで手続き型で読むのはめんどくさくなる。
  • subtest と Hook::LexWrap を使って xUnit みたいな setUp, tearDown をする - tsucchi’s diary(元はてなダイアリー)

    発見したのは結構前なのですが、twitter でつぶやいても(これとかこれ)、あんまり(っていうか全く)反響なかったのでこっちにも書いておきます。 Perl でテストを書いているときに、xUnit の setUp/tearDown*1を使いたい場合、Test::Classを使ってテストを書いて、setup, teardown を使うのが一般的かな、と思います。こんな感じね。 #!/usr/bin/perl use strict; use warnings; use Test::Class; MyTest->runtests(); package MyTest; use parent qw(Test::Class); use Test::More; sub set_up :Test(setup) { diag("setup"); } sub tear_down :Test(teardown)

    subtest と Hook::LexWrap を使って xUnit みたいな setUp, tearDown をする - tsucchi’s diary(元はてなダイアリー)
    kiyo_hiko
    kiyo_hiko 2012/02/03
    Hook::LexWrap
  • - Excel VBA - Decorator パターンモデル

    1999/08/27 更新 石井 勝 概要 ここでは,Decorator パターンモデルという Excel プログラミングに関するアーキテクチャを解説します.これは,Decorator パターンをアーキテクチャレベルにまで拡張したモデルで,継承が使えない VB プログラミングで威力を発揮すると思います.まだ実験段階なので,このモデルが実用化できるかは今後の課題です. Excel プログラミングとは? Excel のプログラミングを一言で表すと,VBA プログラミングで Excel を拡張する,ということです.オブジェクト指向の立場で拡張といえば,継承ですね.したがって次のように任意の ExcelObject クラスを継承してプログラミングできればいいですね: 例えば Worksheet クラスから MyWorksheet クラスを継承すればいいわけです.そうすると望みのカスタマイズされたワ

    kiyo_hiko
    kiyo_hiko 2012/02/02
    Perlのコアモジュールのみだとメソッドのフックがうまいことできないので (Perlは一応Hook::LexWrapでフックはできる) 、Decoratorを作ってそちらを呼んで定型的な処理を割込ませることを考えた。余裕ができたらやってみる
  • メソッドチェーンの話 - Charsbar::Note

    たしかに使い方によっては非常に読みづらくなるのは事実だから、「あまり多用しないでほしい」という気持ちもわからないではない。 でも、このサンプルでそれを言うのはあんまりじゃなかろうか。 以下のようなメソッドチェーンは読むのが困難だ。 my $loader = Loader->new; my $book = $loader->load( 'Book' )->build loadメソッドが自分自身( $loader )を返却して、そこからbuildが呼ばれたのか、他のオブジェクトが返却され、そこからbuildがよばれたのかがわからない。 だから、あんまりメソッドチェーンを多用しないでほしい。Mojoのソースコードを読んでいてそう思った。 http://d.hatena.ne.jp/perlcodesample/20090217/1233844169 ふたつめの文をそのまま英語として、名詞と動詞に

    メソッドチェーンの話 - Charsbar::Note
    kiyo_hiko
    kiyo_hiko 2012/01/31
    メソッドチェーンが読みにくいという現象自体は、およそ不自然なクラス設計をしていないとあり得ないような気もする。
  • DataSpiderにおけるコンポーネント間のインタラクションの設計と実装 : 小野和俊のブログ

    先日、ソースコードのメンテナビリティについてのエントリを書きましたが、dankogaiさんから「で、具体的にどんなコード書いてるの?」という指摘がありました。 返信エントリでは、「DataSpiderはオープンソースではないのでソースコードをそのまま出すことはできない」と書いたのですが、よく考えたら、一部エッセンスを抜き出してサンプルコードとして紹介することはできるので、最近私が書いたコードの中で、メンテナビリティに関係するコードを紹介したいと思います。 ※ ソースコードの行数が正しく表示されない場合にはブラウザの幅を広げると正しく表示されます。なお、ソースコードの構成をシンプルにするため今回のサンプルではViewModelは使用していません。 目次 ・コンポーネント間のインタラクションの管理 ・最も原始的な実装方法: コンポーネントの相互参照 ・Mediatorパターン ・Role Ob

    DataSpiderにおけるコンポーネント間のインタラクションの設計と実装 : 小野和俊のブログ
  • 職業プログラマになって考えた「良いコード」とは? - seri::diary

    仕事としてコードを書くようになって3週間が経ったので ここらで所感をまとめてみたいと思う。 ベンチャーと大手企業の違いみたいなことを書いてもいいんだけど、 正直今のところ「あまり変わらない」印象。 それもそのはず、現職もエンプラ向けの仕事。 SIと仕事のやり方はかなり似ている。 ので、純粋にプログラマとして思ったことを。 スパゲッティコードとの出会い この3週間で触ったのはウチの会社で改修・保守をやっているシステムの バッチや管理画面の細かい修正など。 コードは全てPHPだった。 この辺は一番経験のある言語だったので助かった・・・と思った。 が、意気揚々とソースを見て愕然とした。 処理ベタ書きのずらずら続く手続き型の処理は序の口。 関数を定義する代わりにベタ書きスクリプトを外出しにしてrequire 意味不明な変数名 同じ処理をしているはずなのに名前だけ違う関数達 無計画なテーブル定義 業

    職業プログラマになって考えた「良いコード」とは? - seri::diary
    kiyo_hiko
    kiyo_hiko 2012/01/30
    「「酷いコードとは何か」を身をもって経験」
  • 11.3 オブジェクト指向を使えば! : Javaのオブジェクト指向入門

    ここまで、グローバル変数や構造体の問題点を見てきました。 では、オブジェクト指向プログラミングを使ってこの問題点を改善していきましょう。 「カプセル化」する まずはオブジェクト指向プログラミングの一機能「カプセル化」を使ってみましょう。 具体的には、「3.5 GetterとSetter」で紹介したGetterとSetterを使って、フィールドを守ってみます。 // AccessorRunner.java /** * フィールドをprivateにして、 * GetterとSetterを持つクラス。 */ class Accessor { /** * privateフィールドx3。 */ private int data1; private int data2; private int data3; /** * そのGetterとSetter。 */ public int getData1()

    kiyo_hiko
    kiyo_hiko 2012/01/29
    「内部がどうなっているのか分からない、ということはメリットです」…ああこれは全力で同意。既存のソースを読んで理解しろ、と言う人はJava風OOPの意義をわかってない / 重箱だけどdataはdatumの複数形。setDatasは変。
  • syboos.jp

    kiyo_hiko
    kiyo_hiko 2012/01/26
    活用シーンの例示があるのがいい感じ。マルチレベルアンドゥはまさにコマンドのスッタクといった感じかな
  • JavaScriptのイロハ:特集 - builder by ZDNet Japan

    builder by ZDNet Japanをご愛読頂きありがとうございます。 builder by ZDNet Japanは2022年1月31日にサービスを終了いたします。 長らくのご愛読ありがとうございました。

    kiyo_hiko
    kiyo_hiko 2011/12/27
    JSの関数周りの説明。JSだとオブジェクトは関数 (Constructor) を使って定義するらしいので重要っぽい。
  • いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    オブジェクトとクラスの関係について、次のような説明を見かけました(文言の引用ではなくて、檜山による要約)。 オブジェクトとクラスは全体としてツリー構造をしていて、ツリーの末端をオブジェクト、末端以外のノードをクラスという。末端であるオブジェクトは、その親ノードであるクラスのインスタンスと呼び、クラスどおしの親子関係を継承関係と呼ぶ。 うーむ、この説明、ある意味「簡潔でわかりやすい」とも言えるのだけど、ちょっと単純化し過ぎでしょ。 オブジェクトやクラスの概念て、そんなに美しくもなきゃ、整合的でもありません。実用性やら実装上の都合やらでゴチャゴチャですがね。しかし、そのゴチャゴチャが悪いともいえません。ゴチャゴチャを無理に単純化することなく、必然性を持った(幾分は偶発的だけど(苦笑))複雑さとして理解すべきかと思います。 というわけで、メタクラスやレイフィケーション(reification)な

    いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Javaのクラスとオブジェクトについて再度解説を試みる - 達人プログラマーを目指して

    オブジェクト指向プログラミングの考え方については、今までこのブログでも何度か取り上げてきました。 [オブジェクト指向] - 達人プログラマーを目指して オブジェクト指向プログラミングはプログラミング技法のすべてではないとはいえ、Javaのようなオブジェクト指向言語で格的なプログラムを作るには理解を避けて通ることができませんし、また、関数型言語など他のパラダイムの言語を利用するにしても、オブジェクト指向の考え方をまったく理解しないまま使いこなすということは困難でしょう。オブジェクト指向の考え方はデータ構造やアルゴリズムといったことと同様に、プロフェッショナルなプログラマーが理解しておくべき基的な素養といってもよいと思います。実際、海外では募集要項でオブジェクト指向の理解を前提とすると書かれていることが普通ですし、プログラマーの面接試験で、アルゴリズムと並んでオブジェクト指向プログラミング

    Javaのクラスとオブジェクトについて再度解説を試みる - 達人プログラマーを目指して
    kiyo_hiko
    kiyo_hiko 2011/12/18
    巷のSIとか受託レベルだとちょっと敷居が高い様な気がしますが、参照変数の理解が非常に重要なのは同意。無理やり犬に例えるなら、参照変数は首輪ひもの持ち手のわっかで、代入は同じ首輪(犬)に紐をつなぐ、的な
  • オブジェクトは難しくない。難しいのはクラス

    オブジェクト指向はしばしば,とっつきづらく難しい技術と言われます。その理由の一つには,対象とする分野が広く,それぞれに深みがあることが挙げられます。しかし,それ以上にこの技術を難しくしている落とし穴とも言うべき原因が二つあると筆者は考えています。それは比喩を乱用する説明の仕方の問題と,「もの中心」を意味するコンセプト自体の問題です。 事実、オブジェクト指向というのは最初は子供向けだったのだ。 このことを、現在「オブジェクトとはなんぞや」という大人たちは忘れてしまっている。 それで、オブジェクトとは何か、といえば、「自分が何が出来るのかを知っているデータ」ということになる。それ以上でもそれ以下でもない。犬は吠えることはできても話すことは出来ない。URLからホスト名やパスを取り出すことは出来ても、URLどおしを足すことは出来ない。犬が哺乳類で、URLが文字列でというのはその後でかまわない。 人

    オブジェクトは難しくない。難しいのはクラス
  • イミュータブル - Wikipedia

    コンピュータプログラミングにおいて、イミュータブル (英: immutable) なオブジェクトとは、作成後にその状態を変えることのできないオブジェクトのことである。対義語はミュータブル (英: mutable) なオブジェクトで、作成後も状態を変えることができる。mutableは「変更可能な」、immutableは「変更不可能な、不変の」という意味を持つ形容詞である。 あるオブジェクト全体がイミュータブルなこともあるし、C++でconstデータメンバを使う場合など、一部の属性のみがイミュータブルなこともある。場合によっては、内部で使われている属性が変化しても、外部からオブジェクトの状態が変化していないように見えるならば、オブジェクトをイミュータブルとみなすことがある。例えば、コストの高い計算の結果をキャッシュするためにメモ化を利用していても、そのオブジェクトは依然イミュータブルとみなせる

  • 開発者が知っておくべき、6つのUIアーキテクチャ・パターン - @IT

    .NET開発者中心 厳選ブログ記事 開発者が知っておくべき、6つのUIアーキテクチャ・パターン ―― 「matarillo.com」より ―― 猪股 健太郎 2011/12/15 「.NET開発者中心 厳選ブログ記事」シリーズでは、世界中にある膨大なブログ・コンテンツの中から、特にInsider.NET/.NET開発者中心の読者に有用だと考えられるブログ記事を編集部が発掘・厳選し、そのブログ記事を執筆したブロガーの許可の下、その全文を転載・翻訳しています。この活動により、.NET開発者のブログ文化の価値と質を高め、より一層の盛り上げに貢献することを目指しています。 Martin Fowler氏の『GUI Architectures』を訳して公開しようと思ったのだが、FAQページに「PofEAAの続編などは商業出版する予定なので翻訳はしないでほしい」と書いてある。なので翻訳の公開はやめて、「

  • Amazon.co.jp: ASP.NET MVC 2 プログラミング リソース (Programmer’s SELECTION): Jeffrey Palermo (著), Ben Scheirman (著), Jimmy Bogard (著), Eric Hexter (著), Eric Hexter (著), Matthew Hinze (著), 新丈径 (監修): 本

    Amazon.co.jp: ASP.NET MVC 2 プログラミング リソース (Programmer’s SELECTION): Jeffrey Palermo (著), Ben Scheirman (著), Jimmy Bogard (著), Eric Hexter (著), Eric Hexter (著), Matthew Hinze (著), 新丈径 (監修): 本
  • BROKEN's Advanced Vehicle Laboratory

    プロジェクト / 小型ヒューマノイド2003 for ROBO-ONE 4.3 基礎実験:ステートマシンという考え方 前の実験ではLEDが1秒ごとに点滅することでPICが正しく動作することを確認しました。ここでは、プログラムを設計する上で大変有効な、ステートマシンという考え方について説明します。 サンプルプログラムは、LEDの光らせ方を変えたものをステートマシンの考え方にのっとって作成してみました。 ステートマシン (state machine)とは 内部状態によって振る舞いが変化する仕組みをステートマシンといいます。たとえば、Aちゃんという子がいたとしましょう。Aちゃんは普段はどんな仕事を頼まれてもいやな顔をせず引き受けてテキパキとこなしますが、お昼近くになってお腹がすいてくると何を頼んでもやってくれません。お昼をべて空腹が満たされると、また普段のAちゃんにもどりますが、定時のチャイム

    kiyo_hiko
    kiyo_hiko 2011/12/08
    Stateパターンを図で表すとステートマシン図と状態遷移表になるわけか / 仕事でオブジェクト指向設計なんてやったこと無いので参考に。