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

今日、やったこと

[サンプルアプリケーション作成]ショッピングサイト的なサイト

[練習問題]Cartクラスをつかう その1

今日のホワイトボード

[サンプルアプリケーション作成]ショッピングサイト的なサイト

前回のつづき。

Sessionオブジェクトに格納、取り出す際に

SessionExtensionsのGet<>()メソッドで、要素をシリアル化して、文字列化して、Sessionオブジェクトに格納している。

Sessionオブジェクトから取り出すのは文字列。文字列とキーを使って、元のクラスのインスタンスを再現する(逆シリアル化)。このとき、コンストラクタがオーバーロードされている場合、実行すべきコンストラクタ[JsonConstructor]アノテーションで指定する。

図 シリアル化、逆シリアル化


削除ボタン

どの商品を削除すべきか、削除ボタンのvalue属性にセットする。

商品のIDは重複する可能性があるので、行番号的なデータを使う。

図 削除ボタンのvalue属性

各行の商品に割り当てられる行番号的なデータはCartクラスで管理する。


シリアル化+privateなメンバ

シリアル化の際、privateなメンバは無視される模様。

[JsonInclude]アノテーションを付与すると、シリアル化対象になる。

図 privateなメンバもシリアル化


正解例をあげておきます。

Program.cs

Sessionオブジェクトが使えるように設定。いままでどおり


SessionExtensions.cs

いままでどおり


Item.cs

コーヒー、食べ物情報を受け渡すためのクラス。


SelectedItem.cs

選択されたコーヒー、食べ物情報を受け渡すためのクラス。

読み取り専用の小計用プロパティ(SubTotalプロパティ)が新ネタ。


Cart.cs

ショッピングカート的なクラス。

選択済み商品に付与する行番号的データはRowIdプロパティで管理。


Index.cshtml.cs

選択済み商品リストへの追加や削除はCartクラスが行うため、ここはシンプルになった。


Index.cshtml

とくにややこしいことはないかと。


ListクラスのSort()メソッド

並び替えのメソッド。

Sort()メソッドはリスト自体の要素を並び替える。よって、Sort()実行前と実行後でリストの要素の並びは変わる。=>破壊的メソッド

図 ListのSort()メソッド

破壊的メソッドと非破壊的メソッド

メソッドを実行すると、オブジェクトが変わるのが破壊的メソッド。
変わらないのが非破壊的メソッド。
図 破壊的メソッド、非破壊的メソッド


[練習問題]Cartクラスをつかう その1

サンプルとほぼ同じ。ややこしくない。

正解例をあげておきます。

Program.cs

Sessionオブジェクトが使えるように設定。いままでどおり


SessionExtensions.cs

いままでどおり


Item.cs

コーヒー情報受け渡し用クラス。


Size.cs

サイズ情報受け渡し用クラス。


SelectedItem.cs

選択済み商品情報受け渡し用クラス。


Cart.cs

ショッピングカートのようなクラス。


Index.cshtml.cs

とくにややこしいことはないかと。


Index.cshtml

とくにややこしいことはないかと。

 

次回は

またまた練習問題。

次々回あたりに評価用課題をつくってもらいます。

このブログの人気の投稿

5月12日(火)1、2コマ目

4月28日(火)1、2コマ目

5月19日(火)1、2コマ目