タグ

codingとoopに関するcu39のブックマーク (67)

  • Intellij IDEAでPlant UMLを使えるようにする。

    はじめにWEB+DB PRESS Vol.82 の「Web APIデザインの鉄則」特集を読んで、Plant UMLというツールを知ったのですが、さっそくIntellij IDEAで使えたらいいなぁと思って、使えるようになったので、その設定方法を書いておこうかと思います。といっても、プラグインをインストール+αぐらいですが、、、 設定方法いつものIntellij IDEAにPluginをインストール画面(設定画面(⌘ + ,)->Pluginを選択->Browse repositoriesをクリック)から、”plant”で検索すると下記のような検索結果がでますが、「PlantUML integration」をインストールする。 これだけで、とりあえず、test.pumlファイルを作ってみました(New ->UML State)。するとサンプルコードが書かれたファイルが作成されます。 コードが

  • Open-source tool that uses simple textual descriptions to draw beautiful UML diagrams.

    🚀 Getting Started PlantUML is a highly versatile tool that facilitates the rapid and straightforward creation of a wide array of diagrams. Utilizing a simple and intuitive language, users can effortlessly draft various types of diagrams. For a detailed exploration of the language's capabilities and syntax, please refer to the PlantUML Language Reference Guide. If you are new to PlantUML, we recom

    Open-source tool that uses simple textual descriptions to draw beautiful UML diagrams.
  • PlantUML の使い方 | プログラマーズ雑記帳

    テキストから UML を生成する PlantUML についての解説記事を書いてみました。 PlantUML の使い方 (今回) シーケンス図 クラス図 オブジェクト図 パッケージ図 ユースケース図 アクティビティ図 状態遷移(ステートマシン)図 コンポーネント図 配置図 skinparam PlantUML 実行用のバッチファイル 今回は PlantUML の使い方の説明です。 PlantUML とは インストール 日語 コマンドライン Doxygen との連携 Doxygen 連携用スクリプト その他のツールとの連携 オンラインデモ PlantUML とは 最近、プログラムの設計書などで UML を使うのが浸透してきていますが、 この UML を書くのはわりと面倒です。 CASE ツール, Doxygen などでは、クラス図を自動生成してくれますが、 ユースケース図やシーケンス図は自分

  • Design Principles Behind Smalltalk

    Daniel H. H. Ingalls Learning Research Group Xerox Palo Alto Research Center BYTE Magazine, August 1981. (c) by The McGraw-Hill Companies, Inc., NY. Copied from http://users.ipa.net/~dwighth/smalltalk/byte_aug81/design_principles_behind_smalltalk.html Scanned in and converted to HTML (with recreated graphics) by Dwight Hughes. The purpose of the Smalltalk project is to provide computer support for

  • 紹介マニアどらふと版: Python の __new__ や __init__ はコンストラクタではない

    概要 結構 Python の「__new__」や「__init__」をコンストラクタと記述する人がいるが、厳密にはコンストラクタではない。 コンストラクタの定義 コンストラクタの定義は「Constructor (object-oriented programming) - Wikipedia, the free encyclopedia」や「コンストラクタ - Wikipedia」を見るのが良いかもしれない。 コンストラクタの定義は、厳密には以下だと思われる。 オブジェクトを生成する またオブジェクトの生成とは以下を示す。 allocation(メモリ割り当て) initialization(初期化) 「コンストラクタ」はオブジェクト生成のために呼ばれる物の事を指すので、全ての最初に呼ばれる物を指す。 「__new__」と「__init__」がコンストラクタでないことの証明 以下は「__

  • Class Hierarchies? Don't Do That!

    In theory, JavaScript does not have classes. In practice, the following snippet of code is widely considered to be an example of a “class” in JavaScript: function Account () { this._currentBalance = 0; } Account.prototype.balance = function () { return this._currentBalance; } Account.prototype.deposit = function (howMuch) { this._currentBalance = this._currentBalance + howMuch; return this; } // .

  • http://hmdt.jp/oop/oop.html

  • http://objectgraph.rubyforge.org/

    ObjectGraph: Ruby Class Hierarchy What the…? A simple script that generates a graph of the ruby class hierarchy. The script relies on GraphViz for generation of the PNG and HTML map files. Take a look at the basic Ruby class hierarchy here or with a different layout here. Both these examples were created with objectgraph.rb -neato -dot -skip-errno -font Tahoma. A few useful examples are: The

  • applyとcallの使い方を丁寧に説明してみる - あと味

    JavaScriptに、applyとcallというメソッドが用意されていますが、自分なりにapplyとcallの丁寧に説明をしてみようと思ってこのエントリーを書くなどをしてみます。 applyとcallは非常に似たメソッドなので、まずはcallから説明します。 callメソッドとは? callメソッドは以下のように呼び出します。 methodA.call(thisArg, [, arg1 [, arg2, ...]]); methodAには任意の関数(メソッド)を指定します。 callの引数は第一引数にmethodAのthisとしたいオブジェクトを指定して、第二引数以降はmethodAに渡したい引数があれば、カンマ区切りでそれぞれ指定します。 callメソッドは、すべての関数が共通して持っているメソッドです。すべての関数はFunctionクラスのオブジェクトで、callはFunction.

    applyとcallの使い方を丁寧に説明してみる - あと味
  • Understanding JavaScript Function Invocation and "this"

    Over the years, I've seen a lot of confusion about JavaScript function invocation. In particular, a lot of people have complained that the semantics of this in function invocations is confusing. In my opinion, a lot of this confusion is cleared up by understanding the core function invocation primitive, and then looking at all other ways of invoking a function as sugar on top of that primitive. In

  • Rails、あんたなんか嫌いよ - Rails での OO 設計について - tomykaira makes love with codes

    2013-06-25 Rails、あんたなんか嫌いよ - Rails での OO 設計について ruby rails 最近はずっと Rails 書いてるんですが、書けば書くほど嫌いになってくるんです。 倦怠期的なやつなんですが、 Rails さんの悪いところばっかり見えてきて、もう一緒にいたくないんです。 でも別れるほどじゃないし… という愚痴にみせかけた Rails での設計についての議論です。 長いけどコードは一切出てこないので通勤中にでもよんでください。 注意 一部にはげしい言葉遣いがでてくるので、読んで不快になるかもしれません。 不快になったとしても責任は負いかねます。 次のような方の期待に沿う結論はでません。残念でした。 Sinatra, Padrino の人 関数型の人 静的型付けの人 C の人 TL;DR Rails にだまされない。 自分の道を見定める。 欺瞞にみちた Ra

  • 私が愛するオブジェクト指向とそれを使わない理由 - takuto_hの日記

    この記事では、私がオブジェクト指向のどこを愛しどこを素晴らしいと感じていて、そのうえでなぜオブジェクト指向を使うことを避けているのかを書き留めておきます。関数型言語使いの方で、「オブジェクト指向の何がいいのかわからない」「オブジェクト指向難しすぎ・複雑すぎ」とおっしゃる方にぜひ読んでいただきたいと思っています。また、「オブジェクト指向言語完璧に理解したわ」と思っている方にも読んでいただきたく思います。 なお、ここでのオブジェクト指向の定義は、「各言語でオブジェクト指向と呼ばれているものすべて」とします。JavaScalaJavaScriptやSmalltalkやRubyやCommon LispやOCamlがオブジェクト指向と呼んでいるものすべての総称です。もっとまともな定義が知りたい方は以下の記事がおすすめです。 オブジェクト指向の概念の発明者は誰ですか?(改訂版) - Smallta

    私が愛するオブジェクト指向とそれを使わない理由 - takuto_hの日記
  • るびま

    『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、日 Ruby の会の有志による Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0058 号 バックナンバー Rubyist Magazine 0058 号 RubyKaigi 2018 直前特集号 Rubyist Magazine 0057 号 RubyKaigi 2017 直前特集号 Rubyist Magazine 0056 号 Rubyist Magazine 0055 号 Rubyist Magazine 0054 号 東京 Ruby 会議 11 直

    cu39
    cu39 2013/05/26
    forwardable と delegate
  • Rubyのmoduleをmix-inする際のincludeとextendの違いをシンプルな例で理解する

    Rubyのclassにmoduleをmix-inする場合に、moduleをclassにincludeした場合とclassをmoduleでextendした場合で何が違うのか? よく判らなくなるのでシンプルな実例でまとめます。 「モジュールがクラスメソッドではなく、インスタンスメソッドを定義しているとき、これらのインスタンスメソッドは、ほかのクラスにミックスインできる」(「プログラミング言語Ruby」261ページ)とあります。そして「モジュールをミックスインするための通常の方法は、Module.includeメソッドだが、Object.extendを使う方法もある」(同262ページ)となっています。includeとextendで何が違うの? となり、時どき理解の足りない書き方をしてNoMethodError: undefined method...のような例外をだしてしまうことがあります。そこ

  • QA@IT サービス終了のお知らせ - @IT

    平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識

    QA@IT サービス終了のお知らせ - @IT
  • 基礎からのオブジェクト指向---目次

    オブジェクト 1 英文法で,目的語。 2 対象。客観。 指向 (名)スル 1 ある目的を目指して向かうこと。志向。「医を する」 2 ある特定の方向を指定すること。ある方向に向けること (出典:三省堂「大辞林」) この2つの単語を組み合わせた「オブジェクト指向」は,今やあらゆるIT関連製品や技術に浸透している。プログラミング言語しかり,OSしかり,アプリケーションの連携技術しかり,である。オブジェクト指向を理解し,これらの製品を使いこなすことは,もはや必須のスキルと言ってよい。 ところが,これだけオブジェクト指向が広まっているにも関わらず,オブジェクト指向そのものに対する理解が進んでいるとは言えない。依然として「オブジェクト指向は難しい」,「とっつきにくい」という印象を持つITエンジニアは 多い。 オブジェクト指向を身に付けるためには,まずその根的な考え方を理解する必要がある。特集では

    基礎からのオブジェクト指向---目次
  • Ruby Best Practices- Issue #5: Testing Anti-patterns; Testing Private Methods

  • RSpecでprivateメソッドをテストする

    Object#send(send)ならメソッドの呼び出し制限に関わらずメソッドを呼び出すことが可能なので、privateメソッドもテスト可能。 確か、1.9以降はメソッド呼び出し制限がObject#sendにも影響するとどこかで見た記憶があるのだけど結局そうはなっていないみたい。 1.9.1、1.8.7で確認済み。 ちなみにオマケ。 Pythonはメソッド名の前にアンダースコアを2つけるとprivateなメソッドになるのだけれど、実際のところ別名でメソッドを定義してそちらを呼び出してるっぽい。別名で定義された方はprivateではないので、そちらを呼び出してテストすることが可能。 他にもJavaだったらsetAccessible(True)を実行すればpublicなメソッドに変更されるのでテスト可能。と聞いただけで確認はしていない。

    cu39
    cu39 2012/09/20
    instance.send(:method_name, arg)
  • irbで調べるObject, Module, Classの関係 - akimatter

    RubyのObject, Module, Classの関係と特異メソッドとインスタンスメソッドの話でメンバーを混乱に陥れたので補足しておきます。 継承関係 まずは、irbでクラスの継承関係を調べてみましょう。 Class.superclass #=> Module Module.superclass #=> Object Object.superclass #=> nil ということなので、 Class < Module < Objectという継承関係が成り立っていることが確認できます。ここだけ見ると、「ClassはModuleの派生クラスである」と言えます。実際、 Class < Module #=> true ですし。 インスタンスの生成関係 Rubyではすべてがオブジェクト(=インスタンス)ですので、ObjectとかClassもインスタンスとして扱えるはずです。こんどはClass,

    irbで調べるObject, Module, Classの関係 - akimatter
  • Rubyのトップレベルのメソッドの不思議 : As Sloth As Possible

    トップレベル(モジュールやクラスの外)でメソッドを定義するとどうなるでしょうか??トップレベルでは、メソッドを定義するとデフォルトで private なメソッドになるので注意です。 01.#!/usr/bin/ruby 02. 03.p self.class # Object 04.p self # main 05. 06.cmethod = self.class.private_methods 07.imethod = self.private_methods 08. 09.def bar 10. puts "bar method" 11.end 12. 13.p self.class.private_methods - cmethod # ["bar"] 14.p self.private_methods - imethod # ["bar"] 見ての通りですが、なぜかインスタンスメソ

    Rubyのトップレベルのメソッドの不思議 : As Sloth As Possible