トップページ⇒tech
988コメント401KB

俺様がJavaを極めてニートを脱出しようともがくスレ

■ このスレッドは過去ログ倉庫に格納されています
000112005/10/21(金) 17:27:12
なあ、どうすればいいと思う?
0002デフォルトの名無しさん2005/10/21(金) 17:28:02
持ってる書籍。
0003デフォルトの名無しさん2005/10/21(金) 17:28:09
専門学校逝けよ。
いいとこ知ってるぞ。
000412005/10/21(金) 17:29:08
>>2
ミスったorz

持ってる書籍
Javaの絵本(アンク)
C++の絵本(アンク)
こんなもん(´・ω・`)
0005デフォルトの名無しさん2005/10/21(金) 17:29:36
ニート脱出したいならJavaよりコミュニケーション能力磨くのがオススメ
0006デフォルトの名無しさん2005/10/21(金) 17:30:05
>>3
専門いくより大学のほうがよくないか?
だが、専門いく金すらない俺。
独学しか無い気がする
0007デフォルトの名無しさん2005/10/21(金) 17:30:46
>>5
(´・ω・`)

ニート脱出が目的じゃなくて一応プログラマという夢が・・・orz
000812005/10/21(金) 17:32:42
一応理解してると思われる(?)範囲
クラス、コンストラクタ、メソッド(関数)
継承がいまいちよくわからん。
0009デフォルトの名無しさん2005/10/21(金) 17:33:29
先ず働けよ。
001012005/10/21(金) 17:38:21
>>9
現場で働けるぐらいの技術を付けてからでも・・
0011デフォルトの名無しさん2005/10/21(金) 17:38:28
まずはバイトでレジ打ちでもやれ。
その程度の経験もない奴は使い物にならん。
職場をサークルか何かの延長だと思いやがる。
そして何よりこういうのはマ板でやれ。
001212005/10/21(金) 17:41:25
誰かなんかJavaでの課題出してくれorz
0013デフォルトの名無しさん2005/10/21(金) 17:46:27
>>12
プログラム書けるだけの奴なんか掃いて捨てるほど居るから・・・
0014デフォルトの名無しさん2005/10/21(金) 17:48:29
俺もまぜてまぜて
10日覚えるJava入門教室という本買ったけど、一人でやってても面白くないよね。
俺もニートだからいいよね。
0015デフォルトの名無しさん2005/10/21(金) 17:49:26
プログラム始めようとすんなら年齢も大事だぞ。
20代後半ならもう無理
001612005/10/21(金) 17:50:09
まだ19なんだorz
001712005/10/21(金) 17:50:42
今年20だが・・
0018デフォルトの名無しさん2005/10/21(金) 17:53:44
なら職安でプログラムめざせよ。
初心者でも使ってくれる。独学でやるより早い。
俺も専門学校では何もできなかったけど仕事でする様になったら嫌でも覚える
0019デフォルトの名無しさん2005/10/21(金) 17:53:46
大学池
0020デフォルトの名無しさん2005/10/21(金) 17:57:34
やる気があれば独学でも十分早いと思うが.
プログラミングは8年くらいやってるが,
最初の1ヶ月くらいである程度のものは作れるようになったぞ.
そりゃまあド汚いプログラムだったけど.
002112005/10/21(金) 18:01:36
class Book{
String title;
String genre;

void printBook(){
System.out.println("タイトル:" + title);
System.out.println("ジャンル:" + genre);
}
}

class Nove1 extends Book{
String writer;

void printNov(){
printBook();
System.out.println("著\t者:" + writer);
}
}

class Magazine extends Book{
int day;

void printMag(){
printBook();
System.out.println("発 売 日:" + day + "日");
}
}

002212005/10/21(金) 18:02:10
class Bookshelf{
public static void main(String[] args){
Nove1 nov = new Nove1();
nov.title = "しおりの大冒険";
nov.genre = "ファンタジー";
nov.writer = "アンク";
Magazine mag = new Magazine();
mag.title = "月刊Javaの絵本";
mag.genre = "コンピュータ";
mag.day = 20;
nov.printNov();
System.out.println();
mag.printMag();
}
}
002312005/10/21(金) 18:03:58
本そのままのソースだけどこの程度なら理解できる。
ただsuperがいまいちよくわかんね
002412005/10/21(金) 18:05:07
俺正直数学の知識がやばいんだが・・・影響ある?
0025デフォルトの名無しさん2005/10/21(金) 18:08:11
Javaさえマトモに分かってないのが分かりました。
printNov()とかMagとか無駄。
あとコンストラクタの引数つかえ。
0026デフォルトの名無しさん2005/10/21(金) 18:10:06
>>10
プログラムやったこと無いようなやつでも平気で入ってくるから気にするな。
0027デフォルトの名無しさん2005/10/21(金) 18:11:56
研修があるからプログラミングの知識は必須じゃない。
それよか社会経験。これない奴は使えない。
使えない雑魚が奇跡的に生き残ってクサレ上司に進化するからヤメレ。
0028デフォルトの名無しさん2005/10/21(金) 18:13:55
やっぱりスーパーのレジ打ちのバイトして人妻の一人も食えない奴は使えない
0029デフォルトの名無しさん2005/10/21(金) 18:15:23
>>24
この程度なら数学とか関係ないけど,
この道で生きていくなら理工系大学1〜3年程度の数学は知ってる方が良い.
あと数理論理やグラフ理論なども.
003012005/10/21(金) 18:16:30
Book(String t, String q, String w){
title = t;
qenre = q;
writer = w;
}
Noval new Noval("しおりの大冒険","ファンタジー","アンク");

こんな感じ?
その前にサブクラスからコンストラクタってできるんだろうか?
間違っててすごい勢いで叩かれる気がする(´・ω・`)
003112005/10/21(金) 18:19:31
>>25
つまりprintNovとMagメソッドをprintBook()に全部入れてしまえという認識であってるのかな
だとするとひとつのクラスで終わってしまう気がするが・・・
むしろサブクラス作る必要なんてないソースだよねこれ(´・ω・`)
003212005/10/21(金) 18:21:42
>>29
そ・・そうか、マジで数学は絶望的なレベルなんだがw
やり直すとしたら小学校高学年の算数からになりそう(´・ω・`)
003312005/10/21(金) 18:23:32
>>14
かなり歓迎します。
003412005/10/21(金) 18:28:42
>>30
やばい、ミスってる
Book()×
Noval()○
0035マイク ◆yrBrqfF1Ew 2005/10/21(金) 18:41:25
何歳だ?
003612005/10/21(金) 18:43:01
>>35
0037マイク ◆yrBrqfF1Ew 2005/10/21(金) 18:45:45
なんだ一個下か
003812005/10/21(金) 18:45:48
>>36
またミス
Shift+Enter押す癖がついて困るorz

>>35
>>16-17

ところでsuperを使うと子クラスから親クラスのフィールドとかメソッド参照できると
本に書いてるけど、別にsuper使わなくても参照できなかったっけ?
確認してないからわからないけどそういう認識でいいのかな
0039デフォルトの名無しさん2005/10/21(金) 18:48:34
>>38
オーバーライドしてると子クラスからは親のメソッドが見えない
それを超えて見るときにsuperを使う
004012005/10/21(金) 18:51:00
>>39
('A`)・・・?

オーバーライドでの参照はできるのにわざわざsuper・・・
うおおおおおおおおおおおおおお落ち着け俺
004112005/10/21(金) 18:52:21
たとえば
class A{
string namae;
int age;
void print(){
System.out.println(namae);
004212005/10/21(金) 18:53:16
>>41
またShift+Enter('A`)・・・
ちょっとエディタで書いてきます
004312005/10/21(金) 19:02:14
class A{
String namae;
int age;
void print(){
System.out.println(namae);
System.out.println(age);
System.out.println(tekitou);
}
}

class B extends A{
String tekitou;
void print(){
super.print();
}
}

class Ab{
public static void main(String[] args){
B AB = new B();
AB.namae = "NEET";
AB.age = 19;
AB.tekitou = "もうすぐ自殺";
AB.print();
}
}
コーディングしてる途中に気づきました。
というかオーバーライドというのをよく理解してなかった・・。
この場合親クラス、子クラス共に同じprint()というメソッドがあって
それを見分けるためのsuper。親クラス参照ならsuper.print();
子クラス参照ならそのままprint();(この場合は意味無いけど)という事なのかな
間違ってたら存分に叩いてくれorz
0044デフォルトの名無しさん2005/10/21(金) 19:05:44
そこまではOK
じゃあそれを使う場合って思いつく?

などと深みに嵌めてみる
004512005/10/21(金) 19:10:21
>>44
上の親クラスAのprint();メソッド内のSystem.out.println(tekitou);
をサブクラスBのprint()メソッド内に移植して、また新しくサブクラスC作り
tekitouだけを表示させたい場合に使う?
あってるかわからないというか日本語能力がない(´・ω・`)

004612005/10/21(金) 19:12:43
class A{
String namae;
int age;
void print(){
System.out.println(namae);
System.out.println(age);
}
}

class B extends A{
String tekitou;
super.print();//変更点
void print(){
System.out.println(tekitou);
}//ここまで
}

class C extends A{//追加クラス
print();
}
class Ab{
public static void main(String[] args){
B AB = new B();
AB.namae = "NEET";
AB.age = 19;
AB.tekitou = "もうすぐ自殺";
AB.print();
}
}
こんな感じのときでつか?
004712005/10/21(金) 19:16:23
class A{
String namae;
int age;
void print(){
System.out.println(namae);
System.out.println(age);
}
}

class B extends A{
String tekitou;
super.print();//変更点
void print(){
System.out.println(tekitou);
}//ここまで
}
class Ab{
public static void main(String[] args){
B AB = new B();
AB.namae = "NEET";
AB.age = 19;
AB.tekitou = "もうすぐ自殺";
AB.super.print();
AB.print();
}
}
メインメソッドの内容変更とBクラスの配置換えるだけでよかったかも
動作確認してないんでエラーでまくりかもしれません('A`)
004812005/10/21(金) 19:56:15
やっぱり>>47じゃエラーでますね
0049デフォルトの名無しさん2005/10/21(金) 20:24:34
せめてエラー出ない状態で貼れよ
005012005/10/21(金) 21:42:34
finalはCで言う#defineなのかな
0051ホスプロ ◆HOTsoUpxjY 2005/10/21(金) 21:42:56
>>1
PGは年中不足してるので、片っ端から会社巡りすればどっか引っ掛かる。
一時期ほどじゃなくても組み込みやWEBや携帯での需要は必ずあるはず。
修羅場に経歴詐称の派遣でぶち込まれたら、便所の窓から逃げて来い。
その時はスーパーのレジ打ちやればいい。だめでもともと、ニートなんだから。
しかしもうちょい準備したいなら基本情報のJAVA取れば気休めにはなる。
005212005/10/21(金) 21:44:50
finalはともかく未だにstaticの概念がつかめない
だめぽ
005312005/10/21(金) 21:47:52
>>51
基本情報のJavaは実践的でかなり難しいと聞くが('A`)
でも、それくらいじゃないと現場じゃ使えんのだろうなぁ。

経歴詐称の派遣とかマジであるのか。ガクブル
0054デフォルトの名無しさん2005/10/21(金) 21:49:44
      r;ァ'N;:::::::::::::,ィ/      >::::::::::ヽ
.      〃  ヽル1'´        ∠:::::::::::::::::i
       i′  ___, - ,. = -一   ̄l:::::::::::::::l
.      ! , -==、´r'          l::::::/,ニ.ヽ
      l        _,, -‐''二ゝ  l::::l f゙ヽ |、 ここはお前の日記帳じゃねえんだ
        レー-- 、ヽヾニ-ァ,ニ;=、_   !:::l ) } ト
       ヾ¨'7"ry、`   ー゙='ニ,,,`    }::ヽ(ノ  チラシの裏にでも書いてろ
:ーゝヽ、     !´ " ̄ 'l,;;;;,,,.、       ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{   __)`ニゝ、  ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ ,  な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
0055デフォルトの名無しさん2005/10/21(金) 22:12:06
>>52
一つのクラスについてオブジェクトをたくさんnewして、
staticな変数とそうでない変数の値を色々書き換えてみろ。
そしたら違いが分かるから。

>>54
せめてズレてないAA貼れよぉw
顔もわからんAAじゃ煽りにならんよw
0056デフォルトの名無しさん2005/10/21(金) 22:12:48
とりあえずさ、初心者歓迎のところのバイトや派遣でも初めて見るのをおすすめするよ。
正社員でもいいけど、労働組合もなく残業代が出ないところだと社員になっただけ損をする。

20代とか、すぐやめたいっていうなら派遣やアルバイトがお勧め
0057デフォルトの名無しさん2005/10/21(金) 22:14:42
>>53
> >>51
> 基本情報のJavaは実践的でかなり難しいと聞くが('A`)
おれが基本情報のJavaを受けたときはめったくそ簡単だったが。
5分で解けたぞ。というのは4年前の話だが。

それより、他の問題のほうが難しかった。


0058デフォルトの名無しさん2005/10/21(金) 22:22:30
>>51
> >>1
> PGは年中不足してるので、片っ端から会社巡りすればどっか引っ掛かる。
不足してる割には給料安すぎだよな。
正社員なのに派遣やバイトより安く使われるなんてイタイイタイ。

最近、バイトの募集みても、携帯電話開発では最低時給が950円なんてとこあってさ、
なぜかWebデザイナより給料安いんだよ。ありえね。
webデザイナは時給2000〜3000円ってところあるのに、
この格差は一体何事?っていいたい。この会社完璧にプログラマをなめきってるわいって思ったわい。

ある会社ではプログラマでも時給2000〜3000いくことはあるが。

この話をきくと、派遣よりアルバイトのほうが給料がたかいじゃないかって怒る香具師がいるが
しったことかと。
0059デフォルトの名無しさん2005/10/21(金) 22:24:20
>>52
Java FAQでぐぐれ
0060デフォルトの名無しさん2005/10/21(金) 22:29:19
>>55
ずれてないしwwww
0061デフォルトの名無しさん2005/10/21(金) 22:30:28
>>58
>携帯電話開発では最低時給が950円
レジ打ちしてた方が…
0062デフォルトの名無しさん2005/10/21(金) 22:53:44
でも数学苦手だとやっぱりキツいんじゃないかなぁ。>PG
数学の何が苦手なのかにもよるけどな。
算数的な計算ならまだなんとかなるが
論理とか形式が苦手だとすると結構ツライよ?
0063デフォルトの名無しさん2005/10/21(金) 22:55:45
指さえついてりゃ問題無し。
006412005/10/21(金) 23:05:22
ふむ・・・
数学は公式とか全然頭に入って無い感じ
やっぱ数学ちゃんと勉強しとくべきだったなー('A`)
0065デフォルトの名無しさん2005/10/21(金) 23:24:54
>>64
そりゃ公式は暗記するもんじゃなく基本原則から組み立てて作るもの
というちょっとした発想の転換が必要だな。
実は自分で公式を作ることと証明をすることプログラムを作ることの間には
対応関係があることが理論的には分かっている。
(専門用語では「Curry-Howard(カリー・ハワード)対応」という。)

ちなみに公式を暗記する必要があるのはテストには時間制限があるからで、
暗記したほうが早く解けて点取りに有利ということからきている。
(プログラムで言えばその場で計算する代わりに配列かなんか使って
前もって計算済みの値を使って一覧表にしておくようなものだ。)
つまり数学は本来は暗記モノではない。暗記しておくとテストで有利なだけだ。

また喩えて言えば掛け算を九九でやるのが暗記方式。
掛け算を足し算の繰り返しで定義どおり計算するのが「その場で計算」方式だ。
でプログラミングという作業は基本的に後者に近い。
後者のような手順を考えてそれを計算機に教え込む作業といっていい。

まぁ、高速化のために前者のテクニックを利用することもあるがその場合でも
暗記するのは人間ではなくコンピュータだし、
人間であるプログラマはその表をコンピュータに作らせるために
後者の方法で表を作るようにコンピュータに指示するのが仕事。
0066デフォルトの名無しさん2005/10/21(金) 23:56:23
>>65
「そりゃ」まで読んだ。
0067デフォルトの名無しさん2005/10/22(土) 00:02:09
>>65
「そのとき光恵の秘所に」まで読んだ。
0068デフォルトの名無しさん2005/10/22(土) 00:30:30
>>65
「仕事。」まで読んだ。
0069デフォルトの名無しさん2005/10/22(土) 00:58:56
Javaで募集しててVBやらせる会社って、どうよ?
0070デフォルトの名無しさん2005/10/22(土) 01:22:06
>>69
仕事あんだから良いだろ
0071デフォルトの名無しさん2005/10/22(土) 01:22:22
VB.NETなら別に問題ないんじゃない?
0072デフォルトの名無しさん2005/10/22(土) 06:20:07
>>57
2年前受けたときは10分かかった。
年々難しくなっているの・・・か?
それでも子供だましのような問題ばっかりだったぞ。
0073デフォルトの名無しさん2005/10/22(土) 10:55:50
>せめてズレてないAA貼れよぉw
この文面から「少なくともゴシックは使って無い」と見た。
007412005/10/22(土) 12:58:37
今抽象メソッド、インタフェースに入ってるんだけどややこしい('A`)
007512005/10/22(土) 13:00:24
インタフェースは定数と抽象メソッドしかメンバになれない
継承とかとごちゃごちゃになってもう('A`)('A`)('A`)?
007612005/10/22(土) 13:08:47
interface Greet{
void greet();
}

interface Talk{
void talk();
}

class Morning implements Greet,Talk{
public void greet(){
System.out.println("おはよう");
}

public void talk(){
System.out.println("いい天気ですね。");
}
}

class Meet{
public static void main(String[] args){
Morning morning = new Morning();
morning.greet();
morning.talk();
}
}
例題プログラムだとこういう風に書かれてるんだけど。このくらいならクラスで一括でまとめたほうが・・・
正直インタフェースとか使う場面って今後出てくるんだろうか(´・ω・`)
007712005/10/22(土) 13:14:36
それとMorningクラス内のメソッドgreet(),talk()の先頭にpublicつけないとコンパイルエラーになるのは何故だろう
publicはどこからでもアクセスできるっていう認識でやってるんだけど
interfaceはクラスより弱いからpublicつけろって事なのかな。
正直優先順位なんて覚えてねー・・・

/*エラーメッセージ*/
Meet.java:10: Morning の greet() は Greet の greet() を実装できません。スーパー
クラスでの定義より弱いアクセス特権 (public) を割り当てようとしました。
void greet(){
^
Meet.java:14: Morning の talk() は Talk の talk() を実装できません。スーパークラ
スでの定義より弱いアクセス特権 (public) を割り当てようとしました。
void talk(){
0078デフォルトの名無しさん2005/10/22(土) 14:01:50
interfaceにつけたpublicはinterface自体が外から見える事をあらわしてるだけだ
publicでないinterfaceなんかも作れる
メソッドの前のpublicがクラスやインターフェースの外からアクセスできる事を表してる

ちなみにinterface内にpublic/protectedでないメソッド・フィールドを作る事は無意味
この場合正常にオーバーライド出来ていないと思った方が良い
0079デフォルトの名無しさん2005/10/22(土) 15:16:13
Javaにおける実装より,オブジェクト指向でのインターフェースの考え方を先に学ぶと
Javaのinterfaceが如何に有用な機能であるかが分かりやすいと思う.
で,それを説明しようと思ったけど長くなりそうで書く気力が無いのでパス.

余談だけど,C++ではJavaのようなinterfaceが無いので抽象メソッドだけを定義したクラスを
多重継承してインターフェースをシミュレートすることになる.
008012005/10/22(土) 21:07:39
何か色々煮詰まってたので気分転換にC++の勉強(現実逃避)してました('A`)
ここわかりやすくていいです。(入出力ヘッダがiostreamだからちょっととっつきにくいかもしれないけど)
http://www.asahi-net.or.jp/~yf8k-kbys/

>>78,79
レスサンクス(実は半分も理解できてないけど・・)
何とか理解できるようにやります(´・ω・`)
0081デフォルトの名無しさん2005/10/22(土) 21:59:04
今までの勉強時間どれぐらい?
008212005/10/22(土) 22:03:01
>>81
これまでは半年ぐらいグダグダとやってました('A`)
0083デフォルトの名無しさん2005/10/22(土) 22:08:45
俺なんて経験2ヶ月ぐらいなのに
現場でヒーコラプログラム書かされてる
お陰様でオブジェクト指向なんてない
巨大クラスが3つ出来ましたとさ( ´・ω・`)
008412005/10/22(土) 22:30:36
>>83
('A`)
でも、現場に出てる分勉強になっていいじゃまいか
0085デフォルトの名無しさん2005/10/22(土) 23:11:28
>>84
簡単にいうと>>83みたいな奴はアーキテクトとしては使えないが、IT土方として有能と言う評価になる
次も同じような泥沼かマ板で悲鳴を上げてる連中の蠢く現場に放り込まれる
0086デフォルトの名無しさん2005/10/23(日) 23:10:11
>>1よ立て逃げはやめてくれよ
0087デフォルトの名無しさん2005/10/24(月) 13:33:44
>>79
というか歴史的には逆だ。interfaceをクラスでシミュレートというより
元々クラスの制限版がinterface。
理論上もinterfaceのはクラスの特殊なものと考えていい。

オブジェクト指向の基本である「データの隠蔽」によって
クラスにはそれ自身、またはその子孫のクラスのインスタンスのメソッドが利用する
内輪向けの「インターフェース」と一般外部向けの「インターフェース」ができる。
(protectedを考えるときは内輪向けをさらに二つに分けて考えているわけだ。
Javaの場合はさらにパッケージ内向けの「インターフェース」を表現する
デフォルト・アクセスというのもある。)
内輪向けの「インターフェース」のほうがデータの配置・表現など
実装の詳細により深くかかわるから当然複雑になる。
よってその継承をキチンと実装するメカニズムの実現はより大変になる。
(脱線だがこれはデータ隠蔽も一種のポリモルフィズム
と捉えることもできるという考え方。
同一のオブジェクトにクラスの内と外を表す二つの型=「インターフェース」が
結び付けられていると考えるわけ。)

C++のような多重継承は理論上可能であるし、
モデルを表現する能力を考えた場合有用でもあるが、
必ずしもその実現は簡単ではないしプログラマにわかりやすいとも限らない。
そこでJavaでは外部向け「インターフェース」だけを表現する、
クラスよりも簡単な仕組みとしてinterfaceを作った。
そして多重継承はinterfaceだけに制限することにした。
この決定によっていくらか表現力を失う代わりに
より実装しやすく簡潔で分かりやすいようにしたわけだ。
これは実用上、多くの場合はそれで十分だという観察に基づいている。
0088デフォルトの名無しさん2005/10/24(月) 13:47:16
>>87
またしても長いので「というか」まで読んだ。
0089デフォルトの名無しさん2005/10/24(月) 13:52:04
>>87
「従順に後ろを向いた彼女の柔らかでボリュウムのある双丘を割り開き」まで読んだ。
0090デフォルトの名無しさん2005/10/24(月) 13:57:52
>>40
オーバーライドって元々「上書き」ってなニュアンスだ。
祖先のクラスの定義に子孫のクラスの定義を上から書いて塗りつぶす感じ。
塗りつぶしてない部分の定義は先祖のクラスのままで、
塗りつぶした定義を参照するには一時的に「上塗りを透かして」見るわけ。
その「透かして見る」ことをあらわすキーワードがsuper。
0091デフォルトの名無しさん2005/10/24(月) 14:01:57
>>82
それだけじゃなくてその半年間に
一日どのくらいの程度の密度でやってきたかってことも重要。
0092デフォルトの名無しさん2005/10/24(月) 17:25:21
>>87
データ隠蔽はオブジェクト指向以前からのもんだろ.
オブジェクト指向の基本はオブジェクトの型(インターフェース)を規定して
それを介してメッセージを伝達することだと思っていたんだけど.オレは.
0093デフォルトの名無しさん2005/10/24(月) 17:27:10
後,既存の多くの言語はクラス定義がインターフェースの定義を伴う辺りや,
クラス継承が実装継承とインターフェース継承を分けていない辺りとか,
クラスが機能を持ちすぎていて美しく無いと思う.
もちろんプログラマが意識的に扱えば実用上は問題ないのだけれど.
0094デフォルトの名無しさん2005/10/24(月) 17:48:35
多重継承に関しては,オレは容認派.
もちろんroleやruleの記述には集約を用いるべきで,多重継承を使う局面と言うのは少ないけど,
それでもたまに多重継承を用いればすっきり書けるという局面に出会うことはある.
加えて,Multicast Patternなどでは多重継承を利用しているし,
ダイヤモンド継承のような曖昧さの問題に気をつければ,
多重継承は十分に便利で実用的な機能であると思う.

Javaの入門書ではinterfaceに関して,多重継承の代わりに使えるよー程度にしか
言及していないものが結構あるのが残念.
Javaのinterfaceはもっとオブジェクトの分類に積極的に利用されるべきだと思う.
0095デフォルトの名無しさん2005/10/24(月) 18:02:31
>>94
だってそんな設計すると動きがもっさりするんだもん
0096デフォルトの名無しさん2005/10/24(月) 18:02:38
つけたしつけたし書いてたら流れがむちゃくちゃな文章になってしまった
0097デフォルトの名無しさん2005/10/24(月) 18:12:01
>>92
オブジェクト指向プログラミングはそれ以前の多くのアイディアを統合してできている。
私が書いたようなデータ隠蔽も、ポリモルフィックな型システムも、
そして>>92の言うメッセージ駆動(と抽象データ型も少し入ってるな)もそのうちの一つ。

で>>87は特にポリモルフィックな型の視点を意識して書いた。

>>93
インターフェースと実装を別に分けて記述した場合両者の整合性を維持するのが
*人間にとって煩雑*になるからだと私は理解している。
残念ながら理論的に美しいことが必ずしも実用的ではない。

より詳細に言えば、
両者を分離することは確かに混乱を防ぐのに有利だ。
が、プログラマに対して二つに分けた記述の整合性を取らせ続ける
というコストを払わせることになる。
それが正当化されるのはそれだけのコストを払っても維持する価値があるような
比較的公共性の高いインターフェースに限られるのじゃないかと思う。
しかし言語で基本的なクラスの仕組みとしてそれを強制してしまうと、
オブジェクト指向で数多く使われる内部的なクラス、補助的なクラスに対してさえ
そのインターフェース定義コストの支払いを強制することになり実際的でない。

(C++で*.h*.ccが分かれていることでさえすでに若干面倒なのにw
脱線ついでに言えば、C++/Cの*.hファイルはモジュール分割の有用性というより
コンパイラの処理能力から分割コンパイルが必然だったために生まれたものを
インターフェースの定義の仕組みとしても使うようになったもの。)

だから現状の多くのオブジェクト指向言語の選択は美しくはなくても実際的だと思う。
0098デフォルトの名無しさん2005/10/24(月) 18:42:35
…ってまぁ、>>1から結構逸脱した話題になってる気はするがw
0099デフォルトの名無しさん2005/10/24(月) 21:12:37
「語りたくてしょうがないやつがいるようだな。

こういうやつらに新人教育とかをさせると、まだ体の小さいヒナに大量の餌を
ぐいぐい押し込むような教育をして、新人君のやる気を殺すんだろうな、と想像する。

でもここは2chだから、テキトーに読み飛ばす自由がある。いぇい。」

……とは言わないけどさ、ちょっと文章長いよ。むずかしいし。
0100デフォルトの名無しさん2005/10/24(月) 21:45:18
つうか、こんな所でオブジェクト指向論を語るより本丸でやれって気がする
0101デフォルトの名無しさん2005/10/24(月) 23:04:41
実務屋の言うことも分かるんだけどね,オレもC++は大好きだし.
でも論争始めると理論に行っちゃうんだ.
とりあえずオレもスレ違いになってきてる気はしてたんで,ここらで去るよ.
スマソ
■ このスレッドは過去ログ倉庫に格納されています