オブジェクト指向とグローバル構造体について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ハタ

オブジェクト指向とグローバル構造体について

#1

投稿記事 by ハタ » 13年前

C言語を使用してます。
グローバル構造体が便利で多用してしまっているので、オブジェクト指向に基づいてstaticな構造体に変えたいと思ってます。
そこで質問なのですが
A というファイル
B というファイルがある時

A で内部構造体として宣言している構造体αのメンバー変数をBで参照したくなった場合

Bでαと同じ要素を持つ構造体βを宣言しておき、参照したい地点より前で β = α でβに構造体の内容を移して置き、βでメンバー変数を参照する。

という方法で良いのでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: オブジェクト指向とグローバル構造体について

#2

投稿記事 by softya(ソフト屋) » 13年前

それはオブジェクト指向と言うよりも構造化設計のモジュール化だと思います。

>A で内部構造体として宣言している構造体αのメンバー変数をBで参照したくなった場合
>Bでαと同じ要素を持つ構造体βを宣言しておき、参照したい地点より前で β = α でβに構造体の内容を移して置き、βでメンバー変数を参照する。

それは良くないので、Aモジュールにメンバー変数値を返す関数を追加してください。
Bモジュールは、構造体αの構造を知ってはいけません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ハタ

Re: オブジェクト指向とグローバル構造体について

#3

投稿記事 by ハタ » 13年前

>>ソフト屋さん
ご回答有難う御座います。

例えば知りたいメンバー変数が5つあった場合は、5つ分それぞれの値を返す関数を用意すれば宜しいでしょうか?

またAファイルの構造体αのメンバー変数値を他のファイルで変化させるのはご法度ですよね?
仮にそうしたくなった場合でもどうにかAファイル内で変更を行えるように組めば良いのでしょうか。
(ポインタなどを使えば他のファイルからでも変更出来ますが、これだと駄目だと思います。
ただそうなってくるとだいぶプログラムを組むのが大変になるなぁという気がしまして・・・。)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: オブジェクト指向とグローバル構造体について

#4

投稿記事 by softya(ソフト屋) » 13年前

ファイル内の変数をそれぞれ参照したり変化させる関数が必要かという問題は、外部に変数をそれほど晒す必要があるのかと言う問題と直結します。
つまり、Aモジュール(ファイル)内で処理すれば良い処理を他のモジュール(ファイル)で処理していませんか? って事です。
と言うことでやたら参照と更新関数が増えるならモジュール(ファイル)分けの基準自体を見なおしてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ハタ

Re: オブジェクト指向とグローバル構造体について

#5

投稿記事 by ハタ » 13年前

おっしゃる通りでモジュール分けの基準をもっと厳しく設けてみる事にします。
ご返答有難う御座いました。

閉鎖

“C言語何でも質問掲示板” へ戻る