似たような処理をするindividualClassAとindividualClassBをコーディングしたいと考えています。
今後もクラスを追加していきたいので、できるだけクラス間の結合度を弱めつつ重複を排除するためにオブジェクト指向について説明した書籍を読みつつコーディングしました。(実用と勉強半々です。)
以下のコード群ような構成にしてみましたが、下のような問題があると思います。
- var1、var2のようなindividualClass内で共通的に使用するパラメータが増えると、パラメータを使用するメソッド(individualMethod)の引数が長くなる。(2つだとあまり実感がないが、5つ以上になると汚くみえる)
- 引数とすることを避けるために、各メソッドからパラメータを直接参照できるようグローバル変数にすると、integrityを保証できない(予期せず変更されてしまう可能性がある)
こうした問題を解消するようなうまいプログラム構造設計の方法はあるのでしょうか。
そもそも以下のようなコーディングはオブジェクト指向プログラミングとして適切かつ効率的ないのでしょうか。(何かツッコミどころがないでしょうか)
やや漠然とした質問ですみません。
なお、individualClassは2つだけではなく、さらに増やしていくつもりでいます。individualClassの固有パラメータも2つだけではなく増やすつもりです。
python
1class sharedClass: 2 3 def sharedMethodA(): #実装は省略 4 5 def sharedMethodB(): #実装は省略 6 7 def sharedMethodC(): #実装は省略
python
1class individualSuperClass: #実装は省略
python
1class individualClassA(individualSuperClass): 2 3 def __init__(self): 4 # ClassA 固有のパラメータ 5 self.__var1 = '' 6 self.__var2 = '' 7 8 def individualMethod(self): 9 # ClassA 固有の処理を実行 10 hogehoge 11 # ClassA 固有の処理を実行後、ClassAのパラメータを使って共通処理を行う 12 sc = sharedClass() 13 sc.sharedMethodA(self.__var1, self.__var2) 14 sc.sharedMethodB(self.__var1) 15 sc.sharedMethodC(self.__var2)
python
1class individualClassB(individualSuperClass): 2 3 def __init__(self): 4 # ClassB 固有のパラメータ 5 self.__var1 = '' 6 self.__var2 = '' 7 8 def individualMethod(self): 9 # ClassB 固有の処理を実行 10 hogehoge 11 # ClassB 固有の処理を実行後、ClassBのパラメータを使って共通処理を行う 12 sc = sharedClass() 13 sc.sharedMethodA(self.__var1, self.__var2) 14 sc.sharedMethodB(self.__var1) 15 sc.sharedMethodC(self.__var2)
python
1def main(): 2 ic = individualClassA() 3 ic.individualMethod() 4 ic = individualClassB() 5 ic.individualMethod() 6 7if __name__ == "__main__": 8 main()
回答2件
あなたの回答
tips
プレビュー