タグ

oopに関するincepのブックマーク (22)

  • - Java プログラマーのための UML

    あなたが Java プログラマだとして,大きなソフトウェアの設計をしたり,それを他人に説明したり,あるいは今解こうとしている問題を明確に定義しようとする時,どうしているだろうか. 一人で小さなプログラムを作るという作業においては,あまりこのような問題は起こらないかもしれない.しかし,プログラム開発を職業にしている場合,あるい はある程度の規模のソフトウェアをチーム開発する場合は,必ず他人とのコミュニケーションが必要になる.それは顧客との仕様打ち合せであったり,内部でのプログラム構造の設計ミーティングであったりするだろう. 一人で開発を行う場合でも,システム全体を見ながら考えをまとめ, 機能的で保守性が高いすっきりとした構造に仕上げるには,何らかのビジュアルな図が役に立つことが多い. UML(Unified Modeling Language)とは,オブジェクト指向分析, 設計においてシステ

    incep
    incep 2022/09/22
    “UML は,描かれたモデルを複数人で共有してコミュニケーションしたり, 自分一人でも考えをまとめ,アイディアを展開する作業を助けるビジュアル・ランゲージなのである.”
  • DI(依存性注入)について

    こちらのスライドは以下のサイトにて閲覧いただけます。 https://www.docswell.com/s/ockeghem/ZM6VNK-phpconf2021-spa-security シングルページアプリケーション(SPA)において、セッションIDやトークンの格納場所はCookieあるいはlocalStorageのいずれが良いのかなど、セキュリティ上の課題がネット上で議論されていますが、残念ながら間違った前提に基づくものが多いようです。このトークでは、SPAのセキュリティを構成する基礎技術を説明した後、著名なフレームワークな状況とエンジニア技術理解の現状を踏まえ、SPAセキュリティの現実的な方法について説明します。 動画はこちら https://www.youtube.com/watch?v=pc57hw6haXk

    DI(依存性注入)について
  • Python のクラス変数とインスタンス変数の危ない関係 – ビットログ

    incep
    incep 2020/03/09
    “!?!?!? ٩(๑òωó๑)۶ wtf !?!?!?”こりゃ気を付けた方がいいなあ
  • Mixins in Python and Ruby Compared – Andrew Brookins

    The venerable “mixin” is a technique I learned as a Python developer. Now, after writing Ruby code for the past year, I’m excited to compare how these two languages approach mixins, including similarities, differences, and traps. There will be code! Table of Contents What is a Mixin? Mixins in Python Adding Instance Methods Adding Class Methods Trap: The Order of Superclasses Matters! Adding Insta

    Mixins in Python and Ruby Compared – Andrew Brookins
    incep
    incep 2019/10/17
    Mixinについて,そしてPythonとRubyでの書き方
  • シングルトンインスタンスの static 宣言は一番最後に書く - 地平線に行く

    この前、後輩からきかれてちょっとびっくりしたこと。 一見するとただのシングルトンパターンのクラスが、なぜか動かないと言われました。 public class Sample { private static final Sample instance = new Sample(); private static Map<String, String> map = null; private Sample(){ map = Collections.synchronizedMap(new HashMap<String, String>()); } public static Sample getInstance(){ return instance; } public void set(String key, String value){ map.put(key, value); // Null

    シングルトンインスタンスの static 宣言は一番最後に書く - 地平線に行く
    incep
    incep 2018/07/24
    インスタンス変数とクラス変数の分け方に注意する例
  • MSC07-J. シングルトンオブジェクトのインスタンスを複数作らない

    シングルトンデザインパターンの目的について、Gamma その他による著作では、以下のように簡潔に説明されている[Gamma 1995]。 あるクラスに対してインスタンスが1つしか存在しないことを保証し、それにアクセスするためのグローバルな方法を提供する。 シングルトンクラスはひとつしか存在しないので、「シングルトンのインスタンスフィールドは、static フィールドと同様、ひとつのクラスに一回だけ生成される。シングルトンは、データベース接続やソケットなどのようなリソースへのアクセスを管理するためによく使われる」[Fox 2001]。他の使用例としては、性能統計データの管理、システムの監視と記録、プリンタスプーラの実装、オーディオファイルが複数同時に再生されないようにする、などがある。static メソッドのみを含むクラスはシングルトンパターンの有力な候補である。 典型的なシングルトンパター

    MSC07-J. シングルトンオブジェクトのインスタンスを複数作らない
  • 【C#】staticクラスとシングルトン考察 - PG日誌

    C# には言語固有機能として static クラスという機能があります。クラス自体を static と宣言することで、インスタンス作成を禁止し、static 宣言したクラスのインスタンスが複数作成できないようにできます。ですがこの機能、デザインパターンにあるシングルトンと何か違うのでしょうか?ちょっと考察してみました。 まずは、static クラスと Singleton 各々が C# 言語上でどういう風に表現されるか見ていきたいと思います。 staticクラスの宣言 static クラスの宣言方法は簡単で、クラスの前に static を付けます。 // 宣言に「static」を追加 public static class GlobalDataByStaticClass ... こうすることによってこのクラスの新規作成、インスタンスメンバーの保持を禁止することができます。 public st

    【C#】staticクラスとシングルトン考察 - PG日誌
    incep
    incep 2018/07/10
    "staticクラスの場合、ほぼ一瞬で実装が完了するので大変軽いのですが、C言語時代にあったグローバル変数と同じで、派生クラスによる差し替えもできないため実装がシングルトンに比べ固くなります。"
  • シングルトンパターンの誘惑に負けない | プログラマが知るべき97のこと

    シングルトンパターンの誘惑に負けない著者: Sam Saariste シングルトン(Singleton)パターンは多くの問題の解決に役立つパターンです。このパターンでは、クラスのインスタンスは必ず1つしか生成されません。そのインスタンスは使用前に必ず初期化されます。そしてシングルトンをグローバルアクセスポイントとすることで、設計をシンプルにできます。こう書いていくと良いことずくめのようですが、この「古典的な」デザインパターンに何か短所はあるのでしょうか 実はたくさんあります。それはよく考えてみるとわかります。確かにシングルトンパターンは魅力的なのですが、私の経験では、このパターンには利点よりも弊害の方が多いと言えます。まずテストの妨げになります。そして保守性の点でも不利です。残念ながらその事実は広く知られているとは言えないため、多くのプログラマを窓きつけているのです。つい使いたい誘惑にから

    シングルトンパターンの誘惑に負けない | プログラマが知るべき97のこと
    incep
    incep 2018/07/10
    "「必要なインスタンスは1つだけ」という要望は、多くの場合推測にすぎない。", "理論的には独立しているはずのコード間に暗黙の依存関係を生んでしまう。"
  • 【JSでデザインパターン】シングルトン編 - Qiita

    はじめに 記事は、『JavaScriptパターン』(O'Reilly)の第七章を読んで、JavaScriptでいろいろなデザインパターンを試してみようと思い書いた記事です。なお、各記事が長くなりそうなので分割しました。 リンク一覧 【まとめ】JavaScriptでデザインパターン 【JSでデザインパターン】シングルトン編 【JSでデザインパターン】ファクトリ編 【JSでデザインパターン】イテレータ編 【JSでデザインパターン】デコレータ編 【JSでデザインパターン】ストラテジー編 【JSでデザインパターン】ファサード編 【JSでデザインパターン】プロキシ編 【JSでデザインパターン】メディエータ編 【JSでデザインパターン】オブザーバ編 Singleten Singletenとは? Javaのようなオブジェクト指向プログラミング言語では、静的と動的なプロパティ、メソッドが入り組んでいるた

    【JSでデザインパターン】シングルトン編 - Qiita
    incep
    incep 2018/07/10
    “// 地球の寿命は47億年”
  • サービス終了のお知らせ

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

    incep
    incep 2018/07/02
    "ヒープや関数ポインタをを知らないやつに,オブジェクト指向などわかるわけがない.上記が,実際,社長との間にある「壁」に潜む「プログラミング言語の歴史」とも言うべき壮大な万里の長城なのだ"お,おう…
  • サービス終了のお知らせ

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

    incep
    incep 2018/07/02
    これこれ,こういう説明が・・・
  • オブジェクトの複製 (ICloneable, Clone, MemberwiseClone) - smdn.jp

    ひとくちに複製と言っても、単純にコピー元の値をコピー先に代入することで行う複製や、なんらかのメソッドを呼び出すことで行う複製などさまざまな方法があります。 また複製を行う機能を実装する場合も、構造体やクラスなど複数のフィールドからなる型ではすべてのフィールドを複製する必要があります。 これらの他の型を内包する複合型の場合では、内包するオブジェクトも含めて複製するか、参照のみをコピーするかといったことが考えられます。 さらに、.NET Frameworkでは型には値型と参照型の二種類が存在するため、複製の際にはそれらの違いも考慮する必要があります。 ここではオブジェクトの複製を作成する方法と、複製を作成する機能を提供するICloneableインターフェイスについて解説します。

    オブジェクトの複製 (ICloneable, Clone, MemberwiseClone) - smdn.jp
    incep
    incep 2017/12/27
    コード例がわかりやすい
  • 第127回 Ruby vs Java ダックタイピングとインタフェースで見る多態性 - bingo_nakanishiの他言語出身者のためのPerl入門

    前回は、Perlで書いたのだけど、 Rubyでも書いてみたので載せます。 動的型付け言語と静的型付け言語における多態性 オブジェクト指向では、多態性(ポリモーフィズム)という発想がでてくる。 この多態性を実現する方法を今回は2つ紹介する。 Rubyは動的型付け言語であり、ダックタイピングという手法で、多態性を実現できる。 対して、静的型付け言語であるJavaでは上位の型を作ることで多態性を実現できる(今回はインタフェースを用いてみた)。 ダックタイピング Rubyでのタックタイピングを見てみよう。 human = Human.new dog = Dog.new duck = Duck.new human.touch(dog) human.touch(duck)いま、このようにhumanがtouchすると、おのおのの動物が鳴くソースを書いてみる。 duck(アヒル)はhuman(人間)に触ら

    第127回 Ruby vs Java ダックタイピングとインタフェースで見る多態性 - bingo_nakanishiの他言語出身者のためのPerl入門
  • コンストラクタの作成 - Perl入門ゼミ

    Perl › オブジェクト指向 › コンストラクタの作成 前回は以下のようなクラスの雛形を作成しました。 package Book; sub new { # コンストラクタの実装 } sub title { # アクセッサの実装 } sub author { # アクセッサの実装 } 1. コンストラクタとは オブジェクトはクラスを元に生成されます。オブジェクトとは何かとかクラスとは何かということは少し忘れて、「オブジェクトはクラスを元に生成される」ということを覚えてください。 そしてコンストラクタとはオブジェクトを生成するメソッドのことです。コンストラクタを作成すれば my $book = Book->new; という記述でオブジェクトを作成できるようになります。 コンストラクタ名には慣習的にnewという名前が使用されます。ですが、コンストラクタはnewという名前に必ずしましょう(なぜな

    コンストラクタの作成 - Perl入門ゼミ
    incep
    incep 2013/05/19
  • Perlオブジェクト基礎文法最速マスター - 旧燈明日記

    Perl5でのオブジェクトの基礎を解説したいと思います。 Perlでのオブジェクト指向と言えば、モダンPerl系ではMooseモジュール等なのですが、今回は、あくまでも基礎編です。 Perlで最速にオブジェクトをマスターするには、まず、「リファレンス」と「use宣言」と「bless」の3つが理解できていないとなりません。 なぜかと言うと、Perlでのオブジェクトはblessされたリファレンスなのです。また、Perlでのクラスはモジュールなのです。そのモジュールでの一番の謎は、use宣言なのです。 なので、はじめにこの3つを理解してから、そのあと「オブジェクト」と「オブジェクト指向」について解説していきます。 つまり、以下の順番です。 リファレンスについて use宣言について blessについて Perlでのオブジェクトについて Perlでのオブジェクト指向について ■リファレンスについて

    Perlオブジェクト基礎文法最速マスター - 旧燈明日記
    incep
    incep 2012/11/24
  • 旧FC2無料ホームページスペース サービス終了のお知らせ

    下記の「旧FC2無料ホームページスペース」は2025年06月30日をもちましてサービスを終了いたしました。 FC2WEB http://www.fc2web.com GOOSIDE http://www.gooside.com k-free.net http://www.k-free.net Easter http://www.easter.ne.jp 55 STREET http://www.55street.net ZERO_CITY.com http://www.zero-city.com OJIJI.NET http://www.ojiji.net K-Server http://www.k-server.org Zero-yen.com http://www.zero-yen.com KTNET http://www.kt.fc2.com Finito http://www.fi

    incep
    incep 2012/11/20
  • IteratorはIterableではない

    今回はJavaのトリビアです。 JavaSE5.0からfor-each構文が使えるようになりました。 List<String> list; for (String str : list) { // ... } 上記のようなコードになるのですが、for-eachでループを書くには対象となるコレクションが java.lang.Iterableを実装している必要があります。 java.util.ListインターフェースはIterableインターフェースのサブインターフェースとして 定義されていますから、Listの実装は全てfor-eachでループさせることができます。 このIterableインターフェースですが、定義されているメソッドは Iterator iterator() というものだけです。つまり、Iterableであるということはjava.util.Iteratorを返すことが出来るとい

    incep
    incep 2011/05/31
  • Perl におけるオブジェクト指向 : torus solutions!

    Perl のオブジェクト指向プログラミングは、 JavaC++ のようなクラスベースではありません。 また、JavaScript のようなプロトタイプベースでもありません。 なので、ほかの言語になれている人が Perl でオブジェクト指向プログラミングをやろうとすると、 いろいろと違和感を覚えてしまうと思うので、 その変わったところをまとめてみます。 bless とオブジェクト Perl のオブジェクトを作るときは、 まず組み込みのデータ型から適当なものを選びます。 普通はハッシュを使うことが多いと思いますが、 配列やクロージャ(無名サブルーチン)もオブジェクトに出来ます。 ハッシュを使ってオブジェクトを作るには、 まず普通にハッシュを作って: my %self = (foo => 1, bar => 2); 次のそのリファレンスをクラス名に「bless」します: my $objec

  • Lesson: Object-Oriented Programming Concepts (The Java™ Tutorials > Learning the Java Language)

    The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Dev.java for updated tutorials taking advantage of the latest releases. See Java Language Changes for a summary of updated language features in Java SE 9 and subsequent releases. See JDK Rel

    incep
    incep 2008/02/10
  • gan2 の Ruby 勉強日記

    ふいに Chrome の JS 処理系をコマンドラインから実行したくなったので入れてみることにした。 (Chrome のコンソールがあるからいらないといえばいらないのだけど…。) v8 のビルドには SCons というビルドツールが必要らしいのでそれを入れる必要がある。 また、SCons のインストールには Python が必要。 まず Python から たぶん OSX 10.7.4 にはデフォルトで python が入っているので、新たに入れ直す必要はない。 $ python --version Python 2.7.1 次に SCons SCons のソースは以下から取ってくる。 scons-2.1.0.tar.gz 作業ディレクトリ(ここでは ~/src)に持ってきてセットアップする。 $ mv ~/Downloads/scons-2.1.0.tar.gz ~/src $ cd ~

    gan2 の Ruby 勉強日記
    incep
    incep 2008/02/09