先日買った
『C++ クラスと継承完全制覇』を読んでみた。
全体的な構成は以下のとおり。
第1章 『クラスの親戚=構造体』
第2章 『オブジェクト指向プログラミングとクラスの基本』
第3章 『クラスとオブジェクト』
第4章 『カプセル化とコンストラクタ』
第5章 『クラスの継承』
第6章 『メンバ関数のオーバーライドと多態性』
第7章 『オブジェクトの作成と破棄』
第8章 『オブジェクトの動的な作成と破棄』
第9章 『コピーコンストラクタとフレンド関数』
第10章 『その他のテクニック』
読み始めて、一気に第4章の終わりまで読みました。
非常に噛み砕いた説明で、面白いです。参考になります。・
第1章がC言語の構造体の復習で、第2章以降が本題なんですが、
本題では構造体と比較しながらクラスの説明がされているので、
クラスの概念などがとてもスムーズに頭の中に入ってきます。
この著者のC++の本では、
のシリーズ全三巻を会社の研修で使っていたのですが、
正直分かりづらいなぁと感じていました。
(ちなみに"山本信雄"はペンネームみたいです)
が、この『C++ クラスと継承完全制覇』は、今のところ大変良いです。
『VisualC++シリーズ』も、自分で買ってじっくり読めば分かりやすいのかな?
研修時間しか見ないし、会社の本なんで線を引きながら読めないし・・・
とにかく、この『C++ クラスと継承完全制覇』はいいですねぇ〜
8/10(日)のブログ
【日記】 「C言語プログラミング能力認定試験」の申し込み9月7日の試験にあたり、過去問を4回分やってみた。
過去問は既に購入済み。
・過去問(1) = 76点
・過去問(2) = 86点
・過去問(3) = 82点
・過去問(4) = 83点
合格基準としては100点満点中60%らしい。
ということは、結構いい線いっているのでは?
いきなりやってみたのでもっと点数悪いかと思ったんだけど、
そんなこともないのか。
確か、2ヶ月くらい前にやったときは分からない部分が多かったはずなので、
この2ヶ月で多少はプログラミングに慣れてきたのかな?
先日買った
『Javaでなぜつくるのか』に一通り目を通しました。
第1章 『Javaとはそもそも何か』
第2章 『すべてのハードウェアを同じに扱う』
第3章 『すべてのOSを同じに扱う』
第4章 『言語仕様、実行環境ともにオブジェクト指向を追求』
第5章 『メモリー管理を自動化する』
第6章 『企業システムに必要な機能を搭載』
第7章 『オープンテクノロジーである意味』
第8章 『Javaが本当に目指すもの』
Amazonのレビューではイマイチすぎる点数だったんですが、
僕は非常に興味深く読めました。
著者が
「C++からJavaに乗り換えたという経緯を持っている」のと、
僕が
「C言語を少し知っていて、Javaに興味がある」のがマッチしました。
とにかく著者にとってはその乗換えが大成功だったみたいで、
Javaに対して心酔し、愛着を持っている様子が窺えます。
で、本書でその理由を述べていると。
考えてみればこういう本って少ないなぁと思います。
C/C++との比較も実体験に基づくもので大変参考になりました。
(特に第4、5章)
ただ、このボリュームでJavaの全容を網羅するのはやはり厳しいらしく、
第6章で「アプレット」、「サーブレット」、「JSP」、「JSF」、「EJB」と、
かなり忙しく概要の説明が畳み掛けられていました。
第5章からの流れで読んでいて、第6章をしばらく読んでいる最中に、
「あれ、いま何の流れで何の説明を読んでいるんだっけ?」
と考え込んでしまうくらい、このあたりは話の飛躍があった気がします。
それでも読み終わったあとにJavaへの興味は大きくなったし、
「なぜつくるのか」という命題に対しても、しっかりした回答があったので、
個人的には読んでよかったと思います。
オブジェクト指向のメリットも頭の中でぼんやり繋がりだしました。
でも、これだけJavaはいいなぁと思っても、仕事で使うのはC++なんだよなぁ・・・
だめだ、どんどん欲しい本が増えていく。
今日買ったのはこちら、矢沢久雄
『C++ クラスと継承完全制覇』。
人気本の
『プログラムはなぜ動くのか』と同じ著者です。
会社でC++の研修に入ったのですが、まさにこのクラスと継承でつまずいた。
いやいや、まだつまずいてはないけど、つまずかないために本書を購入。
他のC++の本もザッとは見てみたけど、この分野をクローズアップした本がなく、
まぁ、
Amazonのレビューも上々だったため、迷わず購入。
まだ一ページも見てないけど、頑張って読んでいこう。
自発的な興味で読む分には全然苦じゃないけど、
ちょっとプログラム関連の本買いすぎかなぁ・・・
中途半端にしか読んでいない本がかなりの量になってきた。
あぁ〜、やっと終わった。
6月頃から会社に言われていたMCA資格の試験、今日合格しました。
前にこのブログに参考書を買ったことを書いてから、2ヶ月弱。
6/22(日)ブログ
【本】 NRIラーニングネットワーク 『MCA教科書 Application』「気楽にお盆休みを迎えたいなぁ〜」という程度の理由で、
急遽一週間前くらいに今日受験するのを決めた。
で、まぁ微妙な点数だけど合格。
正直、継続的な勉強は全然しなかったし、一夜漬けもしなかった。
結局、何か資格自体に魅力を感じなかったなぁ。
まぁでも落ちたら格好がつかないので、一発合格できて一安心。
良かった良かった。
で、試験に受かったご褒美に日経BP社の
『Javaでなぜつくるのか』を購入。
ちょっと前から欲しいなぁとは思ってたんですが、
これを買ったら絶対MCAの本を読まなくなると思って我慢してました。
Amazonのレビューでは評価が低いですが、
僕はほとんどJavaに関して知識がないせいか、面白いです。
「C言語プログラミング能力認定試験」を申し込みました。
株式会社サーティファイ
http://www.sikaku.gr.jp/js/side3/scon02.html受験すると言っても3級。
本当は2級を受けたいところだけど、9月の試験は3級だけしか試験が実施されない。
実はこないだの6月、同日入社のOと一緒に3級受験の予定だったものの、
僕の方が試験前後の時期に体調を崩し、約1週間の病欠。
当然試験をするようなコンディションではなく、不戦敗を喫したのです。
で、受験したOは3級に合格。
「コンディション調整も含めて受験」と言えば確かにそうなんだけど、
何か釈然としないままだったわけです。
というわけで、再度受験。(いや、試験を受けるの自体は初めてだ)
まぁ、受ければ受かるでしょう。
そして来年1月の2級も受けてみたいなぁ。
Lesson8『クラスの基本』、
Lesson9『クラスの機能』を読みました。
Lesson7『配列』は、ザッと見て「また分からないときに読もう」と思い、省略。
Lesson8 『クラスの基本』
・8-1 クラスの宣言
・8-2 オブジェクトの作成
・8-3 クラスの利用
・8-4 メソッドの基本
・8-5 メソッドの引数
・8-6 メソッドの戻り値
・8-7 レッスンのまとめ
Lesson9 『クラスの機能』
・9-1 メンバへのアクセスの制限 (privateメンバ、pablicメンバ、カプセル化)
・9-2 メソッドのオーバーロード
・9-3 コンストラクタの基本
・9-4 コンストラクタのオーバーロード
・9-5 クラスの変数、クラスメソッド
・9-6 レッスンのまとめ
クラスが出てくると一気にJavaっぽくというか、オブジェクト指向っぽくなる。
会社でやっているC++の研修でもザックリと説明してはもらっていたけど、
あまりにザックリとしすぎていたため、全く理解できていなかった。
(っていうか会社の研修、適当すぎ・・・)
このLesson8〜9を読んで、だいぶ頭に入ってきました。
研修では
「フィールド」や
「メソッド」なんて言い方してなかったし、
これってJava特有の言い方なんでしょうか? (調べりゃすぐ分かることだけど・・・)
この辺、ガッチリ理解して活用方法を覚えていけば、
ものすごく効率的なプログラミングができそうだなぁというのが、
素人目にもなんとなく分かる。
これは確かに、使い方によってはプログラミングの生産性が上がりますねぇ〜。
Lesson6『何度も繰り返す』を読みました。
ループ文に関する部分です。
Lesson6 『何度も繰り返す』
・6-1 for文
・6-2 while文
・6-3 do〜while文
・6-4 文のネスト
・6-5 処理の流れの変更 (break、continue)
・6-6 レッスンのまとめ
あぁ、これも全くC言語と同じだわ、と思ってうっかり見落とすところだった。
for文のサンプルコードを見ていて、何か見慣れない文面だなぁと思ったら、
よく見ると、for文の式の中、
前処理式の部分で変数宣言と初期化がされている。
具体的にどういうことかと言うと、
※Javaでの書き方
for(int i = 0; i < 10; i++)
{
(・・・);
}
という具合に、太文字下線の部分で変数宣言と初期化をしている、と。
「あれ、C言語でもこんなことできたっけ・・・?」と思って試してみると、
やっぱりできない。C言語だと、
※Cでの書き方
int i;
for(i = 0; i < 10; i++)
{
(・・・);
}
てな具合に、少なくともfor文の前に変数宣言をしなくちゃいけない。
でもよく考えたら、こういうループカウンターって使い捨ての場合が多いから、
Javaのように書いたほうが、
より使い捨てだと分かりやすい。地味だけど、これが進化なんだなぁと思いました。
今日は、
Lesson5『場合に応じた処理』を読みました。
つまり、
条件文に関する部分です。
Lesson5 『場合に応じた処理』
・5-1 関係演算子と条件
・5-2 if文
・5-3 if〜else if文
・5-4 複数の条件を判断する (if〜else if〜else)
・5-5 switch文
・5-6 論理演算子
・5-7 レッスンのまとめ
これはもう
全くC言語と同じ。何もつまずくところはありませんでした。
本当にCがベースになっているんだなぁ〜。
『やさしいC』を初めて読んだときは、途中結構詰まりながら読んでいたけど、
あれから4ヶ月、基本であれば違う言語でもスラスラ理解できるようになったことに、
我ながら感心しています。
まぁ、まだ
オブジェクト指向の「オ」の字も出てきていないから、
これから先大きくつまずくかも知れないけど、それが逆に楽しみだなぁ。
今日は
Lesson4『式と演算子』を読んで、サンプルも打ち込んでみました。
Lesson4 『式と演算子』
・4-1 式と演算子
・4-2 演算子の種類
・4-3 演算子の優先順位
・4-4 型変換
・4-5 レッスンのまとめ
これはもう、C言語の内容とほぼ一緒。というか、全く一緒。
JavaがC言語の文法を引き継いでいるのがよく分かる。
逆に言うと、まだJavaらしさが分かる段階ではないようで、
C言語の基本的な文法を知っている人にとっては、
Javaのお作法的な書式になんとなく慣れていくような段階です。
Lesson5以降も、まだC言語との共通文法が続くので、
まだ理解に悩むところはなさそう。