東方算程譚

Oriental Code Talk ── επιστημηが与太をこく、弾幕とは無縁のシロモノ。

目次

Blog 利用状況

ニュース

著作とお薦めの品々は

著作とお薦めの品々は
東方熱帯林へ。

あわせて読みたい

わんくま

  1. 東京勉強会#2
    C++/CLI カクテル・レシピ
  2. 東京勉強会#3
    template vs. generics
  3. 大阪勉強会#6
    C++むかしばなし
  4. 東京勉強会#7
    C++むかしばなし
  5. 東京勉強会#8
    STL/CLRによるGeneric Programming
  6. TechEd 2007 @YOKOHAMA
    C++・C++/CLI・C# 適材適所
  7. 東京勉強会#14
    Making of BOF
  8. 東京勉強会#15
    状態遷移
  9. 名古屋勉強会#2
    WinUnit - お気楽お手軽UnitTest

CodeZine

  1. Cで実現する「ぷちオブジェクト指向」
  2. CUnitによるテスト駆動開発
  3. SQLiteで組み込みDB体験(2007年版)
  4. C++/CLIによるCライブラリの.NET化
  5. C# 1.1からC# 3.0まで~言語仕様の進化
  6. BoostでC++0xのライブラリ「TR1」を先取りしよう (1)
  7. BoostでC++0xのライブラリ「TR1」を先取りしよう (2)
  8. BoostでC++0xのライブラリ「TR1」を先取りしよう (3)
  9. BoostでC++0xのライブラリ「TR1」を先取りしよう (4)
  10. BoostでC++0xのライブラリ「TR1」を先取りしよう (5)
  11. C/C++に対応した、もうひとつのUnitTestFramework ─ WinUnit
  12. SQLiteで"おこづかいちょう"
  13. STL/CLRツアーガイド
  14. マージ・ソート : 巨大データのソート法
  15. ヒープソートのアルゴリズム
  16. C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
  17. .NETでマンデルブロ集合を描く
  18. .NETでマンデルブロ集合を描く(後日談)
  19. C++/CLI : とある文字列の相互変換(コンバージョン)
  20. インテルTBBによる選択ソートの高速化
  21. インテルTBB3.0 によるパイプライン処理
  22. Visual C++ 2010に追加されたSTLアルゴリズム
  23. Visual C++ 2010に追加されたSTLコンテナ「forward_list」
  24. shared_ptrによるObserverパターンの実装
  25. .NETでマンデルブロ集合を描く(番外編) ── OpenCLで超並列コンピューティング
  26. StateパターンでCSVを読む
  27. 状態遷移表からStateパターンを自動生成する
  28. 「ソートも、サーチも、あるんだよ」~標準C++ライブラリにみるアルゴリズムの面白さ
  29. インテルTBBの同期メカニズム
  30. なぜsetを使っちゃいけないの?
  31. WPFアプリケーションで腕試し ~C++でもWPFアプリを
  32. C++11 : スレッド・ライブラリひとめぐり
  33. Google製のC++ Unit Test Framework「Google Test」を使ってみる
  34. メールでデータベースを更新するココロミ
  35. Visitorパターンで遊んでみたよ
  36. Collection 2題:「WPFにバインドできる辞書」と「重複を許す検索set」
  37. Visual C++ 2012:stateless-lambdaとSQLiteのぷち拡張
  38. 「Visual C++ Compiler November 2012 CTP」で追加された6つの新機能

@IT

  1. Vista時代のVisual C++の流儀(前編)Vista到来。既存C/C++資産の.NET化を始めよう!
  2. Vista時代のVisual C++の流儀(中編)MFCから.NETへの実践的移行計画
  3. Vista時代のVisual C++の流儀(後編) STL/CLRによるDocument/Viewアーキテクチャ
  4. C++開発者のための単体テスト入門 第1回 C++開発者の皆さん。テスト、ちゃんとしていますか?
  5. C++開発者のための単体テスト入門 第2回 C++アプリケーションの効率的なテスト手法(CppUnit編)
  6. C++開発者のための単体テスト入門 第3回 C++アプリケーションの効率的なテスト手法(NUnit編)

AWARDS


Microsoft MVP
for Visual Developer - Visual C++


Wankuma MVP
for いぢわる C++


Nyantora MVP
for こくまろ中国茶

Xbox

Links

記事カテゴリ

書庫

日記カテゴリ

電卓作成ちう

電卓できた(うふ♪ のつづき。

4/25東京勉強会ではVB嫌いを公言するアテクシεπιστημηが
こともあろうにVBをネタにセッションやります。

お題は電卓。ふつーに電卓こしらえてもつまんないので、
逆ポーランド電卓に挑戦するます。

逆ポーランド電卓に必要不可欠なのがスタックです。
計算中の途中結果が格納されるスタックの内容をリアルタイムに表示し、
計算してんぞしてんぞーって様子をご覧にいれようと企んでいます。

ここでちょいとした問題があります:

● Smart UI(利口なUI)アンチパターン
層状アーキテクチャの対極をなすアンチパターン。ビジネスロジックやデータアクセスのコードが、UIのコードと一緒になってしまっている、いわばスパゲッティな状態。利口なUIと呼ぶのは、ビジネスロジックを含むすべての処理がUIの中で行なわれるから。最もやっつけで手軽なやり方がこれなので、設計を何も考ないとこの状態に陥ってしまう。

アプリケーションは電卓の実体(Model)見てくれ(View)を分離したいのね。
スタックの実体はその見てくれ──たとえばListBox──の存在を意識せずに動かしたい。
スタックに対して何らかの操作を行うと、ListBoxがスタックの状態に同期して
自動的にその表示を更新したいわけっす。

...いいもん見つけた。
System.Collections.ObjectModel 名前空間にある
Collection(Of T)KeyedCollection(Of TKey,TValue)
これ使うと実体と見てくれの同期があっさり実現できるます。

可変長配列とListBoxとの分離/同期の実装例をお披露目できそう♪
Genericsをばっきばきに使いまくったきしょいVBコードをお楽しみに。

<釣り糸>
えとさー、VBで"型のエイリアス"ってできます?
Class Hoge
  なんとか を String の別名とする魔法の呪文...
End Class
ってやっとけば、Hoge.なんとか が String の別名として使えて、
Dim s As Hoge.なんとか ' Dim s As String と同じ
って書ける、みたいな魔法の呪文を探してます。
</釣り糸>

投稿日時 : 2009年3月18日 10:46

コメントを追加

# re: 電卓作成ちう 2009/03/18 13:10 インドリ

>釣り糸

ぱく。
Imports Hoge = System.String
ではどうですか?

# re: 電卓作成ちう 2009/03/18 13:20 επιστημη

Class Hoge
 Imports Payo = System.String
End Class

error BC30465:
'Imports' ステートメントは、宣言の前に記述しなければなりません。

 Imports Payo = System.String
 ~~~~~~~

だそうです。餌だけもってかれました。

# re: 電卓作成ちう 2009/03/18 13:37 インドリ

ファイルの一番最初に宣言したら大丈夫です♪

Imports Piyo = System.String
Class Hoge
End Class

# re: 電卓作成ちう 2009/03/18 13:57 のんたそ

ぱぱ私見に行きたいんですがその日、、、
15時から横浜でMCAの試験なので午前中にやっていただけるとうれしかったり・・・・ごにょごにょ・・・

# re: 電卓作成ちう 2009/03/18 18:57 επιστημη

> ファイルの一番最初に宣言したら
それじゃダメなのっ

Class Hoge(Of T)
 Imports Container = List(Of T)
 Public Shared Function F() As Container
 ...
End Class

Dim x As Hoge(Of Integer).Container

なんてことしたいんだから。

> 午前中にやっていただけると

中の人次第ですがー ^^;

# re: 電卓作成ちう 2009/03/18 20:27 インドリ

変態的な手法でよかったら・・・


Class Hoge(Of T)

Class Container
Inherits List(Of T)
End Class

End Class


これで多分OKだと思います。

# re: 電卓作成ちう 2009/03/18 22:05 επιστημη

↑却下。

僕が欲しいのは"別名"なのよ。
C++でゆーところのtypedefね。

# re: 電卓作成ちう 2009/03/19 10:19 インドリ

やっぱり、typedef・・・
う~ん。VBには無いです。

# re: 電卓作成ちう 2009/03/19 12:38 K5

typedefが欲しいんかなぁ~と思って読んでいたらやっぱりw

それ私も初めてVB2005で仕事した時
(てか今なんですけどね)に思わずやろうとしましたが、
方法が見つからなかったので諦めました

# re: 電卓作成ちう 2009/03/19 13:19 επιστημη

> typedefが欲しいんかなぁ~

そりゃ欲しいさー。

なぁにが哀しぅて

Public Class DictionaryCollection(Of TKey, TValue)
 Inherits KeyedCollection(Of TKey, KeyValuePair(Of TKey, TValue))
 Public Event Changed As EventHandler(Of ItemChangedEventArgs(Of KeyValuePair(Of TKey, TValue)))
...

なんつー寿限無寿限無を繰り替えさにゃならんのよ

# re: 電卓作成ちう 2009/03/19 13:46 インドリ

一層の事スニペットを作るといいかも・・・

# re: 電卓作成ちう 2009/03/19 14:30 επιστημη

スニペットなんざ入力の手間省くだけで、
寿限無寿限無による見通しの悪さを解決しちゃくれんです。

# re: 電卓作成ちう 2009/03/19 16:33 επιστημη

> やっぱり、typedef・・・
> typedefが欲しいんかなぁ~

ハナっから"型のエイリアス"てゆーてるやんかぁ orz

# re: 電卓作成ちう 2009/03/19 20:29 みきぬ

.NET Framework 的に望みは薄そう。http://www.atmarkit.co.jp/fdotnet/insiderseye/20060215cscommunity/cscommunity_02.html

# re: 電卓作成ちう 2009/03/19 22:08 επιστημη

> typedefキーワードの問題点としては、型の別名を
> 自由に定義できてしまうので、プログラマーにとって
> 混乱を引き起こしやすいことが挙げられる

クラス・スコープで囲むんだから許せよー

> また.NET Frameworkでは、それぞれの型には1つの
> 名前しか定義できない仕様になっている。

いーぢゃんコンパイル時に元の名前に戻せばさぁ

# 言うだけならタダ

# re: 電卓作成ちう 2009/03/20 19:27 インドリ

>いーぢゃんコンパイル時に元の名前に戻せばさぁ

同感です♪
コンパイラ的には何も問題ないはずです。

# re: 電卓作成ちう 2009/03/25 13:43 とりこびと

>System.Collections.ObjectModel 名前空間にある
>Collection(Of T) と KeyedCollection(Of TKey,TValue)

あんまし実装が見えてないのですが・・・επιστημηさんが好きそうなクラス名のコレとかいかがでしょうか?w

ObservableCollection<(Of T) クラス
http://msdn.microsoft.com/ja-jp/library/ms668604.aspx

# re: 電卓作成ちう 2009/03/26 17:39 επιστημη

うんうん、そいつもざっくし眺めてたですなり。
さくさくっと遊ぶにはちょいとかったるかったので
後回しっちゅー。

# 車輪の再発明なのは百も承知でー

# ixSMzbunHND 2014/08/07 2:51 http://crorkz.com/

s7ufTu I am so grateful for your post.Thanks Again. Really Great.

# HnyhdLrKZV 2022/04/19 11:13 johnanz

http://imrdsoacha.gov.co/silvitra-120mg-qrms

タイトル
名前
URL
コメント