Pythonでもオブジェクト指向プログラミングが出てくるが、今一つ理解できていない。
現役でプログラミングしていた頃は、FORTRAN77とその類似言語だった。
その為、手続き型プログラミングに比べて何が良いのか今も良く分からない。
Pythonの本などを見ても、”ふーん”という感じで良さが分かっていない。
そこで、WEBで色々調べたら、良い記事を見つけた。
下記のWEBページにお世話になりました。ありがとうございます。
手続き型プログラミングに比べて何が良いのかが理解できた。
特にポリモーフィズムによって西洋と東洋のフルネーム表示が
1つの命令文で実現できる事に感心した。手続き型プログラミングでは
出来ないことである。
上記のWEBページの例を参考にして、Pythonで実行した例は下図である。
1)実行結果
2)Pythonのプログラム
なお、最後の方でpの配列に関するプログラムは、下記のWEBページに
お世話になりました。ありがとうございます。
・Pythonの配列はオブジェクトも格納できる(ジェネリックスになる)
の”配列にクラスを格納する”
class my_class:
def __init__(self,givenName,familyName,age):
self.givenName=givenName
self.familyName=familyName
self.age=age
def getFullName(self):
return
class westclass(my_class):
def __init__(self,givenName,familyName,age):
self.givenName=givenName
self.familyName=familyName
self.age=age
def getFullName(self):
return self.givenName+” “+self.familyName
class eastclass(my_class):
def __init__(self,givenName,familyName,age):
self.givenName=givenName
self.familyName=familyName
self.age=age
def getFullName(self):
return self.familyName+” “+self.givenName
p=[westclass(“Albert”,”Einstein”,26),eastclass(“信長”,”織田”,47),
westclass(“Isaac”,”Newton”,43),eastclass(“秀吉”,”豊臣”,61),
westclass(“Galileo”,”Galilei”,46),eastclass(“家康”,”徳川”,73)]
for cnt in p:
print(cnt.getFullName())
<個人的な感想>
上記プログラムの最後の2文は、オブジェクト指向プログラミングだけが
できるものである。とても感心した。