なずブログ

インフラSE、Java開発、リモートワークエンジニアな人のメモ帳

Javaでクラスという言葉の使い分け

f:id:nazuna_0124:20170326223448p:plain

ポリモーフィズムイベントハンドラという言葉が嫌いです。

いちいちそんな仰々しい名前付けんでよろしいとか思っちゃいます。


その一方でクラスにはどこで使ってもクラスなことに納得がいってません。

これこそ分けてほしいのに…


正直まとまってないですし、間違ってるところもあるはずなのですが、

ぐるぐる考え込んでしまうので吐き出しておくの回です。

ツッコミ大歓迎です。


というわけで、場面別のクラスの使い分けと簡単な説明。


クラスファイル

ファイル自体のことを指します。

クラス名=ファイル名なのは周知のとおり。


メインメソッド付きクラス

最初に覚えるおまじないが入っているクラスのこと。

これ

public static void Main(String[] args){

}

実行できるクラスともいいます。


モジュール化クラス

メソッドを名前管理しやすくするために作成されたクラス。

プロパティは持たないか、あってもgettersetterが存在しない。

こういうふうな使い方

class Calc{
    
    int add(int x, int y){
        return x + y;
    }
    
    int sub(int x , int y){
        return x-y;
    }   
}


クラス設計図

クラス型変数を作るための設計図、スペック表とかでもいい気がする。

タイヤキの金型>タイヤキの説明の時の金型の方。


考えると普通にこの説明は間違っている気しかしません。


炊飯器のスペック表(クラス設計図)

炊飯器(クラス型変数)

のが絶対いいと思う。


炊飯器のスペック表

  • メーカー:Panas○ic
  • 炊飯量:5合
  • 自動炊飯(メソッド)
  • 保温(メソッド)

こんなイメージ。


クラス型変数

クラス設計図を元にインタンス化したオブジェクト。

スペック表を元に炊飯器買ったのとおんなじ。


お米と水いれてボタン押すとご飯になる。

データと命令を一緒に持ってるのが特徴。


炊飯器使うと逆に焦がすことができない

このへんがカプセル化



ふむ。。。スッキリ!

でわ、おやすみなさーい!

職業訓練の授業70日目~Java:GUI、マウスクリックイベント、Canvasで画像表示~

f:id:nazuna_0124:20170301175105p:plain

なんだか急に難しいと感じてきてます。

相変わらず作りたいものに繋がるかが不明なので

それもちょっとストレスに。


作りたい料理はガトーショコラ、さばの味噌煮、チャーハンなのに

ずっと、キャベツの千切りと大根の桂剥き練習してる気分です。


EclipseNetbeansの2足のわらじもなかなか。

おかげで授業についていくだけになっちゃってます。


地味に愚痴りつつ本日のお題はマウスイベントです。

Javascriptなら楽

簡単なゲームのお題でした。

こんなかんじ

f:id:nazuna_0124:20170424211100g:plain


ランダムに画像が配置されて、クリックすると別の場所に移動というもの。

点数つけるとか、制限時間内のクリック回数とか付ければ

いくらかゲームっぽくなるかと思います。


この手のやつなら、画像は瞬間移動じゃなくて、普通に移動したくなりますが、

それやるにはスレッドが必要ぽいです。

習ってないのですよね…


相変わらず肝心なところが授業にない


さて、明日はタイピングゲームぽい何かがお題です。

Javascriptでつくったからもういいや←

paizaの問題を解答するための準備

f:id:nazuna_0124:20170319171727p:plain

ようやくpaizaに解答するための権利を手に入れました!


えと、登録できてなかったとかではなく、

標準入力がよくわかんなくて採点してもらえなかったのです。


思わずはまってしまって、結構遊んでしまいました。

わたしだとBランクの問題ができたりできなかったりです。


Tree構造と再起がわからないので完全にそのせいですね。


paizaの問題は基本的にアルゴリズムの問題です。

なのでJavaの練習にはなりません


ランクDに関しては、文法知ってれば大抵だいじょうぶ。

それでCなのですが、一般化というやつが必要です。


a[0],a[1],a[2]…となってたらa[i]と表せるってやつです。


この辺を教えてくれるのは見たことないです。

たまに才能で片付けられてるときも。


一般化をどう教えるかについて、いろいろ悩んでたので

思わずハマったというわけですが、それはまた別の機会に。


以下、備忘録です。

言い忘れました Netbeansでコード作成する人向けです。

Netbeansで標準入力するとCtrl+Dで修了できません。(見つからなかった)

そのための対処含めてになります。


標準入力について

いわゆるStreamで受け取れます。

テキストファイルに例を貼って、ファイルを読み込めば

おんなじ状況でテストできます。

ついでにコレクションに突っ込みます。

     Scanner sc = new Scanner(new File("C:\\test.txt")); 
     List<String> ls = new ArrayList<>();
        try {
            while (sc.hasNextLine()) {
                String line = sc.nextLine();
                ls.add(line);
            }
        } finally {
            sc.close();
        }


よく使う処理

知らないと参加できないケースが多いのでまとめ。

特定文字列で分割

半角スペース区切りが多いです。

返り値は配列になります。

Str.split(“ ”);

文字型<>数値型の変換

言語によってはいらないのかも?


文字>数字

Integer.parseInt(str);


数字>文字

String.valueOf(int)

文字のn番目の文字

i番目の文字を一文字だけ抜き出したいとき。

str.substring(i,i+1)


最後の一文字削除

これはやり方というより、最後に余分なスペースがあると

正解にならないことに注意です。

str.substring(0,str.length()-1);

JavaFXで押したボタンのID取得

寝る前に調べたらおもったよりはまったので備忘録。

押されたボタンのIDとテキスト取得です。


フォーム全般ではこれ使って分岐することが多いのですが、

どーにも見つからない…


なにか他の方法でもあるんでしょうか。

ExcelAccessJavascriptどれでもそこそこはまりました。


動作はこちら


コードはこんなかんじ


    @FXML
    private void handleButtonAction(ActionEvent event) {
        Button b = (Button)event.getSource();
        label.setText("押したボタンのID:" + b.getId() + "\n"
        + "ボタンのテキスト:" + b.getText());  
    }


Buttonオブジェクトに1回キャストしないとだめみたいなのです。


(Button)event.getSource().getId() とか

event.getSource().getId() なんてのは

できませんでした。


追記

コメントで頂きました。キャストをかっこでくくると1行でいけます。

System.out.println(((Button)event.getSource()).getId());

職業訓練でのJavaの基礎の総括

f:id:nazuna_0124:20170403224602p:plain

どこで見かけたのがわかんなくなってしまいましたが、

説明が上手い人とは、相手にどこまで説明するのか把握するのが上手い人

なのだそうです。


おおむねこれは教えるのが上手い人にも該当します。

そう考えると相手の実力を把握するのが上手い、

その仕組を構築してる人が教え上手と言えるのかなって思ったり。


ただ、そうすると、そもそも把握する気がない人

大人数の講義で把握する機会のない人を教え下手と言って

よいかはなかなかに微妙。


とりあえず、30人以下程度で時間が取れていて

生徒の力を把握する気のない授業であれば、

教えるのが下手な授業と言い切ってしまっていいのかなと。


結論なしで話を戻しますが、Javaの基礎のお話です。


いつぞやPHPはATの免許みたいって書きました。

shokuren.hateblo.jp


Javaの基礎部分はフライトシュミレーターで地味な練習という印象。


Javaはとにかく大規模な案件、そして事故ると死ぬことが

前提として作られてます。


そのためののルールと機能がいっぱいあって大変というやつです。


当面は使わない機能も多いだけに、頭に入りにくいというわけですな。


当面は使わないというのであれなんですが、一つ目的をコードを書くことから

読めることに変更するとやりやすそうな気がしました。


一人で全部作るのはまずないのがJavaです。

もう少し読む力を重視してもよさそうです。


具体的には人のコードにひたすらコメントだけつけていくとか……


む 悪くないかも? ちょっと提案してみよっ。


PHPでは全くわからなかったクラス関係が、Javaのおかげで

一気に把握できました。


PHPしかやらない人でもオブジェクト指向理解するためだけに

Javaに触れてみるのもありなのかも!

職業訓練の授業69日目~Java:GUI、ウィンドウの作成、イベント~

f:id:nazuna_0124:20170303054656p:plain

1日あけたあとも、合同企業面談会の話題でもちきりです。


話を聞く会社は早いもの勝ちだったので、なかなかに運が絡みます。


冷静に考えるとあのへんをもっとシステム化してもいいんじゃないかと。


研修で使うようのタブレットを各ブースに設置して

時間管理とか適当に…あとで各企業さんは自分の

登録ページだけ見られるとか。


相変わらず案だけは尽きないので、

思いついたものさくっと作れるようになりたいものです。


さて、本日はウインドウの作成です。


AWT、Swing、JavaFXとお決まりの説明から始まって

実際の操作はJavaFXで作成していきます。


この分野はここぞとばかりにIDEの機能を使います。

いつも通りEclipseとNetbensで試してみることに。


最初はFxmlは使わずに作成していきました。

このへんの使用感はhtmlタグを使わすにJavascriptだけで

Webページ作ってるようなもんですね


よくわからなくてイライラしていた、イベントリスナー

イベントハンドラという単語の意味がようやくわかりました!


取っ掛かりが出来てしまえば後は頭のいい人達が考えて作った仕組み

という感じなので芋づる式に把握できます。


ただ、ペースが早いのか、わからないという声が続出。

うつろな目をしている人が大半だったらしいです。


う~ん そろそろ本気で復習講義でもやったほうがいいのかと思ってきました。


そもそも希望者がいるのかということと、

わたしが教えるとできるようになっちゃうので躊躇してます。


みんなの就職先にはわたしはいませんので……

ここまで覚えておいて、かつ未経験者OKの会社に入れば

苦労が少なくてすむかも?


とゆーラインがいくらか見えてきたので、その辺に絞ってやってみようかと

こっそり検討中。


残り2ヶ月ちょっと! やるなら5月初めからですね!

職業訓練学校での合同企業面談会

f:id:nazuna_0124:20170403224602p:plain

再三書いていたとおり、企業さんとの直接面談の日です。


時間は午後1時半~4時までと、ちょっと短め。

予め、リクエストと言うかたちで両方共希望を伝えています。


しかし、これは矯正ではありません。

時間開始から早いもの勝ちで企業を回っていって

お話を聞くタイプです。


話の流れは様々。パンフレットの会社説明から入るところもあれば、

即、「質問あればどうぞ」ぐらいのペースのところもあります。


比較的ゆるい雰囲気でお話の聞けるのが最大の特徴。


聞いた上で改めて応募はもちろんですし、逆に企業さんから

本面接に来てみないかということで、新たなリクエストも届きます。


さてさて、プログラム系に限った話とはなりますが、

確かに売り手市場のようです。


経験者募集だけでは人が確保できないということですね。

未経験者も育てていく気のある会社ということです。


そうなると、訓練生としては気になるのは研修の期間や内容です。

ここはどうしても会社の規模などによって、差がでてきます。


会社選びのときに注意したいポイントです。


個人的に気になるところは一つ。

未経験を一からは大変だから、ある程度勉強していきます!的な雰囲気で


「ぶっちゃけ、どの程度まで出来ててほしいですか?」

という類のことを聞いたのですが、各社さんとも妙に歯切れが悪いです。


数ヶ月勉強して、そこが理解出来てないなら採用しても

継続は難しいというボーダーはあると思うのです。


あまり考えていないのか、会社から見たらその程度は誤差なのか

いまいち判別が付きませんでした。


質問変えつつ聞いてみると、フレームワークStruts

また、データベースへアクセスして何かする処理は出来たほうが良い

という情報だけゲット!


しょーじきわからんのですが、Springじゃないのかな?

MVCの基礎知っててほしいということなんでしょーか。


データベースはOracleとかMysqlとかって話ではなく

SQLがわかるかどうかみたいです。


確かに、ついでにくっついてくる話の割に

重いですものね……。


それはそうと、上流工程やりたいって人は少ないのですか?

プロマネのこともあり、それとなく伝えると

だいたいそんな感じの反応。


感触としては上々だったと思います。

とある一社は、その業務じゃわたしよりぴったりはまる人探すのかなり無理

と断言できそうなものもあったりなかったり。


就職活動も本格化してきました。

JavaGUIがスタートしてこちらも本格化。

どうなることやら!