スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
-- : -- : -- | スポンサー広告 | page top↑

EclipseによるhashCode()およびequals()の生成

equals()メソッドの実装は思うほど簡単ではないと前回の記事「Javaによるequals()メソッドの実装」で書きました。そして、Javaの統合開発環境Eclipseでequals()メソッドを生成できることに触れました。また、そこでは触れませんでしたが、hashCode()メソッドもEclipseによって簡単に生成することができます。

そこで、今回はEclipseでhashCode()とequals()メソッドを生成する方法を説明します。例として複素数クラスComplexを用います。

続きを読む
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

00 : 00 : 00 | プログラミング-Java | トラックバック(0) | コメント(0) | page top↑

Javaにおけるequals()メソッドの実装

以前作成したJavaの複素数クラスComplexを題材として、equals()メソッドの実装について論じます。

下のプログラムは典型的な?誤りの例です。一見正しそうに見えるかもしれませんが、このプログラムには問題があります。

誤った例

public boolean equals(Complex c) {
	if (re == c.re && im == c.im)
		return true;
	else
		return false;
}
続きを読む

テーマ:プログラミング - ジャンル:コンピュータ - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

00 : 00 : 00 | プログラミング-Java | トラックバック(0) | コメント(0) | page top↑

演算子のオーバーロードを使用した複素数クラスComplex(C#による実装)

Javaで書いた複素数クラスComplexは四則演算をメソッドによって行うため、これを利用したプログラムのソースコードが読みづらくなる問題があります。

(例)

Complex c1 = new Complex(1, 2);
Complex c2 = new Complex(3, 4);
Complex c3 = new Complex(5, 6);
Complex c4 = c3.mul(c1.add(c2));

これをもっと直感的に次のように書くことはできないのでしょうか?

(省略)
Complex c4 = (c1+c2)*c3;

残念ながら、Javaでは不可能です。しかし、C#やC++では演算子をオーバーロードすることにより、これが実現可能です!ここでは、Javaにより近い言語仕様を持つC#で実装してみました。

続きを読む

テーマ:プログラミング - ジャンル:コンピュータ - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

00 : 00 : 00 | プログラミング-C# | トラックバック(0) | コメント(0) | page top↑

不変クラスとして設計した複素数クラスComplex(Javaによる実装)

Javaで複素数(complex number)クラスComplexを作ってみました。

メソッド

  • Complex(double re, double im) /* 引数に実部(real part)と虚部(imaginary part)の値を取るコンストラクタです。 */
  • re(): double /* 実部の値を返すアクセサ(accessor)です。 */
  • im(): double /* 虚部の値を返すアクセサです。 */
  • add(Complex c): Complex /* 引数に取った複素数との和を計算して、その値を保持するインスタンスを返します。 */
  • sub(Complex c): Complex /* 引数に取った複素数との差を計算して、その結果を保持するインスタンスを返します。 */
  • mul(Complex c): Complex /* 引数に取った複素数との積を計算して、その結果を保持するインスタンスを返します。 */
  • div(Complex c): Complex /* 引数に取った複素数との商を計算して、その結果を保持するインスタンスを返します。 */
  • Con(Complex c): Complex /* 引数に取った複素数の複素共役(complex conjugate)を計算して、その結果を保持するインスタンスを返します。 */
  • abs(): double /* 絶対値(absolute value)を計算して、その値を返します。 */
  • arg(): double /* 偏角(argument)を計算して、その値を返します。 */
  • toString(): String /* 複素数を表す文字列を(a+bi)の形式で返します。 */
続きを読む

テーマ:プログラミング - ジャンル:コンピュータ - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

22 : 10 : 19 | プログラミング-Java | トラックバック(0) | コメント(6) | page top↑

正確な値が要求される計算にfloat,double型は使えない!

floatやdoubleといった型はコンピュータの中では2進数の浮動小数点で表現されています。そのため、0.1のようにどうしても2のべき乗では表せない(無限級数になってしまい、桁数が無限に必要)数値が多く存在します。

 0.1   0.2   0.4   0.8   0.6   0.2
x  2  x  2  x  2  x  2  x  2  x  2
――  ――  ――  ――  ――  ――
 0.2   0.4   0.8   1.6   1.2   0.4

10進: 0.1 ⇔   2進: 0.00011…

そのため、このような数値を用いて計算を行うと誤差が発生します。次の例はEffective Javaから借用したものです。

System.out.println(1.00-9*.10);
続きを読む

テーマ:プログラミング - ジャンル:コンピュータ - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

00 : 33 : 14 | プログラミング-Java | トラックバック(0) | コメント(0) | page top↑

Javaでも起こりうるメモリリーク

Effective Java プログラミング言語ガイド」を読んでいたら、以前のエントリ「Javaで学ぶデータ構造入門01-スタック(2/3)-ジェネリクスの実装」で詳解したスタックのプログラムにはメモリリークの可能性があることに気付きました。

Javaではガベージ・コレクション(GC)が行われるため、メモリ管理をあまり意識することなくプログラムを書くことができますが、そこに大きな罠がありました。

続きを読む

テーマ:プログラミング - ジャンル:コンピュータ - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

13 : 46 : 13 | プログラミング-Java | トラックバック(0) | コメント(0) | page top↑

待ち行列のM/M/1モデルにおける平均滞在時間Wwの導出

※ひとつ前のエントリ「待ち行列のM/M/1モデルにおける平均滞在数Lwの導出」の続きになります。
つまり、平均滞在数Lw=ρ/(1-ρ)であることが既にわかっているものとして話が進みます。
続きを読む

テーマ:算数・数学の学習 - ジャンル:学校・教育 - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

18 : 47 : 20 | 数学-トラヒック理論 | トラックバック(0) | コメント(0) | page top↑

待ち行列のM/M/1モデルにおける平均滞在数Lwの導出

M/M/1の待ち行列内にj個の呼が存在する確率をPjとするとき、次のような状態遷移図を描くことができる。
   M/M/1モデルの状態遷移図
続きを読む

テーマ:算数・数学の学習 - ジャンル:学校・教育 - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

22 : 04 : 16 | 数学-トラヒック理論 | トラックバック(0) | コメント(0) | page top↑

夏休みの予定(3) 詳解TCP/IP〈Vol.2〉実装

Java、C言語、各種アルゴリズム、Linuxプログラミング、TCP/IPと基本は一通り学んだので、今年の夏は「名著」と呼ばれる本の中でも読み応えのあるものを何か読んでみようと思っていました。

書店やAmazonで探したところ、「詳解TCP/IP〈Vol.2〉実装」が面白そうだったので買ってきました。値段もページ数(1000ページ)も過去最高です!

詳解TCP/IP〈Vol.2〉実装
詳解TCP/IP〈Vol.2〉実装Gary R. Wright W.Richard Stevens 徳田 英幸
ピアソンエデュケーション 2002-12
売り上げランキング : 149378
おすすめ平均star


Amazonで詳しく見る
by G-Tools
続きを読む

テーマ:ネットワーク - ジャンル:コンピュータ - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

00 : 06 : 39 | ネットワーク | トラックバック(0) | コメント(0) | page top↑

夏休みの予定(2) 英語学習(TOEIC600点)

「入るのは難しいけど出るのは簡単」な日本の大学ですが、英語はその象徴とも言えると思います。入学試験の難しさはなんだったんだろうと思えるほど大学の英語の授業はぬるいものです。そもそも、英語より第二外国語の授業数の方が多いのは何なんでしょうか?

そんなわけで、よほど意識して自主的に英語学習をしない限り、6年間かけて培ってきた英語力は大学受験を最後に急降下してしまいます。わたしも例外でなく、最近明らかな英語力の衰えを感じています。とはいっても、塾講師や家庭教師として英語を教えるに十分な英語力は維持できているようですが、このままでは英語論文の読み書きに苦労しそうです。

そこで、この夏はTOEIC600点を目標に英語を学習します。しかし、TOEICのスコアを上げるのが目的ではなく、あくまで英語の学習が目的ですので、目先のスコアアップにこだわらず、長い目で見て英語力を伸ばしたいと思います。
続きを読む

テーマ:大学生日記 - ジャンル:日記 - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

15 : 37 : 18 | 雑記 | トラックバック(0) | コメント(0) | page top↑

夏休みの予定(1) テクニカルエンジニア(ネットワーク)の勉強

春はCCNA試験を受験したので情報処理技術者試験は受験しませんでしたが、秋はテクニカルエンジニア(ネットワーク)に挑戦します。
続きを読む

テーマ:大学生日記 - ジャンル:日記 - ソーシャルブックマーク: この記事をクリップ! Yahoo!ブックマークに登録

14 : 32 : 11 | 資格-情報処理技術者 | トラックバック(0) | コメント(0) | page top↑
| ホーム |

プロフィール

TBVector

Author:TBVector

プロフィール

メールフォーム

記事検索

Google

最近の記事

人気の記事

過去の記事

カテゴリー

タグランキング

リンク

最近のコメント

最近のトラックバック

アクセスカウンタ

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。