東方算程譚

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

記事カテゴリ

書庫

日記カテゴリ

VB苦戦中(しょにょさん) → Visual Basic 男子校

Interfaceの実装なんだけども。

Public Interface 受け
    WriteOnly Property なにか() As Object
End Interface

Public Interface 攻め
    ReadOnly Property なにか() As Object
End Interface

があったとき、この両方を実装するクラスで
Property なにか() As Object Implements ここになんてかけばいいの???

しばし悩んでおりました。

Public Class 両刀
    Implements 受け, 攻め
    Public Property なにか() As Object Implements 攻め.なにか, 受け.なにか
        Get
            Console.WriteLine("や ら な い か ?")
            Return Nothing
        End Get
        Set(ByVal value As Object)
            Console.WriteLine("アッーーー!")
        End Set
    End Property
End Class

?error BC30154: Class '両刀' は、インターフェイス '受け' に対して 'WriteOnly Property なにか() As Object' を実装しなければなりません。プロパティの実装には、一致する 'ReadOnly' または 'WriteOnly' 指定子が必要です。
?error BC30154: Class '両刀' は、インターフェイス '攻め' に対して 'ReadOnly Property なにか() As Object' を実装しなければなりません。プロパティの実装には、一致する 'ReadOnly' または 'WriteOnly' 指定子が必要です。
?error BC30401: 'なにか' で 'なにか' を実装できません。インターフェイス '攻め' に、対応する property がありません。
?error BC30401: 'なにか' で 'なにか' を実装できません。インターフェイス '受け' に、対応する property がありません。

んーむ... いろいろいぢくりまわして...
どうやら ReadOnly と WriteOnly のふたつの なにか() を書けばいいらしい。

Public Interface 受け
    WriteOnly Property なにか() As Object
End Interface

Public Interface 攻め
    ReadOnly Property なにか() As Object
End Interface

Public Class 両刀
    Implements 受け, 攻め
    Public ReadOnly Property なにか() As Object Implements 攻め.なにか
        Get
            Console.WriteLine("や ら な い か ?")
            Return Nothing
        End Get
    End Property
    Public WriteOnly Property なにか() As Object Implements 受け.なにか
        Set(ByVal value As Object)
            Console.WriteLine("アッーーー!")
        End Set
    End Property
End Class

Module Program
    Sub Main()
        Dim あたし As 受け = New 両刀()
        Dim あなた As 攻め = New 両刀()
        あたし.なにか = あなた.なにか
    End Sub
End Module

※ サンプルコードのわかりやすさには定評あります♪

[追記]?プロパティ?なにか() が重複するとのご指摘を受けました。
ここに訂正してお詫び申し上げます。

Namespace BL

    Public Interface 受け
        WriteOnly Property なにか() As Object
    End Interface

    Public Interface 攻め
        ReadOnly Property なにか() As Object
    End Interface

    Public Interface リバも可
        Inherits 受け, 攻め
    End Interface

    Public Class 鬼畜
        Implements リバも可
        Public ReadOnly Property 凸() As Object Implements 攻め.なにか
            Get
                Console.WriteLine("や ら な い か ?")
                Return Nothing
            End Get
        End Property
        Public WriteOnly Property 凹() As Object Implements 受け.なにか
            Set(ByVal value As Object)
                Console.WriteLine("アッーーー!")
            End Set
        End Property
    End Class
End Namespace

Module 放課後の教室
    Sub Main()
        Dim 僕 As BL.受け = New BL.鬼畜()
        Dim 君 As BL.攻め = New BL.鬼畜()
        僕.なにか = 君.なにか
    End Sub
End Module

投稿日時 : 2009年2月25日 15:59

コメントを追加

# re: VB苦戦中(しょにょさん) 2009/02/25 16:11 επιστημη

あ...クラス名 "両刀" は不適切ですかしら...
"リバも可" にリファクタリングしますか。

# re: VB苦戦中(しょにょさん) 2009/02/25 16:23 zak

確信いたしました。
"コードは人を殺せる"と!

#モニタに吹いた龍井特級返してくだしぃ・・・

# re: VB苦戦中(しょにょさん) 2009/02/25 16:26 ちゅき

あれ? コンパイル通らんです。
VB君、名前変えないとダメだったような。
オーバーロードがでけんと怒られる

Public Class 両刀
Implements 受け, 攻め
Public ReadOnly Property たち() As Object Implements 攻め.なにか
Get
Console.WriteLine("や ら な い か ?")
Return Nothing
End Get
End Property
Public WriteOnly Property ねこ() As Object Implements 受け.なにか
Set(ByVal value As Object)
Console.WriteLine("アッーーー!")
End Set
End Property
End Class

Module Program
Sub Main()
Dim あたし As 受け = New 両刀()
Dim あなた As 攻め = New 両刀()
あたし.なにか = あなた.なにか
End Sub
End Module

# re: VB苦戦中(しょにょさん) 2009/02/25 16:34 επιστημη

> 龍井特級
勝った! こちとら獅峰明前だぜぃ(もらいもんだけど)

# re: VB苦戦中(しょにょさん) 2009/02/25 16:52 επιστημη

> あれ? コンパイル通らんです。

アッーーーー!
ホントだー、たち/ねこ でも 凸/凹 でも
なんでもいいからrenameしてくだっせ > ALL

C# だと↓これでおkみたい。

public class 両刀 : 受け, 攻め {
 public object なにか {
  get { Console.WriteLine("や ら な い か ?");
      return null; }
  set { Console.WriteLine("アッーーー!"); }
 }
}

# re: VB苦戦中(しょにょさん) → Visual Basic 男子校 2009/02/25 17:40 επιστημη

そうそう、ライブラリ化する場合、
名前空間は BL(BasicLibrary) でおながいしまつ。

Module 調教

 <Extension()> _
 Public Shared Sub 襲い受け(ByVal 僕 As 受け, ByVal 君 As 攻め)
  僕.なにか = 君.なにか
 End Sub

End Module

# re: VB苦戦中(しょにょさん) → Visual Basic 男子校 2009/02/25 19:02 ちゅき

>名前空間は

VB脳に名前空間といってもポカーンw
既定の名前空間萌え~

# re: VB苦戦中(しょにょさん) → Visual Basic 男子校 2009/02/25 21:20 インドリ

このサンプルコード破壊力ありすぎますw

# re: VB苦戦中(しょにょさん) → Visual Basic 男子校 2009/02/26 0:50 アクア

タイトルに引き寄せられ、
本文に驚愕し、
現在、机の上を雑巾掛けしています。

私が吹いた天空烏龍茶返して下さい。

ちなみに『Visual Basic 男子校』の入学願書は校風が馴染めなさそうなのでゴミ箱に捨てました。

定員割れ確実ですね♪ >Visual Basic 男子校。

# re: VB苦戦中(しょにょさん) → Visual Basic 男子校 2009/02/26 9:31 みきぬ

[壁]ω・) 教育上不適切なサンプルを公開しているスレはここですか?

# re: VB苦戦中(しょにょさん) → Visual Basic 男子校 2009/02/26 9:50 επιστημη

プロパティの"出し入れ"について正確で適切なサンプルを提供していますがなにか?

# ビギナだとはじめはキツいとは思いますが次第に──

# re: VB苦戦中(しょにょさん) → Visual Basic 男子校 2009/02/26 11:18 επιστημη

> 定員割れ

私立なのでそれはツラいす。
女子校の併設も検討していたのですがRead可能なプロパティが見当たらず断念。

# '祭り'を仕掛けてみるテスト 2009/02/26 17:16 東方算程譚

'祭り'を仕掛けてみるテスト

タイトル
名前
URL
コメント