投稿

12月24日(金)3、4コマ目

Java演習「異常系処理の実習 ユーザー登録」 ソースをあげておきます。 [DAOクラス]UserDAO.java ユーザーマスタアクセス用クラス。 [例外クラス]DupplicateIDException.java ID重複時にスローする検査例外クラス。 [例外クラス]NoInviterException.java 指定された紹介者がいないときにスローする検査例外クラス。 [例外クラス]InvitedByMySelfException.java 自分自身を紹介者として登録したさいにスローする検査例外クラス。 [例外クラス]NotFilledException.java 未入力項目があるときにスローする検査例外クラス。 [プレゼンテーションレイア]IndexSrv.java サーブレットクラス。  今日、やったこと

12月9日(木)3、4コマ目

イメージ
今日、やったこと Java版異常処理 今日のホワイトボード いままでおさらい メソッド終了時には 正常終了 異常終了 の2パターン。 そのうち、異常終了は ユーザーに通知すべきエラー ユーザーに伝えてもしょうがないエラー の2つに分けれました。 図 前回からのおさらい(異常終了の分類) Javaの例外クラス Javaの例外クラスは 検査例外 実行時例外 の2つに分けられます。 この2つの例外クラスをうまく使い分けます。 図 Javaの例外クラスと異常終了通知手段 検査例外クラス 検査例外をスローするメソッドはthrowsで例外スローが必須です。 (throwsがないとコンパイルエラー) また、スローされた検査例外は必ずどこかでキャッチする必要があります。 (キャッチしないとコンパイルエラー) この「 どこかで必ずキャッチする必要がある 」は エラー処理を強制する ことができます。 実行時例外クラス 実行時例外をスローするメソッドはthrowsで例外スロー宣言は任意です。 スローされた例外のキャッチも任意です。 サンプルアプリケーション ユーザー登録を行うアプリケーションを作成しました。 図 サンプルアプリケーション ソースコードをあげておきます。 [DAO]UserDAOクラス 例外_ ユーザーマスタテーブルにアクセスするためのクラス。 [Exception]DuplicateIDExceptionクラス 指定されたIDがすでに利用中のときスローする検査例外クラス。 [Exception]TooShortPasswordExceptionクラス 指定されたパスワードがパスワード要件を満たしていないときスローする検査例外クラス。 [Exception]NotFilledExceptionクラス 未入力の項目があるときスローする検査例外クラス。 [presentation]IndexSrvクラス サーブレットクラス。 [presentation]index.jsp JSPファイル。 次回は 次回は12月24日(金)のクリスマスイブ。 今年最後の授業です。ちゃちゃっとやって終わりたいので、 3コマ目 課題の時間 4コマ目 解説 でいきます。

12月6日(月)3、4コマ目

今日、やったこと C#版「オークションサイト」締め切り日 課題「C#版オークションサイト」 正解例をあげておきます。 [データアクセスレイア]UserDAOクラス ユーザーマスタテーブルアクセス用クラス。 あくまでもデータベースアクセスクラス。認証メソッドはここには作らない。 このクラスが返す値を使って、ビジネスロジック層で認証を行う。 逆の言い方をすれば、ビジネスロジック層で認証を行うためにこのクラスの機能を使う。 [データアクセスレイア]ItemDAOクラス 商品マスタテーブルアクセス用クラス。 [データアクセスレイア]BidDAOクラス 入札データテーブルアクセス用クラス。 [ビジネスロジックレイア]Serviceクラス このクラスでこのシステムに必要な機能(認証、入札期日チェック、入札など)を提供する。 [プレゼンテーションレイア]Index.cshtml.cs 1ページ目。ログインページ。 [プレゼンテーションレイア]ItemList.cshtml.cs 2ページ目。商品一覧ページ。 [プレゼンテーションレイア]Bid.cshtml.cs 3ページ目。入札ページ。

11月25日(木)3、4コマ目

イメージ
今日、やったこと 課題(かんたんオークションサイト構築C#版) 課題について 口頭で説明したシーケンス図の変更事項をホワイトボードにまとめました。 図 シーケンス図変更事項 課題の締め切り くどいですが、 12月6日(月)4コマ目終了時です。

11月18日(木)3、4コマ目

イメージ
前回の練習問題 異常時対応にフォーカスしたユーザー登録アプリケーションを作ってもらいました。 ソースをあげておきます。 RegistUserResultEnum(列挙型) ユーザー登録の結果を通知するための列挙型。 UserDAOクラス IDが重複した(主キー制約違反)、紹介者がいない(参照整合性制約違反)等が発生すれば、例外がスローされます。スローされた例外のNumberプロパティでエラーコードが確認し、発生エラーに応じた戻り値を返します。 Serviceクラス RegistUser()メソッドでは、UserDAOのInsert()メソッドを呼び出しています。 例外がスローされたとき(通知しても仕方がないエラーが発生したとき)、OracleExceptionから一般的な実行時例外のApplicationExceptionに変更してスローしています。 Index.cshtml ここは特に問題ないかと。 Index.cshtml.cs OnPost()メソッドで入力チェックを行っています。 図 入力チェック 〇空白チェック stringクラスのIsNullOrEmpty()メソッドは引数がnullまたは空白のときにtrueを返します。 stringクラスには空白チェック用メソッドが下表にように用意されています。 メソッド 役割 public static bool IsNullOrEmpty(string? value) 引数valueが nullまたは空の文字列("") ならtrue、それ以外ならfalseを返す。 public static bool IsNullOrWhiteSpace(string? value) 引数valueが nullまたは空白文字列(""だけでなく"  "など) ならtrue、それ以外ならfalseを返す。 〇数値以外が入力された ユーザーIDや紹介者ID入力欄に...

11月11日(木)3、4コマ目

イメージ
今日、やったこと 異常時処理対応プログラム作成(C#) 今日のホワイトボード 前回の異常時対応プログラムを元に、練習問題を作りました。 2つのテーブルを使いますが、参照関係から、どのテーブルから順に登録、削除するかがポイントになります。 図 2つのテーブルについて 次回は 今回の解説を行い、評価用課題を作成してもらいます。

11月9日(火)1、2コマ目

イメージ
今日、やったこと 前回の課題(C#+トランザクション)の解説 例外処理の話(C#) 今日のホワイトボード 前回の課題(C#+トランザクション)の解説 採点して、以下が気になりました。 変更対象のIDと数量を別々の変数で扱う 1商品毎にコミット、ロールバックをする 図 採点して気になったところ ソースコードをあげておきます。 StockDAO.cs Index.cshtml Index.cshtml.cs 例外処理について 処理終了時の状態 処理終了時は 正常終了 異常終了 の2つに分かれる。 さらに、異常終了は 想定内のエラー 想定外のエラー に分類し、 想定内のエラーを業務エラー 、 想定外のエラーを例外 と呼ぶ。 ただ、想定外のエラー(例外)はよくよく考えるとすべて想定内のエラー(業務エラー)にすることができる。 そこで、想定内のエラー(業務エラー)は   ユーザーに通知してリカバリをしてほしい(できる)エラー と再定義する。例えば、入力内容がおかしい場合など。 想定外のエラー(例外)は   ユーザーに通知してもリカバリできないエラー とする。例えば、DB接続に失敗したなど。 図 処理終了時の状態 処理終了時の状態をどうやって伝える C#ではメソッド呼び出し元に通知する手段として 戻り値 例外スロー が使える。これらをうまく使い分けることが今回のポイント。 図 処理終了時の状態を通知する手段 例外スロー時 一番ダメなのは、   例外をキャッチして、なにもしない(catchブロック内が空) です。 例外スロー時にやることがあるときだけ、try{}catch{}を使うこと 。 なにもないなら、例外は呼び出し元へスローすること。 図 例外スロー時は DBアクセス時にエラーが発生したら オラクルの場合、エラーコード(ORA-xxxxx)が返される。 プログラム上では、OracleExceptionがスローされる。Numberプロパティに5ケタのエラーコード(xxxxxの部分)がセットされている。 図 DBアクセス時にエラーが発生すると...