静的、動的の基準は? – プログラミング – Home

通知
すべてクリア

[解決済] 静的、動的の基準は?

固定ページ 1 / 2

みさこ
 みさこ
(@みさこ)
ゲスト
結合: 15年前
投稿: 4
Topic starter  

この二つの言語、C++ およびjava において、クラス、メンバー関数、メソッド、メンバ
変数、フィールド値を
静的 にするか、動的にするかその判断基準を教えていただけないでしょうか。


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 15年前
投稿: 64
 

それらが クラスに属するか/インスタンスに属するか です。


返信引用
wclrp ( 'o')
 wclrp ( 'o')
(@wclrp ( 'o'))
ゲスト
結合: 18年前
投稿: 287
 

静的やstaticっていろいろな場面があり
違う意味だったりするので静的の反対は動的とは限らないんじゃない。
# 俺はstaticの反対のことは知らないけど。

数学のsin、cos、タンジェントは、
インスタンスに関係ないのでstaticメンバ関数だな。
どんな時でも決められた値である定数はstaticだな。
# 別に無理にstaticにしなくてもいいんじゃね。

インスタンス関するものは非staticメンバ関数だね。
変数abcウィンドウの幅はabc.getWidth()とか。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 15年前
投稿: 64
 

> 数学のsin、cos、タンジェントは、
> インスタンスに関係ないのでstaticメンバ関数だな。

数のインスタンス・メソッドと考えられなくもないすけどね ^^;
# 実際C#だとそんな実装が可能だし。


返信引用
みさこ
 みさこ
(@みさこ)
ゲスト
結合: 15年前
投稿: 4
Topic starter  

お世話になります
>それらが クラスに属するか/インスタンスに属するか です。
変数という括りに絞り込んでお聞きしますと
クラスに属する変数 → static変数
インスタンスに属する変数 → 非satic変数
ということでしょうか?
例えば
クラスに属する変数 → 非static変数
インスタンスに属する変数 → satic変数
これではよくないのでしょうか?

>違う意味だったりするので静的の反対は動的とは限らないんじゃない。
確かにそうです。
>数学のsin、cos、タンジェントは、
>インスタンスに関係ないのでstaticメンバ関数だな。
定理、公式は不変のものなので、これらがstaticである理由は理解できるのですが
なぜ非staticではいけないという、積極的理由はどこにあるのでしょうか?
もう一段掘り下げて説明を、お願いできないでしょうか。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 15年前
投稿: 64
 

> クラスに属する変数 → 非static変数
> インスタンスに属する変数 → satic変数
> これではよくないのでしょうか?

よくないもなにも「不可能」でしょ?

> なぜ非staticではいけないという、積極的理由はどこにあるのでしょうか?

ありませんよ。たとえば逆数を求めるメソッド reciprocal() が 実数(Real) のインス
タンスメソッド(non-staticメンバ関数)であっても構わんですから。

Real x = 12.3;
Real y = x.reciprocal();


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

何というか、そもそも論点は何なんでしょう?
それが、全く見えてきませんので、まとまりのない話にしかならない気がします。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

絶対的な基準と言うのは多分無いと思いますよ。
実装可能であれば、どちらでも有りうる話ですし。
インスタンスに属させる必要があるのにstaticというのは実装上
だめと言うのは分かりますよね?
(ここの所でなぜと言われると話が進みません)

後は、概念としてすんなり理解できる形にするのが良いと言うくらいでは
ないかと思います。非staticではいけないのではなくてstaticの方が
すんなり理解できると言うのは理由になりませんか?


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

>例えば
>クラスに属する変数 → 非static変数
>インスタンスに属する変数 → satic変数
>これではよくないのでしょうか?

型と型から作られた実体(インスタンス)の区別がついていないのかも
しれませんね。メンバ(変数/関数)は、それが修飾する対象が

 ・型の修飾(つまり全インスタンスで共用)をする場合はstatic
 ・実体(インスタンス)毎の修飾をする場合は非static

に、自明的にならざるを得ません。プログラマに選択の余地はありません。

「道路交通信号」クラスの「現在の点灯状態取得」メンバは各実体の属性ですが、
「停止指示状態の色を取得」メンバはクラスstaticであるのは自明なわけです。


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

先の話だけじゃ、冷たい気がするので、
一応、私の見解を述べると、

> 静的、動的の基準は?
というのが、static / auto の話だと仮定するなら、
επιστημηさんの話通りだと思います。
> それらが クラスに属するか/インスタンスに属するか です。

話の前提として、クラスとオブジェクトの違いを認識してください。
以下の話が分かりやすいように思います。
http://hp.vector.co.jp/authors/VA010766/memo/WhatIsClass.html

その上でクラスに属するメンバ(変数/関数とも)をstaticとして扱い、
オブジェクトに属するメンバをautoとして扱うのです。

上記の鳥類図鑑の例で言うなら、
[auto]
・鳥類図鑑に載っている動物の名前
・鳥類図鑑に載っている動物の大きさ
・鳥類図鑑に載っている動物の生息区域

といったオブジェクト毎に値の変わるものがautoです。
そして、
[static]
・鳥類図鑑に載っている動物の数
・鳥類図鑑の最終更新日時

といったオブジェクト毎に値の変わらないものがstaticです。
なんとなく分かるかな?

[追伸]
ちなみに、
静的/動的って境目が曖昧なのでは?

staticを静的、autoを動的というのは1つの見方であり、
そもそも、プログラムは想定されたパターンしか処理できない。
決められたパターンという意味では、基本的に全てのプログラムは静的とも言
える。非常に複雑な静的機構という見方ですな。

じゃあ、何が動的なの?乱数処理を含めば不確定要素が入り込むから動的か?
いや、これだって疑似乱数なんて予測可能では?と言われれば元も子もない。

逆に考えれば、static変数だって別の値を代入可能である。
次々と値が変わる = 動的に状態が変わる と見なせば、static変数だって動
的と見なすことも可能。


返信引用
みさこ
 みさこ
(@みさこ)
ゲスト
結合: 15年前
投稿: 4
Topic starter  

お世話になります。
> 静的、動的の基準は?
というのが、static / auto の話だと仮定するなら、
new やtemplateのように、必要な場面でインスタンスシエードする実体という意味です
勉強不足でauto の意味がいまひとつ理解できていないのですが
ststic とは、プログラムが開始され終了するまで、常に同じアドレスに存在するもの
new または、templateでインスタンスシエードされてヒープに作成される実体(インス
タンス)としますと
私の理解できていない部分は、両者の使い分けの基準をどのように考えたらいいのかと
いうことなのです
必要なときに、インスタンスを生成し必要なくなったらデストラクタで破棄されなくと
もどの道、そのプログラムで必要で且つ、サイズがあらかじめ、予測できるものであれ
ば、
最初から特定のメモリアドレスにいてはまずいのでしょうか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 15年前
投稿: 64
 

> 両者の使い分けの基準をどのように考えたらいいのかということなのです

関数/変数が クラスに属するか/インスタンスに属するか です

# 堂々巡りやね。


返信引用
みさこ
 みさこ
(@みさこ)
ゲスト
結合: 15年前
投稿: 4
Topic starter  

理解力がなくてごめんなさい、よくわかりませんでした。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 15年前
投稿: 64
 

あ...life-timeを問題にしてるんですか?
最初の質問はメンバを静的/動的のどっちに置くかだったけど、

> 最初から特定のメモリアドレスにいてはまずいのでしょうか?

これはインスタンスを最初っから用意しておくか否か、ですよね。

> 最初から特定のメモリアドレスにいてはまずいのでしょうか?

構いませんよ。あらかじめ用意できるならば。


返信引用
ああ
 ああ
(@ああ)
ゲスト
結合: 15年前
投稿: 1
 

やはり
そうきたか

メモリ領域とメンバのstaticはごっちゃにして欲しくない


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました