タグ

OOPとjavaに関するkiyo_hikoのブックマーク (59)

  • Javaクラスの継承で独立したstatic変数を使いたい - OKWAVE

    インスタンスの存在と無関係にクラス共通のフィールドを持たせて、 Ex1.str = "hoge"; Ex2.str = "moga"; のような書き方がしたい訳ではなく、 Ex1 ex1 = new Ex1(); ex1.str = "hoge"; のように常にインスタンスを介する使い方で、 同じクラスに属するどのインスタンスにも共通させたいが、 それぞれのクラスで宣言するのは面倒なので、 できればスーパークラスで処理を一元的に記述したいということなら、 直接フィールドにアクセスするやり方ではないが、 以下のようにスーパークラスにインスタンスメソッドのアクセッサを定義して、 Classクラスをキーにしてクラス変数のMapに格納しておく方法もある。 public abstract class AbstractStatic { private static java.util.HashMap<

    Javaクラスの継承で独立したstatic変数を使いたい - OKWAVE
    kiyo_hiko
    kiyo_hiko 2013/04/12
    static変数を持ったクラスを継承するためstaticなHashMapにClassをキーにして値を格納 これいい
  • Java/欠点 - PukiWiki

    null はオブジェクトでない † null は参照値 (reference value) なので == != による比較はできる。 しかし null はオブジェクトではない。そのため,いちいち if (obj == null) と条件判定をしなければならない。 これは,あたかも,ポリモルフィックなメソッドにおいて (クラスの違いによるディスパッチをせずに)instanceof による場合分けをするようなもので, コードの美しさを損なう→シンプルでなくなる→保守が困難になるという滝壺に落ちていく誘因となる。 純粋なオブジェクト指向プログラミングの観点からは, Null クラスに唯一のオブジェクト null が用意されている とすればよかっただろう。 いくつかのオブジェクト指向言語を比較すると,この方法が最も美しく感じられる。 Java でも同等なことができないことはない。たとえば stat

    kiyo_hiko
    kiyo_hiko 2013/02/04
    メソッドが総称関数ではなくクラスに属してしまうから多重ディスパッチができない。ダブルディスパッチ、Visitorパターンを使う必要がある。
  • Java開発者必修! ソフトウェア・パターン専科 ソフトウェア・パターンへのいざない | ウルシステムズ株式会社

    はじめに ソフトウェア・パターンという言葉を聞いたことがあるだろうか。ソフトウェア・パターンの中ではデザイン・パターンが有名であり、すでに実際の開発現場で適用されている方も多いと思われる。 デザイン・パターン以外にも多くのソフトウェア・パターンが存在しているのだが、残念ながら、デザイン・パターン以外のパターンについてはあまりよく知らないという方が多いのではないだろうか。 ソフトウェア・パターンに関する知識は、我々ソフトウェア開発者にとって、今後ますます重要になってゆくであろう。 連載では、ソフトウェア・パターンについて学びたい読者や、デザイン・パターンは知っているけれど他のパターンについてはあまり知らないという読者を対象に、さまざまなソフトウェア・パターンについて解説していく予定だ。 ソフトウェア・パターンとは そもそも、ソフトウェア・パターンとは何だろうか。ひと言でいえば、ソフトウェア

    Java開発者必修! ソフトウェア・パターン専科 ソフトウェア・パターンへのいざない | ウルシステムズ株式会社
    kiyo_hiko
    kiyo_hiko 2012/12/19
    Yes OCPちょう大事
  • VBA ¤È Java ¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥×¥í¥°¥é¥ß¥ó¥°

    VBA ¤È Java ¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥×¥í¥°¥é¥ß¥ó¥° VBA ¤È Java ¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥×¥í¥°¥é¥ß¥ó¥° ¥È¥Ã¥×¥Ú¡¼¥¸¥Ú¡¼¥¸°ìÍ÷¥á¥ó¥Ð¡¼ÊÔ½¸ FrontPage ºÇ½ª¹¹¿·¡§ donkichi 2015ǯ03·î27Æü(¶â) 19:05:23ÍúÎò Tweet ¤Ï¤¸¤á¤Ë MS-Office ¤Î¥Þ¥¯¥í¸À¸ì¤Ç¤¢¤ë VBA ¤ÈÈÆÍѳ«È¯¸À¸ì Java ¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤Ä¤¤¤Æ¤Î³Ð¤¨½ñ¤­¤Ç¤¹¡£ ¥Ö¥í¥°¤äTwitter¤â¤ä¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢¤´°Õ¸«¡¢¤´´¶ÁÛ¡¢¤Ê¤É¤¢¤ê¤Þ¤·¤¿¤é¥Ö¥í¥°¤Ç¤âTwitter¤Ç¤â¤¤

    VBA ¤È Java ¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¥×¥í¥°¥é¥ß¥ó¥°
    kiyo_hiko
    kiyo_hiko 2012/08/23
    VBAは文法はともかく、組み方が全っ然わからんので参考に
  • サルでもわかる 逆引きデザインパターン 第4章 逆引きカタログ その他 Nullオブジェクト

    具体的な例 それではより具体的な例を見てみましょう。サンプルは商品の割引価格を計算するコードです。 割引価格には「会員の割引価格」「セール時の割引価格」「通常の割引価格」の3種類があります。 割引価格の種類を決定するのは、Mainクラス実行時のアプリケーション引数です。 Mainクラスは「java Main 価格 割引ロジック名(sale, member, 指定しないのいずれか)」の形式で実行します。 例えば「java Main 1000 member」で実行すると会員割引価格となり、「java Main 1000 sale」で実行するとセール時の割引価格となります。 「java Main 1000」と指定がない場合は、通常の割引価格になります。 各クラスの役割は次のようになります(図8~9)。 ◎DiscountLogic(リスト14) 割引計算のロジックのインタフェースです。各割引計算

    kiyo_hiko
    kiyo_hiko 2012/05/15
    Strategy、Singletonとの関連性が深いパターンで、目障りなifを減らしぬるぽを防ぐ / 関連:hyukiさんのサイトも読む。 http://www.hyuki.com/dp/dpinfo.html
  • ○○Implの命名方法は悪!? - kensir0uのしくみ

    この前ケント・ベックさんの実装パターンというを読んだんだけども。 ソースはコミュニケーションをとるように記述する必要があると述べていた。 その中で、○○Implのネーミングはひどいと言っている。 たしかに実装クラスとインターフェースで区別を付けたいというのはわかる。 ○○Implだと実装クラスが複数ある場合は区別できないのも困る。 それのサブクラスを作って拡張するときにはなんと命名するのだろう? ○○ImplExtとでも、○○ImplSubとでも付けるのだろうか? 考えてみるといろいろ疑問に感じてきた。 そこでJavaのパッケージはどうなんだろうと思って調べてみた。自分の経験からJavaパッケージに○○Implって付いてるのはあまり見たことないので・・・無いのではないかなと思ったけども。 結論から言うと20クラスが○○Implだったり○○ImplFactoryとか命名されていた。(※イン

    ○○Implの命名方法は悪!? - kensir0uのしくみ
    kiyo_hiko
    kiyo_hiko 2012/04/11
    単純に英語として意味を通そうとすると、標準的な"○○Impl"は微妙で、Concrete○○とかになるのかなあと思った
  • 業務系のクラスでインタフェイスの実装クラス名に「インタフェイス名+Impl」って名前をつけるのはダサいよね。 - wildcatsの日記

    実装に特性があるからインタフェイスと実装を分離するわけで*1 インタフェイスに対して実装が1クラスになる場合にはインタフェイスと実装を分離する必要が無いとボクは思うね。 追記:特定のDIコンテナの話はこのエントリと無関係です。 追追記:他所での議論の延長でボクの考えをここに書いただけなので、特定のDIコンテナとか特定の設計手法とかは何も関係ない(というか意識もしていなかった)話ですけど。 上にも例外として書いたしコメントにも書いたんだけど、たとえばトランザクション自動制御とかでFacadeに対してAspectをかけたい場合の設計手法の一つとしてインタフェイスと実装を強制的に分離(インタフェイスと実装が1対1)してDynamic Proxyを使う設計手法を用いても構わないのではないでしょうか?最近のプロジェクトでDIコンテナは使ってないけどHibernateのセッションとかの管理をFacad

    業務系のクラスでインタフェイスの実装クラス名に「インタフェイス名+Impl」って名前をつけるのはダサいよね。 - wildcatsの日記
    kiyo_hiko
    kiyo_hiko 2012/04/11
    コメ欄より「interfaceImplではなくinterface_v101みたいな表記」なるほど / 追記先も見てみた。固有クラスでは多分アリだけど広く利用される予感ならI/FのJavadocにセマンティックス書く所かなあ
  • サービス終了のお知らせ

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

    kiyo_hiko
    kiyo_hiko 2012/03/21
    想定内の業務エラーを例外で受けるかどうかはともかく例外処理の一例として
  • Amazon.co.jp: Webアプリケーション設計・実装のためのフレームワーク活用の: 古川正寿, 早川順: 本

    Amazon.co.jp: Webアプリケーション設計・実装のためのフレームワーク活用の: 古川正寿, 早川順: 本
    kiyo_hiko
    kiyo_hiko 2012/03/21
    レイヤーアーキテクチャ、MVC Model2の概念、依存性の排除方法、AOPの利点などはこの本で学んだ 個人的にはかなりの良本
  • 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
    kiyo_hiko
    kiyo_hiko 2012/03/20
    これか Javaで型エイリアスを定義するために継承を使うというアンチパターンの害悪について
  • 「プログラムの命名規約について」(1) IT戦略 - @IT

    私は或るシステムの開発(プログラム)を担当しているのですが、 資産のファイル名の命名規約に疑問をもっています。 例えば以下のようなファイル名にすると... DH01UVN001.java DH01UVN002.java public void unshu_mikan () { : DH01UVN001 dbmgr = new DH01UVN001( DH01UVN002.NORMAL_VALUE ); : } のような記述をメソッドにしなくてはなりません。 クラスが以下の機能であるとすると、 DH01UVN001 DB接続クラス DH01UVN002 定数クラス DH01UVN001.java → DBManager.java DH01UVN002.java → SystemConst.java という方が自然だと思います。メソッドも以下のようになるわけです。 public void un

    kiyo_hiko
    kiyo_hiko 2012/03/20
    管理番号をクラス名にするってのは糞規約 インスタンスメンバーを呼ぶならまだいいが、クラスメンバーを呼ぶと意味不明に / 型エイリアスが付けれらればいいなと思ったけど、IBMだかでアンチパターン言われてたような
  • Yohta's Object World ~YOHTAのオブジェクト指向研究 デザインパターン・UML などなど~

    Yohta's Object World Study of Design Pattern Mastering Unified Modeling Language. Study of Design Pattern デザインパターンの骸骨たち (RE-BONE ) with C デザインパターンにC言語版を追加! (2009.2.28) デザインパターンの塗り薬 Sample Application for GOF's Design Pattern COMMANDを追加!(2004.5.29) jjtree(JavaCC)で、Visitorパターンをマスター 第八回修正 (2011.12.29) Special Issue C++ビギナーに捧ぐ EffectiveC++入門 フレッシュマン特集(2005.03.16) AMIGO FOR Win32 (Win32プログラミングのお助けクラス達)

  • syboos.jp

  • リフレクション (情報工学) - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "リフレクション" 情報工学 – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2023年1月) 情報工学においてリフレクション (reflection) とは、プログラムの実行過程でプログラム自身の構造を読み取ったり書き換えたりする技術のことを指す。 概要[編集] 日語では自己言及と呼ばれる。通常リフレクションというと動的(実行時)リフレクションのことを指すが、静的(コンパイル時)リフレクションをサポートするプログラミング言語もある。リフレクションはSmalltalk、Java、.NET Frameworkのような仮想機械やインタプリタ上で

  • syboos.jp

  • 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は変。
  • Javaのクラスとオブジェクトについて再度解説を試みる - 達人プログラマーを目指して

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

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

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

  • Iterator Interface

    Iteratorインタフェースはコレクションの要素を先頭から1つづつ、シーケンシャルにアクセスするためのインタフェースです。GoFのデザインパターンのイテレータパターンに対応しており、その特徴は コレクションの内部表現を公開せずに、要素にアクセスできる ことにあります。このため、Iteratorインタフェースをインプリメントしたクラスやその要素数、要素の保持方法などによらずに統一したインタフェースで要素にアクセスすることができます。 Iteratorインタフェースなので、そのまま生成することはできません。生成にはCollectionインタフェースのiteratorメソッドを使用します。 CollectionインタフェースはListインタフェースやSetインタフェースのスーパーインタフェースなので、これらのインタフェースでも使用することができます。 コレクションのシーケンシャルアクセス It

    kiyo_hiko
    kiyo_hiko 2011/12/06
    Perlでシーケンシャルアクセスさせるためのクラスを発明するので参考に
  • Java 暗号化拡張機能 JDK5.0

    kiyo_hiko
    kiyo_hiko 2011/10/19
    某言語でNew I/OのBufferのAPIに似たAPIを持つクラスを作ってみようと思ったので参考までにブクマ。そういえば某言語はオーバーロード的なものは1メソッドでやるから、Doxygen向けのAPI仕様書をどう書くのか確認する必要がある