タグ

javaに関するyowanoのブックマーク (34)

  • ボックス化 - Wikipedia

    ボックス化(boxing)[1]とは、プログラミング言語において値型をオブジェクト型(参照型)に変換すること。逆に、ボックス化されたオブジェクトを値型に戻すことをボックス化解除(unboxing)[2]と呼ぶ。 Javaや.NET Frameworkなどの環境においては、値型(Javaではプリミティブ型[3]がこれに相当する)と参照型という根的に異なる二種類の型が存在する。参照型のインスタンスはヒープ上の独立した領域に確保される。値型は文脈によって確保される場所は異なるものの、いずれにせよメモリ上に連続的に確保される(例えば、ローカル変数として宣言された場合はスタック上に確保され、参照型のメンバとして宣言された場合は参照型の一部として確保される)。 このように値型と参照型とは根的に性質の異なるものであるが、さまざまな理由により、値型を参照型に型変換して運用することが必要となる場合がある

    yowano
    yowano 2014/03/08
    値型を参照型に変更すること。JavaやC#等で考えられる概念。ボックス化においては、ヒープ上に新しく領域を確保し、そこに値型のデータをコピーする操作が生じるため、単純な型変換よりコストが掛かる。
  • Doxygen+Graphvizでクラス図を自動生成する - 毛のはえたようなもの

    卒論生成たけなわの皆さんお疲れ様です。終わった皆さんお疲れ様です。 卒論ページを埋めるためにクラス図を生成する必要がありましたので、メモです。 暇になったら加筆します。 クラス図とかソースコードの依存関係の図を自動生成したい ソースコードが先にあってUMLを作るためのツールは探すと有料がほとんど。 でもDoxygenとGraphvizを組み合わせると無料でできるらしい。 というわけで用意するものはDoxygenとGraphvizとソースコードです。C++、C、Java、Objective-C、Python、IDL、 PHP、C#、Dに対応しているそうです。 まずGraphvizとDoxygenを下記からインストールします。 Graphviz | Graphviz - Graph Visualization Software Doxygen すべてデフォルトでOK Doxygenの設定 楽天

    Doxygen+Graphvizでクラス図を自動生成する - 毛のはえたようなもの
    yowano
    yowano 2013/12/18
    DoxygenからGraphvizを使用して、クラス図・コラボレーション図を自動生成する場合の設定の手順。
  • 事例で学ぶデザインパターン 第 4 回 (Factory Method Pattern)

    事例で学ぶデザインパターン 第4回 Factory Method パターン ~オブジェクト生成の柔軟性を導入する~ (株)オージス総研 福田 直樹 今回は、生成に関するデザインパターンを取り上げます。 通常、何らかのオブジェクト利用する際には、コンストラクタを呼び出してオブジェクトを生成し、そのオブジェクトを利用します。しかし、その際には利用する側では利用したい具象クラスを指定する必要があり、クラス間の結合度が強くなってしまいます。それよりも柔軟性のある生成の仕組みを提供するFactory Methodパターンを取り上げます。 ※雑誌『Java WORLD』 2006 年 7 月号に掲載した記事のオリジナル原稿を Java WORLD 編集部の了解を得て掲載しています。 前回のおさらいと今回のお題 前回は、重複した実装を洗練、整理するデザインパターンとして Template Method

    yowano
    yowano 2013/12/02
    シンプルなファクトリクラスと、FactoryMethodの解説。このデザインパターンがどのような問題点を解決するのか、具体例を挙げながら説明されているので、とても分かりやすい。勿論C++でも実装可能。
  • セマンティクスとは : JavaA2Z

    プログラムが持つ「意味」。 通常は「シンタックス」と対にして使用し、「プログラムはシンタックス上~だが、セマンティクスとしては~だ」といった使い方をする。 プログラムは「言語」であるため、様々な機能を持つ予約語や記号の組み合わせによって作られる。 これらの予約語や記号の機能は「シンタックス」、つまり言語仕様上の機能でしかない。 だが、こういった単なる機能の組み合わせによって、プログラマーは「意図」をプログラムの中に含めることができる。この「意図」がセマンティクスである。 たとえば、あるメソッドをサブクラスから呼んでもらいたい、という意図を表現したいとする。 コメントに書くこともできるが、できればプログラム上で表現すべきである。なぜなら、コメントには強制力はないが、プログラムによって表現することができれば言語仕様により強制力を持たせることができるからである。 この例なら、protectedメ

    yowano
    yowano 2013/11/05
    シンタックス = 言語仕様上の機能、文法。セマンティクス = プログラマの意図。シンタックスによって示唆することもできる。
  • 弱い参照 - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "弱い参照" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2011年10月) 弱い参照(英: weak reference、ウィークリファレンス)あるいは弱参照とは、参照先のオブジェクトをガベージコレクタから守ることのできない参照のことである。弱い参照からのみによって参照されるオブジェクトは到達不可能とみなされ、従っていつでも解放することができる。弱い参照は、通常の参照(強い参照、強参照)による諸問題を解決するために用いられる。PythonJavaをはじめとするガベージコレクタを実装したオブジェクト指向プログラミング言語の多くは、弱い参

    yowano
    yowano 2013/08/29
    弱参照からのみによって参照されるオブジェクトは、ガーベジコレクションによっていつでも解放される。循環参照の問題を解決できるほか、オブジェクトがさほど重要ではないということを示すことにも使える。
  • クラス設計に関するメモ

    経験的にこのようにした方がよいと思った点についての記録です。 仕事で大規模(2000クラス超)かつ製品寿命がながいパッケージソフトを作っていた関係で、 ちょっとした設計の間違いが、 あとあとで大変な苦労する羽目になったりすることを経験してきました。 このような規模が大きいアプリケーションを作ることはなかなかないかもしれませんが、 なにかの参考になれば、と思います。 継承する前に委譲を検討する Singleton パターンを使うときの注意 Template Method パターンを使うときの注意 クラス間の依存に関する注意 クラスの粒度 Singleton の問題を回避できるか? 継承する前に委譲を検討する 継承はスーパークラスの仕様をよく理解しておかないと、 バグを作りこみやすいので十分注意する必要があります。 メソッドのオーバーライドをするときも、 public void foo(){

    yowano
    yowano 2013/06/01
    継承以外にも委譲という選択肢があること、シングルトンはどういった問題が生じるかなど、経験談に基づいたアドバイス。
  • Javaプログラマが知るべき9のこと - @katzchang.contexts

    はじめに ソースコードは設計であり、コードの記述は品質に直結するのは言うまでもない。ちなみに、プログラマにとって特に重要なのは保守性だ。コードは書いた直後から保守対象となるからだ。コードは要求文書の範囲で動けばいいと思っている人がいれば今すぐ、ソースコードをコピペして100klに増えるプラグインがいつの間にかインストールされる呪いをかけてあげよう。幸い、ここを読んでいる人にはそんな人はいないだろうと思うけれども。 ということで、コードの品質を下げる要因、すなわちシステム全体の品質を下げる要因となり、かつ使われやすいアンチパターンを挙げ、対策を検討していくことにする。対象は以下: 出力パラメータ 処理状態返却 意味のある配列 無意味な初期化 多すぎるtry-catch 暗黙の順序 コンパイラ警告の無視 過剰なコメント e.printStackTrace() 出力パラメータ メソッドの引数にオ

    Javaプログラマが知るべき9のこと - @katzchang.contexts
  • 言語別ゲームプログラミング制作講座一覧 - ネットサービス研究室

    プログラミング言語別にゲームプログラミングについて解説しているサイトをまとめてみました。ジャンル別ゲームの作り方とアルゴリズムまとめもあわせてお読みください。 Java Javaゲーム作りますが何か? ガメラボ Javaゲームはじめました。 JavaRPGを作ろう! Javaによるゲーム解説 JavaScript JavaScriptゲームの作り方 ゲームの作り方 by BFF (^==^)ドリームキャストでJavaScript JavaScript でテトリスみたいなゲームを作ろう! C++ 0からのゲームプログラミング DirectXでゲームを作ってみよう ゲームプログラミング講座 ゲームプログラミングWiki マルペケつくろーどっとコム http://www5b.biglobe.ne.jp/~u-hei/ サラリーマンの俺が無料ソフトだけで3Dゲームを作るスレ まとめ ゲームつく

    yowano
    yowano 2013/04/29
    Java, JavaScript, C++, C#, C言語, D言語, HSP, Ruby, Python, Delphi, ActionScript、それぞれのネット上のゲーム講座のリンクまとめ。
  • 本格的なゲームを作りたいと考えてます。C/C++とDirectXだとjavaよりも本格的なゲームを作れると聞いたので、とりあえず今... - Yahoo!知恵袋

    格的なゲームを作りたいと考えてます。 C/C++とDirectXだとjavaよりも格的なゲームを作れると聞いたので、 とりあえず今はC言語を勉強しました。 格的なゲームを作りたいと考えてます。 C/C++とDirectXだとjavaよりも格的なゲームを作れると聞いたので、 とりあえず今はC言語を勉強しました。 しかし、javaのほうが比較的、ゲームを簡単に作れるというのも聞きました。 質問なんですが、 javaゲームを作ってから(javaゲームのアルゴリズムや作り方を勉強してから) C/C++とDirectXでゲームを作るほうが飲み込みが早いですか? それとも そのままC++とDirectX勉強して作ったほうが早いですか? (どっちみちjavaもC/C++も習得しようと思ってます。) 回答お願いします。

    本格的なゲームを作りたいと考えてます。C/C++とDirectXだとjavaよりも本格的なゲームを作れると聞いたので、とりあえず今... - Yahoo!知恵袋
  • オブジェクト指向言語では、なぜnewでインスタンスを生成するのでしょうか。C言語の構造体のように、newせずに「クラス名hoge;」を書... - Yahoo!知恵袋

    オブジェクト指向言語では、なぜnewでインスタンスを生成するのでしょうか。C言語の構造体のように、newせずに「クラス名 hoge;」 を書くだけで、インスタンス生成と初期化(newの処理)をしてくれればいいのに。 オブジェクト指向言語では、なぜnewでインスタンスを生成するのでしょうか。C言語の構造体のように、newせずに「クラス名 hoge;」 を書くだけで、インスタンス生成と初期化(newの処理)をしてくれればいいのに。 例えば、 Class Dog { 略 } としてDogを定義して、コードの中で Dog pochi; と書くだけで、pochiインスタンスを生成(コンストラクタの実行)をしてほしいのですが、なぜ pochi = new Doc() みたいに、別途書かなければいけないのでしょうか。

    オブジェクト指向言語では、なぜnewでインスタンスを生成するのでしょうか。C言語の構造体のように、newせずに「クラス名hoge;」を書... - Yahoo!知恵袋
    yowano
    yowano 2013/04/23
    newを使わなかった場合、同一スコープ内でしかそのオブジェクトを使えず、開放も逐次行われる。newを使った場合、メモリが動的に確保されるので、インスタンスが消失せず使い続けられる。ただし開放は自分で。
  • staticメソッドにするかどうかの判断 - BIGLOBEなんでも相談室

    yowano
    yowano 2013/04/21
    プログラム実行時、Java仮想マシンは、まずクラスをメモリにロードし、「クラスというオブジェクト」を作る。そして、その内容をコピーして「インスタンスというオブジェクト」を作る。どちらもオブジェクトだ。
  • フィールドごとに getter/setter を用意するな - ぐるぐる~

    未だにフィールドごとに getter/setter を用意しろって言う人がいてびっくりするわけですが。 フィールドごとに getter/setter を用意する人の言い分 そうやれって/Webページに書いてある フィールドに触れないと不便だろう それが OOP だ 言い分に対する反論 そうやるなってに書いてある 5章 オブジェクト指向エクササイズ 5.2.10 ルール9:Getter、Setter、プロパティを使用しないこと ThoughtWorksアンソロジー List<Book> getBooks() { return books; } これはクライアントに最大限の柔軟性を提供するが、さまざまな問題を生み出す. コレクションをそのまま返すと, その内容に依存している内部状態が知らない間に無効にされてしまうかもしれない. 略 代わりに, コレクション内の情報への, 限定された, 意味

    フィールドごとに getter/setter を用意するな - ぐるぐる~
  • クラスオブジェクトの配列を使うときの注意点 - ソフトウェアエンジニア現役続行

    int型の配列を使うときは以下のようにします。これは問題ないですね。 int[] array = new int[10]; // (1) しかし自分で定義したクラスのオブジェクトの配列を使う場合は、同じようにしてもうまくいきません。 class NewClass{ int a; int b; } public static void main(String[] args) { NewClass[] dim = new NewClass[3]; // (2) dim[0].a = 1; dim[0].b = 10; dim[1].a = 2; dim[1].b = 20; dim[2].a = 3; dim[2].b = 30; } (1)と同様に(2)と書いたのに、これを実行するとNull Pointer Exceptionが発生してしまいます。 調べたところ、(2)は、オブジェクトを入れ

    クラスオブジェクトの配列を使うときの注意点 - ソフトウェアエンジニア現役続行
    yowano
    yowano 2013/04/17
    newでインスタンスを入れるための配列を作ったあとに、次はfor文を利用しnewでインスタンスを生成、配列にインスタンスを格納と、一つずつやっていかなければならない
  • Javaから楽しく学ぶ!ゲームプログラミング専門学校

    Javaから楽しく学ぶ!ゲームプログラミング専門学校 Javaから楽しく学ぶ!ゲームプログラミング専門学校へようこそ!! 2021/5/30追記 最新のJava16に対応したKindleを作成しました。 サイトの内容を大幅に加筆修正した内容となっています。 サイトの内容は執筆してからかなりの年数が経過しているため、こちらをお読みいただけると幸いです。 【講義内容】 サイト内容概略 初めにお読みください 当サイトの活用方法 コンピュータゲーム全般 コンピュータゲーム歴史 プログラムを市販のゲーム機で動かすには プログラミング基礎 プログラミングとはいったい何か? プログラミング言語の種類 ゲームプログラミング概要 ゲームプログラミングに適している言語は? ゲームプログラミングがプログラミングの学習に適している理由 ゲームプログラミング最大の利点 ゲーム制作において挫折が多い理由 Ja

    Javaから楽しく学ぶ!ゲームプログラミング専門学校
  • 命名規約 【Okapi Project】

    要約 変数やメソッド、クラスの名前に統一された名前をつけることは非常に大事なことです。初めてそのソースを見た人でも何に使われている変数なのか、どのような処理を行っているクラスやメソッドがあるのかがすぐにわかるようになります。 目次 2.命名規約 2.1.パッケージ名 2.2.ファイル名 2.3.クラス名 2.4.テストクラス名 2.5.例外クラス名 2.6.インターフェース名 2.7.抽象クラス名 2.8.定数(static final) 2.9.メソッド名 2.10.変数名全般 2.11.名前の対称性 2.12.ループカウンタ 2.13.スコープが狭い変数 2.14.大文字と小文字 2.命名規約 命名規約の基準として、各環境での OS がファイル名などに認めない文字列などは利用せず、基的にはアルファベットのみで命名することとし、必要に応じて数字を利用することも認めます。命名においてはロ

  • HTML/CSS/PHP等のコーディングに、無料のNetBeansが快適過ぎる件

    私は結構エディタ難民で、HTML/CSS/PHP等をコーディングする際のエディタをWindowsMac含め色々試してきましたが、最近は NetBeans IDE に落ち着いています。 NetBeans IDE は厳密にはエディタではなく、WindowsMacLinux用の無料で利用できるIDE(統合開発環境)の一種です。 ちなみに、↓のキャラクターは NetBeans IDE 日語コミュニティの公式マスコットの「ねこび〜ん」です。 私はWordPressのテーマファイルを作成しているときに、PHPで独自のCMSを開発されている @kawagooch さんに勧められて使い始めたのですがとてもしっくりきたので、以後 HTML/CSS/PHP などWebサイトのコーディングには NetBeans IDE をメインで使っています。 私自身、NetBeans IDE を使うようになってからサ

    HTML/CSS/PHP等のコーディングに、無料のNetBeansが快適過ぎる件
    yowano
    yowano 2013/03/09
    UTF-8 のソースに対応できるように初期設定をする必要があるようなので、今度乗り換える時に参考にする。
  • Javaバイトコードの読み方 - プログラマーの脳みそ

    Javaのデバッグをしていて、ステップ実行中にステップインを繰り返したらソースコードのないところに行き当たったことがあるだろう。あるいはEclipseでF3キーでクラスやメソッド・フィールドの宣言元を辿っていってソースコードのないところに行き当たったことがあるだろう。 Eclipseの場合、"Class File Editor"というものが開く。そこにはJavaのバイトコードのニーモニックがズラズラと並んでいて、「これは読めないや、ワケが分からない」と投げ出してしまったりしていないだろうか。 怖がることはない。ちょっとコツを掴めばすぐに読めるようになる。 Class File Editorの開き方 自前のJavaクラスの場合、ビルドして出来上がったclassファイルを開く必要がある。"Package Explorer"だとclassファイルは隠されていて見えないのでWindow -> Sh

    Javaバイトコードの読み方 - プログラマーの脳みそ
  • Java変態文法最速マスター - プログラマーの脳みそ

    Java基礎文法最速マスター - いろいろ解析日記をリスペクト。 Javaの変態文法・技法一覧です。Javaの基礎をある程度知っている人はこれを読めばJavaの変態をマスターしてJavaを書くことができるようになっています。簡易リファレンスとしても利用できると思いますので、これは足りないと思うものがあれば教えてください。 1.基礎 エンクロージング型内部classの作成 外部classのインスタンスに紐付くインスタンスを生成します。外部クラスのインスタンス - 内部クラスのインスタンス間に、クラス - インスタンスのような関係を持たせることができます。 public class Outer { public class Inner { } } というようなクラスを作った場合、 Outer o = new Outer(); Inner i = o.new Inner(); となります。new

    Java変態文法最速マスター - プログラマーの脳みそ
  • Java基礎文法最速マスター - いろいろ解析日記

    Javaの文法一覧です。他の言語をある程度知っている人はこれを読めばJavaの基礎をマスターしてJavaを書くことができるようになっています。簡易リファレンスとしても利用できると思いますので、これは足りないと思うものがあれば教えてください。 1. 基礎 classの作成 プログラムはclassに記述します。たとえばSampleという名前のclassを作る場合、Sample.javaファイル内に次のように書きます。 public class Sample { } mainメソッドの作成 プログラムはclass内のmainメソッドの先頭から実行されます。mainメソッドは次のように書きます。 public class Sample { public static void main( String[] args ) { // 処理を書く } } System.out.printlnメソッド 文

    Java基礎文法最速マスター - いろいろ解析日記
  • コンストラクタからメソッドを呼んではいけない? - OKWAVE

    Javaの鉄則」というを読み返したら、一つ該当しそうなものが載ってました。(このに載っている最後の鉄則です) 継承を使った場合のオブジェクトの初期化に起因する副作用のようです。 正直「こんなの見たことねーよ!」と思いましたが(の中でも「この種のエラーは一般的ではないかもしれない」と書いてありました)、もし起こったら原因が分からず悩むでしょう。 上手く説明できる気がしないので、を紹介するにとどめます。結構実践的に鉄則を学べるので良いだと思います。 コンストラクタから呼ぶのはほとんどがアクセサメソッドでしたが、ちょっと複雑なものを呼ぶときは気をつけないといかんなと思いました。

    コンストラクタからメソッドを呼んではいけない? - OKWAVE
    yowano
    yowano 2013/03/06
    ちゃんと設計してあれば特に問題は起きないが、バグの元になる(特に集団開発では)ので出来る限りやめる。コンストラクタ内は、まだオブジェクトの状態が完全ではない(フィールドが初期化されていない等)ため。