teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

突っ込んだ内容を追記

2017/05/01 12:10

投稿

yuba
yuba

スコア5570

answer CHANGED
@@ -1,2 +1,15 @@
1
1
  流行らなかった言語ですが、Ceylonという言語の直和型と合併型がお考えのものに近いと思います。
2
- 特に合併型という概念を持っているオブジェクト指向言語はありそうでなかなかありません。
2
+ 特に合併型という概念を持っているオブジェクト指向言語はありそうでなかなかありません。
3
+
4
+ ----
5
+ (追記)
6
+ ちょっと表層的な回答をしてしまったのでもう少し突っ込んだ内容を。
7
+
8
+ オブジェクト指向について誤解なさっているところがありそうなので、そこをまず述べる必要があります。
9
+ オブジェクト指向プログラミングは、世界のモノを分類したりコードで表現したりするためのもの**ではありません**。
10
+ オブジェクト指向プログラミングで実現したいことはただ一つ、「データ構造が自分自身の操作の仕方を知っている」ことです。
11
+
12
+ 何かの情報を取り扱うためにデータ構造として表現した→構造の仕組みをよくわかっていない人が変な操作をして壊されてしまうのは安全でないし、どう扱ってよいのかわかりにくいのでは分業開発に向かない→データ構造自体がサービスメニューを公開して、そのサービスメニューだけにアクセスできるようにしよう!
13
+ これがオブジェクト指向プログラミングであり、サービスメニューとはすなわち**メソッド**です。
14
+
15
+ で、このストーリーにはクラスの継承なんかでてきません。継承は、オブジェクト指向プログラミングにとって本質ではないのです。まして、モノの分類をするための道具ではありませんというのがごく真面目な答えになります。