tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^8: 多重継承について(2)
投稿日: 2007/04/13(Fri) 15:32
投稿者るしぇ
>実際は、最終の製品は注文生産で、一品一品違うのです。
>したがって、重量も一品一品異なってきます。ただ、分類すると3通りの分類方法が考えられる
>という状態です。
だーかーらー。そーゆー仕様で考えられる数パターンのうちの1個を
サンプルコードとして書いたと思うんですが???
サンプルコードを解析した?製品Aでも基本重量の初期値は決まってるけど、
Set基本重量で変更可能だよ?

>「会社で作っている物の重量を計算したいけど、どうすればよいですか?
>教えてください。」といって「例えば、こういう製品があります。...」
最初の質問ってその日本語をそのままコードにしただけだよね?
「ふざけるな!!!」って言われるとされてる質問と大差ないとも思いますが(^^;)
>実際は、最終の製品は注文生産で、一品一品違うのです。
こう聞くとボクは某PCメーカーの注文生産を思い浮かべるわけです。
PCのモデルAにはDVDRWの1と2があって…とかいう例なら
『あー。部品が違うと重量変わるよね』
『発送の時に総重量を計算する必要があるよね』
って直感的に分かるわけです。この掲示板を利用している80%の人が分かり、
小学生でも分かる可能性のある質問になるはずです。

これがラダートレイだの鋼板トレイだの言われても
『ladderならはしごだから穴が空いてるのかな?鋼板?板だから穴が無い分重いのかな?』
って疑問ばかりで、何も有効な情報が伝わってきません。ましてや曲げなんて
言われても、そっちのほうが「ふざけるな!!!」では?(^^;)

ところで、某PCメーカーの注文生産だとしても、魔界の仮面弁士さんが
> あるいはメンバをコレクション化してしまうとか。(DataTableのように)
って書いてるけど、データベースに部品テーブル作ってしまえば終わっちゃうわけです。
極端な話、VB側では
    Public Class 製品
        Public 部品テーブル As DataTable
    End Class
だけで終わります。総重量は、部品テーブルのレコード数だけ、部品ごとの
重量を足せばいいんです。そんな関数1個を実装すれば終了です。
分類が何種類あろうと、必要な処理が部品の総重量を求めるだけなら
分類する必要がありません。一切合財省略してもよい情報です。

「そんなものを質問してるはずは無い!!!」…と思いたいわけですw。
だから、わざわざ、重量計算()で、分類に応じて、ただの合計でない
計算まで作ってあるのに。。。

> 既製品の重量を求める場合のことを言っておられるのでしょうか?
> それならば (私の得意の)Select Case でなんとかなるかと思いますが...。
いままでの情報では Select Case でできるものをうだうだ難しく作ろうと
しているだけにしか思えませんでした。

実現できない(したい)部分の、核となる仕様の情報をください。

    Sub Test2()
        Dim seihin As New 製品
        Dim mokuzai As 木材
        Dim goukei As Double

        mokuzai = New クロス材
        mokuzai.SetSize(5.7, 20.8, 500.3)
        seihin.部品コレクション.Add(mokuzai)

        mokuzai = New サイド材
        mokuzai.SetSize(5.7, 60.7, 500.3)
        seihin.部品コレクション.Add(mokuzai)

        goukei = 0
        For Each mokuzai In seihin.部品コレクション
            goukei += mokuzai.重量計算
        Next

    End Sub

    Public Class 製品
        Public 部品コレクション As New Collection
    End Class

    Public Class 木材
        Protected _板厚value As Double
        Protected _板幅value As Double
        Protected _板長value As Double
        Protected _密度value As Double

        Public Sub New(ByVal 密度 As Double)
            _密度value = 密度
        End Sub

        Public Sub SetSize(ByVal 厚さ As Double, ByVal はば As Double, ByVal 長さ As Double)
            _板厚value = 厚さ
            _板幅value = はば
            _板長value = 長さ
        End Sub

        Public Function 重量計算() As Double
            Return _板厚value * _板幅value * _板長value * _密度value
        End Function
    End Class

    Public Class クロス材
        Inherits 木材
        Public Shared ReadOnly 密度 As Double = 1.5

        Public Sub New()
            MyBase.New(密度)
        End Sub
    End Class

    Public Class サイド材
        Inherits 木材
        Public Shared ReadOnly 密度 As Double = 2.3

        Public Sub New()
            MyBase.New(密度)
        End Sub
    End Class

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。