2014年3月24日月曜日

Java ForEach文


Java5.0以降追加されたForEach文というものがあります。
恥ずかしい話ですが最近まで知りませんでした。ので忘れないうちにメモ...

用途としては、配列の中身を順に1つずつ取り出して扱いたいときに使います。
式は以下のとおり。

ForEach文の式
===============================================
for(取り出した値を入れる型と変数名 : 配列名) {
  処理
}
===============================================

For文はセミコロンを使いますが、こちらはコロンですね。
つい癖で間違えそうです。


お気づきかとは思いますが、
「配列の中身を順に1つずつ取り出して扱う」という処理自体は、For文でも書けます。\

しかし、ForEachを使うと以下のようなメリットがあります。

====================================================
*コードが短く済む
*読みやすい
*配列の長さを意識する必要がない
//長さを指定し使用すると参照できずに例外となる場合も
//(大抵の場合、lengthを使うとは思いますが。)
====================================================

へえ~なるほど。


実際にFor文とForEach文で同じ処理を書き比べてみます。

【処理】
*listという名前の文字列を入れた配列があり、
その中の値を順にコンソール上に表示させる。


まずはFor文
====================================================

String str = "";
String[] list = {"a","b","c"}; //String型の配列list

for(int i ; i < list.length() ; i++ ){
str = list[i];
System.out.println(str);
}

【実行結果】
a
b
c
====================================================

一般的であろう、配列の長さをlength()によって求め、
その回数分For文で回す~という書き方をしました。
(多分あってる)



そしてForEach文だとこうなります。
====================================================

String[] list = {"a","b","c"};

for(String str : list) {
  System.out.println(str);
}

【実行結果】
a
b
c
====================================================


一目瞭然ですね。ForEach文のほうが明らかに短いですし、読みやすいです。

いずれ速度を測って追記します。

2014年3月18日火曜日

astahをつかったシーケンス図の作成Tips集

astahをつかったシーケンス図の作成Tips集 

随時追加していきます。

◆作成した図をコピーしたい
コピーペーストは製品版のみ対応なのですが、以下の方法でコピーできます。
ライフラインを含む項目を選択し、コピーペーストをすること。ただしプロジェクト間だけです。
(複数のAstahを立ち上げてその間でコピーペーストは不可。)

◆名前の後につく括弧()を非表示にしたい
右下に表示されているプロパティのベースタブからメッセージパラメタの表示(初期設定)からチェックを外してメッセージの作成を行って下さい。
すでに作成された名前からは()がなくなりませんが、チェックを外した後に作成したものは名前から()がなくなります。
再度括弧を付ける場合には、チェックを付けてから作成して下さい。
14.03.24追記
→すでに()が付いているものもメッセージを右クリックし、メニューからメッセージパラメタの表示のチェックを外すことで()を外せます。
ついていないものに付けたいときは同じ手順でチェックを付ければOK。

◆いちいちライフライン作成するのが面倒
構造ツリーからドラッグアンドドロップでライフラインが自動的に作成されます

◆間違ってクリックした時にメッセージを作成する赤い矢印が表示されて困る
赤い矢印が出てきてしまったら右クリックすると消えます。

◆リプライメッセージの作成を自動化したい
シーケンス図作成画面のツールバーにRepryメッセージ自動生成モードを選択すると、
メッセージを作成した際にリプライメッセージも作成されるようになります。

◆変数の代入はどう表すか
プロパティの名前項目に代入する値を記入し、返り値変数項目に変数を記入するとA=1のようなメッセージが生成できます。

astah公式の解説ページ
UML初学者向け チュートリアル
http://astah.change-vision.com/ja/tutorial/tutorial-community.html

astah無償版のダウンロードは以下から
astah*Community
http://astah.change-vision.com/ja/product/astah-community.html

IT専科による解説ページ※とてもわかりやすいです
シーケンス図(Sequence Diagram)
http://www.itsenka.com/contents/development/uml/sequence.html

2014年3月7日金曜日

SheeshaBar横濱

先週の金曜日横浜のシーシャバーに行ってきました。
お店の名前は、「SheeshaBar横濱」
横浜駅西口を出て相鉄線改札前の交番を少し先に行ったところにあるビルの三階にあります。
お店は広すぎず、バーカウンターとテーブル席5つといったところ。内装は黒が基調でいい雰囲気。
ただ、暗くて写真はうまく撮れませんでした。

お酒(800円)とシーシャ(1000円)を注文。

先にお酒とナッツが出てきました。
ナッツはチャージ代500円に含まれているのか、アルコールに含まれているのかは不明ですが、中々の量です。
お酒は、キャプテンモルガンを注文したのですが、バニラの香りがとても良く大変気に入りました。コーラで割るのが一般的だそうですが、ロックやソーダ割りの方が美味しいと思います。私はソーダ割りをいただきました。バニラの香りはタバコが吸いたくなります。

10分ほどすると、シーシャをもってきてくれました。フレーバーはアルファーヘルのグレープを選びました。おもにアルファーヘルとナハラを取り扱っているようです。メニューにブランドは載ってないので店員さんに聞くと答えてもらえます。

パイプはヤヒアラージパイプで、クレイトップはボルテックスやファンネルなどの変わったものではなく普通のもの。クレイトップの上にはアルミホイルが引いてありました。下北沢シーシャと同じようなスタイルです。
結構煙がでるようにセッティングしてくれます。(故に焦げやすくはあります。)

炭の交換は声をかけないといけないので、ちょっと面倒。テーブル席に座りましたが、カウンターに座れば声もかけやすかったかもしれません。
いつも、炭をこまめにかえてくれるカフェに行くので、ちょっと残念だなーと思いましたが、お酒を楽しむのがメインなお店なのかもしれません。

---
会社から近く、お酒が豊富で、雰囲気も良いし、シーシャ吸うにしては高いけどまた行くかも。
今度行く時はバーカウンターに座ります。