タイトル : 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 |