スポンサーサイト

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

ちょっとモジュール指向について語りたかったけれど途中で面倒になった編。

あいやのオブジェクト指向



オブジェクト指向ってなんでしょう。
だれか分かる人教えてください。

------------------------------------------------
イベントが起きた時に発生するアクションAを持つモジュールクラス「Actionクラス」から
さらに派生してアクションAが起きた場合にファイルの破棄を行いたい。
その操作を持つモジュール「FileControlクラス」を作る時とかに [[ 18:11]]
-------------------------------------------------
オブジェクト指向ってモジュール指向なんですか?
うーん、どうなんだろ難しい。 [[ 18:28]]
-------------------------------------------------
その時にActionクラスはFileControlクラスのインスタンスをメンバレベル持たなければいけなくなる(必ずしもってわけじゃないけど)。
その[Action -> FileControl]な関係を「コンポジット」っていうんですよね?
よね? [[ 18:13]]
-------------------------------------------------
JavaScriptは「オブジェクト指向であってクラス指向でない」との声もあるし(僕もそう思う)、
オブジェクト指向 is 何。 [[ 18:29]]
-------------------------------------------------


うーん、記事は書いてみたもののオブジェクト指向が何物なのか…
実は私も掴めていません。

ってことでちょっと僕が考える
オブジェクト指向に則った「モジュール指向」について独白していきます。

まず設計段階から考えていきます。
このプロジェクトは「洗濯機」のプロジェクトです。

------------------
| 洗濯機クラス |
------------------

そして洗濯機には「洗濯する機能」があります。

------------------
| 洗濯機クラス |
------------------
| 洗濯() : void |
------------------

じゃあ洗濯するときには # テキストはここで途切れている。
スポンサーサイト

Oracle Certified Java Programmer I, Silver

Oracle社様にOracle Certified Java Programmer II Gold, SE 7.
の無料受験チケットを貰いました!!



・詳細
 2013年度の1月から3月末までの期間でのOCJP1, Silver合格点数上位20名に
にOCJP2, Gold SE 7の無料受験チケットを配布、というキャンペーンがありました。


 そしてなんと今回、ありがたいことに上位20名に入ることができたということで
チケットをいただくことができました!
Oracle社様に感謝。

合格点は95%でした。(敬ってくれても馬鹿にしてくれても罵ってくれても私喜びます!)

ということで記念兼記録として 僕の合格までの方法を
普段のプログラミング勉強方法と兼ねつつ書いていきます。


使った問題集。
Oracle試験対策 JavaプログラマSE 6問題集※僕はまずはJava6から勉強しました
オラクル認定資格教科書 Javaプログラマ Silver SE7 スピードマスター問題集


    まとめ
  1. Oracle Java Bronzeは飛ばしました

  2. 勉強期間: 2ヶ月

  3. 勉強時および取得時は専門学校生(基本的に時間がある)

  4. 勉強環境

  5. 実際の勉強方法: Javaを信仰する



    要点
  • Bronzeなどは「Javaに対して」の内容ではなく「言語全体」としての基本知識ではないか?(疑問形)

  • Gold以上は下位互換資格の取得が必須(おかねかかるばかにならない)

  • PCで勉強しました




参考URL
オラクル認定資格制度
サーティファイさん主催 Javaプログラミング能力認定試験






OracleBronzeは飛ばしました。


 まず言っておきたいこと、
私はOracle Java Bronzeは飛ばしました
 それを決めたことを担任の先生に話したら不憫なものを見る目で「え…Bronzeじゃなくて?」と言われました…。
いいもん! ちゃんと受かったもん!! ※先生はとてもいい方ですよ。


…気を取り直してと。 ここからはかなり個人的意見です
鵜呑みにしないようお願いします
私はBronzeの勉強を一切していないので偏見が入ります。(ちょろっと書店でBronzeの本を見た。)

Bronzeを受験しませんでした。それにも理由があります、
それはBronzeは基本的に社会では評価されないからです。

OracleJava資格には…実はBronzeの下にも1つあるのですが、
個人的に言わせてもらうとこれらは「Java入門者」向けとも言えますが、本質的には…
プログラミング入門者向けの勉強に最適である、そんな試験だと思っています。

 もちろん、否定的な意味ではありません!
しかし私のようにJavaにご恩のお返しをしたい
…もとい「Javaの」資格を取りたい方にはおすすめしません。

すみません、でもBronzeだって大好きですよ!! そのやさしさで皆を包んであげてください!






<>勉強期間<>


 私の勉強時間は…実は覚えていません。
資格のために勉強したんじゃないからね!! 楽しかったからね!!

 恩師によると「集中的にやってたのは2ヶ月」とのこと。
1日の勉強時間は 16:00から最低18:00最高20:00程度まででした。
[ 16:00 <= 18:00 <= learning <= 20:00 ]

2月末に取ったから…そうだ、学期後期始まりの1月からだったと思います。
よければ基準にでも。






勉強方法


 私の勉強方法です。

まず持ち物!!

  • PC(できればLinux、なければWindowsのプロンプトかCygwin入れる)

  • 自分の好きな問題集



では次にPCの環境です。(PCが勉強環境にない方、自由に環境を変えられない方申し訳ありません。)

  • Eclipseはありません。 他のIDEもありません。

  • え、Eclipse入ってる? Vim入れよう。

  • 試験対象のJDK及びJREを入れます(開発環境(コンパイラ)、実行環境)

  • LinuxターミナルもしくはWindowsプロンプト、Cygwinターミナルを(コンソール環境を)使います。



 もしコンソール環境がない、扱いになれていない…という場合は
この際になれてしまっていいと思います。
いやだっ!!という方はJCPadをおすすめします。

 …ちなみにSilverにはコンソールでのJavaの扱い方も勉強範囲です!!
ですのでできる限りコンソールになれて、当たり前になってください。


 しかしまあ、もっと大事なことがあります。
それは統合開発環境の入力補完から脱却しましょう!! ということです。
なんとこれによりそのクラスのメソッドやらインポートパスやら、記憶できてしまうのですよ!!


そして最後に呪文
まったく、Javaは最高だぜ!!






勉強方法


 Javaを信仰します。
はい、これではわからないと思いますので具体的に言いますと

  • 「よし、勉強をしよう」

  • ここを見る

  • Javaたんかわいすぎるどうしようああもうかわいいなあっこんなのぜったいかわいいよlっ!!!!!!!!!!

  • お気に入りのクラスを想像します

  • 「アリスたんかわいいようアリスたん!!! ArithmeticExceptionたんかわいいよう!! その人を惹き寄せる名前!!かわいい!!! ああもうっcatchしてprintStackTrace()して君の中身までみちゃうぞっ☆ ああごめん嘘だから…泣かないでよ、ごめんね…そんな、君を傷つけるような意味で言ったんじゃないんだ。本当はね、君が溢れ出しても僕がちゃんとcatchしてあげられるよう、頑張りたいなって意味で言ったんだ。 だから…泣かないで、君は笑顔の方が……かわいいから」


このような心持ちのことですね。


 まず、コンソール環境ではメモ帳やサクラさんは使えません
ですのでコンソール環境用テキストエディタであるVimかVimかVimかEmacsを使いましょう。
nanoという手もあります。


 次に具体的方法ですね。
まずわからないところがあったら答えを見ずに自分で考えます
答えがすぐ下に書いてあっても紙の切れ端等で隠しましょう。

ここが重要なところです。
暗記してはいけません、クラスの使い方や挙動が脊髄反射的に頭から出てくるようにしましょう。
あ、今可変長配列を固定化するためにList.unmodifiableList(List)使ってた?
 完全に無意識だったわー



これだけです!!
いえ…あと一つ、最後にこれです。

Javaを楽しみましょう!

 OJCP取得の動機は各々持っていることでしょう、
もしかしたら自分の意志ではないかもしれません。
でもどうせなら楽しんじゃいましょう!!

楽しみに一度気づいたが最後、あなたはJavaが好きになることでしょう。


勉強は自分のペースで、楽しみましょう。
勉強は楽しいものです!






以上です!!
OCJPを受ける方、頑張ってください!!




メモ: 現在の取得資格(時系列順)
・基本情報
・サーティファイさん、Java認定試験2級
・LPIC 101,102
・OCJP I, SE 7

Integer[]型(ラッパクラス配列)について

あ、Javaについて書くの初めてじゃん。びっくり。
僕がRPGのキャラクターならデフォルト装備はJavaです。
Javaが一番好きです。
Project Lambda以前だとラムダ使えなくて無名インスタンス使うことになるのも、
JavaFX以前だと(JavaFX使ったことないけど)GUIアプリケーションを作る場合コード量がえげつないことになるのも、
全て許容して「好き」だと言えます!

Javaちゃんまじ天使。
俺の心にフォーリンラブ…、愛して私の例外安全…Oh, Year...


本題
  1. ラッパクラス配列と基本型配列の非互換について
  2. ラッパクラス配列をnewで確保した場合

小話です。
当たり前のことを当たり前のように語るので、ソウルジェムの濁りに注意しつつ閲覧してください。
見てってね!


1. ラッパクラス配列と基本型配列の非互換について
Integer[] wNums = new Integer[2];
int[] pNums = wNums; // もちろんコンパイルエラー

int[] pNums = (int[])wNums;  // コンパイルエラー


関係ないですがもちろん
wNums[0] = new Integer(10);
int num = wNums[0];

は通ります、自動的にアンボクシングがかかってますので。
いいですよね、オートアンボクシング。
以上。

2.ラッパクラス配列をnewで確保した場合
上でもちょっと利用していますが、
Integer配列を確保した場合は各配列要素もnewで領域確保しなければいけないようです。
Integer[] wNums = new Integer[2];
wNums[0] = 10; // ぬるぽ

みんな大好きぬるぽさん、ことNullPointerExceptionが送出されます。
これだとオートボクシングが働いてないんですかね、不思議です。
もちろんこれだとオートボクシングが働きます。
Integer num = 10;

不思議ですねー。
配列オブジェクト化した時点で一般的なクラス配列オブジェクトと同じ解釈をされてしまうんでしょうか。


そしてそして、もちろん一々newするのは面倒ですので、あらかじめ領域を確保しておけばおっけーです。
Integer[] wNums = { 0, 0 };
wNums[0] = 10; // OK

これは0だった領域を10で上書きするという行為なので、問題ありません。

以上。

そして以上。


いえいえ、なんかこの関係性が面白くてついブログネタにしてしまったのですよ、ふふふふふ。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。