質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

3回答

2027閲覧

c# 変数の共通化方法

luluca

総合スコア23

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

1グッド

1クリップ

投稿2020/03/12 08:31

こんにちは。

掲題の件、良い方法があればアドバイスください。

以下のような複数のクラスで共通の方の変数を利用したいと考えています。

  • 商品コード(int型)
  • 商品名(string型)
  • 金額(float型)

例えば、売上や在庫クラスなどでこれらの変数を使いたい場合、
共通クラスを定義してそれを継承するという方法があると思います。
※独自のクラスで商品コードなどは定義したくない。

C#

1class Item 2{ 3 string item_code; 4 string item_text; 5 string item_value; 6} 7 8class Sell : Item 9{ 10} 11

この場合、SellはItemの機能を引き継ぐクラスではないので、継承と言うのも違和感があります。

何かほかに良い方法があれば教えていただければ幸いです。

宜しくお願い致します。

s.k👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/03/12 08:43 編集

プロパティでいいのでは? class Sell { public Item Item { get; }; }
guest

回答3

0

話がよく見えませんが、
is-aかhas-aで悩んでいるのでしたら、

is-a関係とhas-a関係: 継承と包含
https://think-on-object.blogspot.com/2011/11/is-ahas-is-ahas-top-is-a-is-b.html

あたりが参考になりますかね?

投稿2020/03/12 08:59

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

複数クラスで共通した性質を利用するが、継承に違和感がある場合はだいたい包含を使えば解決するので、単純に共通する部分をオブジェクトとして変数やプロパティで持ってしまえばいいのでは。(質問のコメント欄にも書いてあるけど)

適当にググって出てくるこういう記事とか読んでみるといいのかも。

投稿2020/03/12 09:04

gentaro

総合スコア8947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

例えば、売上や在庫クラスなどでこれらの変数を使いたい場合、共通クラスを定義してそれを継承するという方法があると思います。

※独自のクラスで商品コードなどは定義したくない。

そもそも、「売上」や「在庫」をクラスにしません。それらは「商品」の状態、あるいは状態変化に起因する計算結果ではないでしょうか。

投稿2020/03/14 08:11

Q71

総合スコア995

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/03/14 08:17

すると思いますよ。DB のテーブルはだいたいクラスになる可能性があります。日付・顧客・商品・金額などが売上クラスのプロパティになります。
Q71

2020/03/15 23:33

質問を読んで持った違和感がなんだか分かったような。 在庫や売上というのは、商品の状態だと思います。状態は、属性にはしてもクラスにはしないよなぁ、と思っていたのですが、状態によって振る舞いを変えるなら、継承しますね、確かに。 ただ、それだとこういう質問にはならないはずで、「共通クラス」という言葉に強く違和感を覚えました。 最近はデータベースを触ることはないのですが、20年くらい前には、テーブルにあわせてクラスを作っていましたね。今作るなら、管理の主体を考えて、それとの関係からクラスを作ると思います。
Zuishin

2020/03/16 00:20

売上や在庫が状態だとして、それに付随して、売れた商品なら顧客、個数、金額、納品日や入金日、在庫なら倉庫など特定の状態特有のプロパティが業務上必要になってくるので、それぞれの状態にクラスを作るのがいいんじゃないかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問