クラス - みる会図書館


検索対象: 月刊 C MAGAZINE 1990年10月号
25件見つかりました。

1. 月刊 C MAGAZINE 1990年10月号

えば , クラス C がクラス A とクラス B を継承 す。ただし , st 「 eam ライプラリは古い C 十十 ラスがあります。 stream b uf クラスは , スト するならば , との互換性を保っためにあるのて、 , ューザ リームのバッファリングやハンドリングを は新しい iostream ライプラリを使用したほ します。 ios クラスは , st 「 eambuf のポイン タをもち , 次のように istream クラスや うがよいて、しよう。 ost 「 eam クラスを派生します。また , istream Turbo C 十十 Ver. 1 . 0 のストリームに クラスと ost 「 eam クラスは iost 「 eam クラスを は , streambuf と ios のふたつの低レベルク TabIe 3 Turbo C 十十て使用できる演算子 演 算子 class C . public A, public B { のように記述します。 添え字 関数 , カッコ , 初期化 メン八選択 ( 直接メンノヾ ) メンノヾ選択 ( 間接メンバ ) インクリメント テクリメント ポインタ ( アドレス ) ポインタ ( 間接参照 ) 単項プラス ( 正符号 ) 単項マイナス ( 負符号 ) コンプリメント ( 補数 ) 論理否定 オプジェクトサイズ 除算 剰余 乗算 シフト演算子 ( 左シフト ) シフト演算子 ( 右シフト ) 関係演算子 ( 左不等 ) 関係演算子 ( 右不等 ) 関係演算子 ( 等価左不等 ) 関係演算子 ( 等価右不等 ) 関係演算子 ( 等価 ) 関係演算子 ( 不等価 ) bit 幅 EX-OR 演算子 bit 幅 AND 演算子 論理積 論理和 三項演算子 代入演算子 ( 単純代入 ) 代入演算子 ( 乗算代入 ) 代入演算子 ( 除算代入 ) 代入演算子 ( 剰余代入 ) 代入演算子 ( 加算代入 ) 代入演算子 ( 減算代入 ) 代入演算子 ( 左シフト代入 ) 代入演算子 ( 右シフト代入 ) 代入演算子 ( ビット積代入 ) 代入演算子 ( ビット差代入 ) 代入演算子 ( ビット和代入 ) コンマ演算子 ( 順次 ) 生成 ( 記憶割り当て ) 削除 ( 割り当て解除 ) スコープアクセス / 解決 クラスメンバへのポインタの逆参照 クラスメンバへのポインタの逆参照 純粋仮想関数と抽象クラス 基底クラスが派生クラスのインタフェイ スのために用意する , 処理が記述されない 仮想関数を純粋仮想関数といいます。純粋 仮想関数は , virtual VOid purevirtualfunc( )=O; のように , 0 て、初期化して宣言します。 このようにして宣言された純粋仮想関数 を少なくとも 1 個もっているクラスを抽象ク ラスと呼びます。抽象クラスはほかのクラ スの基底クラスとしてしか使うことがて、き ません。つまり , 抽象クラスのオプジェク トを作ることはて、きません。ただし , 抽象 クラスのポインタを宣言することはて、きま す。 , こて , 抽象クラス B を直接の基底クラス として , クラス B から派生したクラス D を考 えてみましよう。このとき , クラス B のそれ ぞれの純粋仮想関数 pvf は , クラス D におい て , pvf に定義を与えるか , または pvf を純粋 仮想関数として宣言しなければなりません。 ストリームクラス sizeof C 十十のストリームは , ューザが定義した クラスに対するすっきりした入出力の手法 を提供しています。 Turb0 C 十十 Ver. 1.0 て、は C 十十 Ver. 1.2 まての st 「 eam ライプラ リと , C 十十 Ver. 2.0 の拡張された ios tream ライプラリの両方をサポートしていま 80 CMAGAZINE 19 10 new delete

2. 月刊 C MAGAZINE 1990年10月号

特集 0 十十とオプジェクト指向 その行の終わりまて、をコメントと見なしま す。 演算子 について説明します。 キーワード Turbo C 十十 Ver. 1.0 における C 十十関 連のキーワードを Fig. 2 に示します。この中 て、 catch は , 例外処理のためのキーワード て、 , 現在は予約だけのようて、す。これらの キーワードはオプションて、無効にすること がて、きます。 コマンドラインコンパイラ tcc て、は , この オプションは一 A て、す。こうすると , ANSI キーワードのみが使用て、きます。 Fig. 3 クラスの形式 class くクラス名〉 p rivate : 〃非公開メンノヾ変数の宣言 〃非公開メンバ関数の宣 protected. 〃保護メンバの変数宣言 〃保護メンノヾの関数宣 Turbo C 十十 Ver. 1.0 て、使用てきる演算 子は , Table 3 のとおりてす。 Table 3 の最 後の 3 つの演算子 ( : C 十十て、追加された演算子て、 , クラスメンバ へのアクセスのための演算子て、す。 •new", *delete" は , 空き記憶領域の確 保演算子と解放演算子て、す。また , ヾ > > ′′は , 従来のビットシフト くく〃 演算に加えて , C 十十ては , ストリームクラ ス iost 「 eam の出力演算子と入力演算子とし て使用されます。 C 十十て、は C て、いうところの構造体にデー protected これらの演算子は この部分には , 保護メンバが宣言されま タと関数をバンドルすることによってカプ をのぞいて , クラスオプジェクトに対して , す。保護メンバは , 同一クラスのメンバ関 セル化し , データの隠蔽化 , データの抽象 多重定義することがてきます。多重定義と 数と , そのクラスから派生したクラスのメ 化を実現しています。これをクラスと呼び は , 演算子をクラスにおいて再定義するこ ンバ関数て、のみアクセスてきます。 とにより , その演算子にユーザ定義の新し ます。クラス中のデータをメンバ変数 , 関 数をメンバ関数と呼びます。クラスは次の い意味をもたせる機能てす。このとき , 演 public 算子の優先順位は変わりません。また , 新 この部分には , 公開メンバが宣言されま しい演算子を定義したりすることはて、きま す。公開メンバ関数は , クラスオプジェク せん。さらに , 単項演算子を二項演算子と private トが定義されたスコープ内ならどこからて この部分には , 非公開メンバが宣言され して定義することや , その逆に , 二項演算 もアクセスて、きます。 ます。非公開メンバは , 同一クラス内て、宣 子を単項演算子として定義することもてき C 十十て、は , st 「 uct はすべてのメンバが公 言されるメンバ関数て、のみアクセスて、きま ません。 開されたクラスとして扱われます。 TurboC 十十 Ver. 1.0 ては , C 十十の古 す。 クラスは Fig. 3 のように宣言されます。 いバージョン (Ver. 1.2 以前 ) てはてきなかっ なお , ヾ〃〃はコメントの始まりを表し , •new", *delete" も多重定義すること がてきます。これによって , たとえば String ( 文字列 ) 型のような , オプジェクトサイズ が不定のクラスのメモリ管理をくふうする ことがてきます。 public: = 言 宣宣 〃公開メンバの変数 〃公開メンバの関数 クラス 3 つの部分にわかれます。 Fig. 2 Turb0 C 十十における C 十十関連のキーワ ード ⅵ u 引 protected public template this inline new operator pri vate catch class d elete friend 多重継承 多重継承とは , 簡単にいえば , 複数の基 底クラスから継承されたクラスを作成する ことてす。これは , C 十十 Ver. 2.0 てつけ 加えられたおもな機能のひとってす。たと 特集 C 十十とオプジェクト指向 79

3. 月刊 C MAGAZINE 1990年10月号

特集 0 十十とオプジェクト指向 派生します。 class class class class IOS; public ostream; iOSt 「 eam : public istream, ostream : vi 「 tual public ios; istream : virtual public ios; TurboC 十十 Ver. 1.0 には , TabIe 4 に 挙げた 4 つの標準ストリームがあります。 ファイルストリームクラス streambuf クラスは , 3 つのクラスを派生 します (TabIe 4 参照 ) 。派生されたクラスの それぞれの内容については , TabIe 5 を見て ください また , istream は ifstream を , ostream は ofstream を , iost 「 eam は fstream を派生しま す。これらのストリームクラスを用いて , ファイルとの入出力を行うことがて、きます。 以上 , おおまかに TurboC 十十 Ver. 1.0 の機能を , オプジェクト指向の観点から見 てきました。 Turbo C 十十をプログラミング言語とし て見た場合 , Turbo C 十十は , Turb0 C Ver. 2.0 との互換性を失わずにオプジェクト指向 の概念を取り入れたコンパイラて、あるとい TabIe 4 Turbo C 十十の標準ストリーム 今後の展望 えます。そのため , 従来からある Turbo C のライプラリに加えて , C 言語て、プログラミ ングしていた人て、あれば , 今まて℃て、書いて きたサプルーチンをそのまま使用すること がて、きます ( つまり , 今まて、の資産がムダに ならないということて、す。もちろん , ソー スを再コンパイルをする必要があるのて、 , ライプラリをそのまま使うことはて、きない て、しようが ) 。 また , C 十十の新しい機能を使い , より優 雅に記述することもて、きるて、しよう OC 十十 は , より大規模なプログラムの開発に向い ています。近年のソフトウェアの肥大化を 考えても , C 十十は C に取って代わり , プロ グラム開発の主流になるのて、はないて、しょ うか。 Turbo C 十十は , その担い手となる 能力を十分にもっているといえます。 C 十十は C 言語から進化した言語て、す。そ して , 現在も進化しつづけています。現在 , AT & T のベル研究所て、は , C 十十 Ver. 3.0 の開発が進められているようて、す。これに は , パラメータっきクラスや例外処理の機 能が導入されるようて、す ( Turbo C 十十 Ver. 1.0 のキーワードとして予約されている catch はこの例外処理のためのものて、す ) 。今後 , Turbo C 十十 Ver. 1.0 も , 本家 ( ? ) のバー ションアップに合わせてバーションアップ を行っていくて、しよう。 将来 , C 十十のライプラリは , クラスライ プラリになるといわれています。 TurboC 十十 Ver. 1.0 には , 独自のクラスライプラリが 付属しています。また , 現在 UN Ⅸの世界て、 は , いくつかのクラスライプラリが発表さ れています。しかし , これらのクラスライ プラリが標準化されるのはまだまだ先の話 になりそうて、す。 最後に , 現在 , Turbo C 十十 Ver. 1.0 は , IBM-PC シリーズ上て、のみ動作します。 しかし , PC ー 9801 シリーズなどへの移植も順 調に行われているようなのて、 , PC ー 9801 版 TurboC 十十 Ver. 1.0 は , 早ければ年末ぐ らいに発売されるのて、はないて、しようか。 発売が待ち遠しいかぎりて、す。 [ 参考文献 ] [ 1 ] BorIand lnc. , 、、 Turbo C 十十 Get ting Started ′′ , 1990 年 [ 2 ] BorIand lnc. , 、、 Turbo C 十十 User' s Guide ′′ , 1990 年 [ 3 ] BorIand lnc. , "Turbo C 十十 Pro grammer's Guide" , 1990 年 [ 4 ] BorIand lnc. , 、、 Turbo C 十十 Library Reference ′′ , 1990 年 [ 5 ] B. Stroustrup, 、、 The C 十十 Pro gramming Language", Addison WesIey, 1986 年 [ 6 ] S. C. Dewhurst, K. T. Stark, Tro gramming in C 十十〃 , Prentice HalI, 1989 年 [ 7 ] 小山裕司 , 正畠克俊「 C + + プログラ ミング入門」『 C マガジン』 1990 年 1 月 ~ 7 月号 TabIe 5 st 「 eambuf クラスから派生するクラス 標準ストリーム cout cerr cl og 意 標準入力 標準出力 標準工ラー出力 ce 「 r の完全バッファリング版 派生クラス filebuf strstreambuf stdiobuf 内 特集 C 十十とオプジェクト指向 81 メモリ上の文字配列との入出力に用いられる 書かれたプログラムと混合させる場合にのみ使われる 日 LE 構造体に対する入出力をサポートする。これは , CC ファイル記述子を通しての入出力をサポートする

4. 月刊 C MAGAZINE 1990年10月号

特集 0 十十とオプジェクト指向 論理的な存在て、ある。実際は , 連続した記 情報隠蔽機能をもった構造体と定義されて において用いられるクラスと , オプジェク いる。逆にいえば , C 言語て、いう構造体は , ト指向の世界 ( というよりも ,Smalltalk-80 憶領域にしかすぎないのて、あるが , それを の世界というべきか ) て、用いられるクラスと 構造体として扱うことにより , さまざまな 情報隠蔽を機能として陽にもたないクラス は , 若干その意味合いが異なっている。 型をもったデータの集合体として扱うこと なのて、ある。 SmaIItaIk-80 のクラスは , オプジェクトの クラスと構造体は , メンバの集合体て、あ を可能としているのてある。 るという点て、はまったく同じて、ある。クラ 機能や型の定義という意味をもつが , C 十十 しかし , これは , その構造体のアドレス て、用いられるクラスは , オプジェクト自身 スの定義に関しても , 通常の構造体とほと により , 内部情報に対してアクセスし得る を指すという意味ももっている。詳細は後 ただしメンバに んど変わるところがない 可能性をももっている。つまり , 論理的な 述するが , C 十十にはオプジェクトの実体を は , 変数のほかに , 関数へのエントリて、は 存在て、ある構造体には , つねに誤操作の可 なく関数を直接含むことがて、きるという点 示すインスタンスという用語がなく , SmaI 能性がつきまとうのて、ある。そこて、 , この が , 標準の C 言語と相違するところて、ある。 ltalk ー 80 にいうクラスとインスタンスの区別 構造体の , 各記憶領域に対する参照や操作 これは , 「オプジェクト = 手続き十記憶領域」 がないのて、ある。 などは , すべて構造体のメンバとして含ま ということを明確に表現するために , 構造 れている手続をとおして行うのてある。 次号への展望 体というデータ構造に対して , C 十十におい 情報の隠蔽 て導入されたメカニズムて、ある。 さてこのようにして , 構造体の内部情報 このことにより , 変数に対する参照と , 関数への呼び出しを区別することなく行え の隠蔽が実現されるわけてあるが , 実は単 こうして , 内部の情報に対するアクセス る。そのうえ , このメンバ中の関数はメン 純な情報隠蔽は標準 C 言語においても提供さ 手段を限定することにより , メンバとして バの変数にアクセスするために定義される 定義されている記憶領域の値は構造体の外 れている。 たとえば , static の宣言を行った変数は , ものてあり , 後述する変数の可視性に関す 部から直接操作されることがなくなり , 誤 FiIe 単位て、の可視性しかもたないし , 関数の る属性と組み合わせることによって , メン 操作から保護されることになる。このよう 内部て、定義されるテンボラリ変数も , その バの変数に対するより完全な情報隠蔽機能 に , 内部の情報を外部に遮断して保護する ことを情報隠蔽と呼ぶ。情報処理工学上非 関数の外からは参照することがて、きない を実現て、きる。この関数を , C 十十て、はメン 常に重要な概念て、ある。 にもかかわらず , なぜ C 十十においてはクラ バ関数と呼ぶ。 スというメカニズムを導入しているのて、あ このクラスの各メンノヾは , 型のほかに可 このように , 手続きと記憶領域を内部の 視性に関する属性をもっということが重要 ろうか。 メンバにもち , 限定された手段によっての それは , ファイルや関数といった単位て な点て、ある可視性については , C 十十に関 み内部情報の参照が可能な情報隠蔽機能を はなく , オプジェクトという論理的な単位 する重要な論文て、ある「 An Overview of もっ構造体がオプジェクトとなるのてある。 て、情報を管理することにより , オプジェク C 十十』 ( 日経エレクトロニクス , 1987 年 2 ー 前述したオプジェクト指向の大きな目的 トは , 情報が隠蔽された外からの顔と , 実 9 所載「プログラミング言語 C 十十の概要」 ) のうち , プログラムの一部の変更をほかに 装情報をもった内からのふたつの顔をもつ およばないように局所的なものにするとい ても述べられている。 ことがてきるからてある。このオプジェク 簡単にいえば , クラスと呼ばれる構造体 う機能は , 外部のモジュールに対して情報 トの二面性は , 次号て述べるメッセージと について , そのメンバが参照される範囲を を隠蔽することを意味している。この機能 いう概念とともに , 抽象表現という , より 外部に公開されているものと非公開のもの はより高度に実現される。 強力な機能をプログラムに付加することに に区別し , クラスの外からは公開されてい 先ほど , オプジェクトは , 「記憶領域と手 なる。そこて次号からの連載ては , メッセ るメンバにしかアクセスすることがてきず , 続を融合させた論理的な存在てある」と定義 ージ式を構成するもうひとつの要素てある 非公開のメンバには公開されている手続き したが , より正確には , 「情報隠蔽のメカニ メッセージについて , 述べることにする。 ( メンバ関数 ) をとおして , 間接的にしか参 ズムをもった , 記憶領域と操作手続の融合 照することがてきない , ということを意味 体てある」といえるて、あろう。 編注 : 「オプジェクト指向への招待」は本 するのてある。 そうした , オプジェクトを実現するため 号に引き続きⅡ月号より連載いたします。 なお , オプジェクト指向の世界ては , ク に , C 十十ては , クラスと呼ばれる特殊な構 ご期待ください。 ラスという用語がよく用いられるが , C 十十 造体を導入している。 こにいうクラスは , 特集 C 十十とオプジェクト指向 63 0 1 一

5. 月刊 C MAGAZINE 1990年10月号

Fig. 1 Tu 「 bo C 十十のクラスライプラリ Object* Association* Sortable* E 「「 0 「 Container Collection* AbstractArray* DoubIeList( 双方向リスト型 ) A 「「 ay ( 配列型 ) SortedArray HashTable B a g— Set Dictionary ( 連想配列型 ) ( 八ッシュテープル型 ) ( 集合型 ) ( 集合型 ) List( リスト型 ) String ( 文字列型 ) BaseTime BaseDate Stack( スタック型 ) Queue ( 待ち行列型 ) Deque ( 両方向待ち行列型 ) Containerlterator ListElement DoubleListElement Arraylterator Doublelterator Li st lte rator 注 1 クラス名の右上に * がついてるものは抽象クラスである 注 2 Bag クラスと Set クラスの違いは Bag クラスが要素の重複を許すのに対し , Set クラスは許さない点である リのリファレンスて、す。 ところて、 , C 言語を知っているプログラマ が , C 十十を学ぶときの障害となるのは , C 十十がオプジェクト指向という概念のうえ に存在していることだと思います。そのた め , いわゆる「習うより慣れろ」という学習 法があまり役に立たず , まずは , 「オプジェ クト指向」という概念をしつかりと理解する 必要があります。 しかし , このオプジェクトという目に見 78 CMAGAZINE 19 10 えないものに対する技法が , なかなか難し く , 理解しにくいことは確かて、す ( いちど理 解すると , 非常に機能が高く , オプジェク ト指向の虜になってしまうのて、すが・・・ また , C 十十には , さなざまな技術 , 機能が 豊富に詰まっているのて , 「群盲 , 象をなて る」のことわざもあるように , やもすると本 質を見失いかねません。その点 , ①の Tretting Started" は , C 十十の本質をきっちり押さ えて書かれているのて , 初心者にはわかり やすいのて、はないて、しようか。 Turbo C 十十 Ver. 1.0 の言語仕様 先にも述べましたが , TurboC 十十 Ver. 1.0 は , AT & TC 十十 Ver. 2.0 の機能を完 全実装しています。 以下に , TurboC 十十 Ver. 1.0 の言語仕 様のうち , C 十十 Ver. 2.0 に関係する部分

6. 月刊 C MAGAZINE 1990年10月号

S い : t i 0 ll 3 Turbo C 十十徹底チェック③ Turbo C 十十とオフジェクト指向 小谷野富男 本セクションでは , Turbo C 十十かいかにオプジ ェクト指向を実現しているかという点を中心に考 察し , さらに , AT&T C 十十 Ver. 2.0 との互換性 について , 細かく検証していく。 今年 6 月にアメリカて、発売された , IBM 版 Turbo C 十十 Ver. 1.0 を , オプジェクト指 向に注目して見ていきます。ただし , て、はオプジェクト指向の概念の説明や C 十十 の一部の機能の説明は省略させていただき ます。 AT&T C 十十 Ve 「 . 2. O の機能を完全実装 TurboC 十十 Ver. 1.0 は , ANSIC に準 処しているとともに , AT&T C 十十 ( 以下 C 十十 ) の Ver. 2.0 の機能を完全実装してい ます。 C 十十は , オプジェクト指向の概念を取り 入れて , C 言語から進化していった言語て , AT & T のベル研究所て、 B. Stroustrup によっ て開発されました。 C 十十 Ver. 1.0 は 1984 年にリリースされました。そして , 1986 年 76 CMAGAZINE 19 10 和「 bo C 十十 er. 1.0 の特徴 には Ver. 1.1 に , 1987 年には Ver. 1.2 にな 昨年 Ver. 2.0 が発表されました。 には , Ver. 1.0 の機能まて、しか書かれてい り , います。 ストリームクラス (iostream) もサポートして (ist 「 eam, ostream) も , C 十十 Ver. 2.0 の Ver. 1.2 のふたつのストリームクラス められましたが , Turbo C 十十て、は , C 十十 Ver. 2.0 て、は iost 「 eam というクラスにまと つにわかれていたストリームクラスが , C 十十 Ver. 1.2 まて、は , istream と ost 「 eam のふた をすべてサポートしています。また , C 十十 TurboC 十十 Ver. 1.0 は , これらの機能 多重定義 , ほかの機能が追加されました。 なかった、、 new", 、、 delete 〃などの演算子の スメンバへのポインタ , Ver. 1.2 て、はて、き 承 , 純粋仮想関数 , static メンバ関数 , クラ されました。 C 十十 Ver. 2.0 て、は , 多重継 ed が追加され , クラスに保護メンバが導入 C 十十 Ver. 1.2 て、は , キーワード p 「 otect いるものには , 参考文献 [ 6 ] があります。 ません。 C 十十 Ver. 2.0 について書かれて ネイテイプコンヾイラ AT & T が提供している C 十十は , C 十十の 上記の問題はすべてクリアされているとい 環境上に強力なデバッガを備えているのて、 , ラて、す。また , Turbo C 十十は , 統合開発 械語コードを生成するネイテイプコンパイ Turbo C 十十は , C 十十コードから直接機 る を変えるために , デバッグが難しくな ・トランスレータが関数名などの識別子 対応がたいへんである 使用する場合 , バージョンアップへの ・ほかのメーカーの C コンノヾイラとともに コンパイルのスピードが遅くなる ・コンバイル処理のステップが多いので , のような問題があります。 する立場からすれば , トランスレータは次 タて、す。しかし , C 十十て、プログラミングを コードを C のコードに変換するトランスレー

7. 月刊 C MAGAZINE 1990年10月号

特集 0 十十とオプジェクト指向 TabIe 1 C 十十処理系の比較 C 十十処理系 形式 対応する C 十十のバージョン グラフィックスライプラリ その他の特徴 えるて、しよう。 Turbo C 十十 ネイテイプコンノヾイラ 2 .0 あり 統合開発環境をもつ オーノヾレイ IDEA C 十十 インタブリタ 1 .2 ( 旧 M ー PC ) あり 統合開発環境をもつ Zortech C 十十 ネイテイプコンバイラ 1 .0 ( PC ー 9801 ) なし 独自のオプジェクト形式 Miwa C 十十 トランスレータ なし MS-C または Turbo C が必要 MS ー DOS 上て、動作するおもな C 十十処理 系を比較した一覧表 ( Table 1 ) を作成しまし クラスライプラリ たのて、 , 参考にしてください。 クラスライプラリ TabIe 2 Turbo C 十十の標準クラスライプラリ このクラスライプラリは , それぞれにヘ 1 参照 ) 。 をルートにして階層構造になっています ( Fig. を除いて , 抽象クラス ( 後述 ) て、ある Object プラリは , 非常に豊富て、す。これは , 一部 Turbo C 十十 Ver. 1.0 独自のクラスライ まとめました。 覧表と関連するヘッダファイルを Table 2 に のソースコードも付属しています。その一 イルとして提供されており , 当然ながらそ ます。 AT & T 互換のクラスは , ヘッダファ と独自のクラスのライプラリが付属してい TurboC 十十には , AT & T 互換のクラス 複素数型 BCD 型 ファイルストリーム型 ストリーム型 ッダファイルとソースファイルが提供され ています。また , すて、にコンパイルされた オプジェクトのライプラリ ( スモールメモリ モデルのみ ) も , 提供されています。このク ラスライプラリの説明は , フロッピーディ スク上のドキュメントファイルに収められ ー = マニュアル ています。 TurboC 十十のマニュアルは , 以下の 4 冊 のて、す。 ュアルも非常によくて、きた , すばらしいも したが , この Turbo C 十十 Ver. 1.0 のマニ Turbo C Ver. 2.0 のマニュアルもそうて、 て、構成されています。 ① ② ③ Getting Started Useds Guide Programmeds Guide ヘッダファイル iostream. h stream fstream. h bcd. h complex. h . h ④ Library Reference ①の、、 Getting Started" は , 入門書て、 す。インストールの方法の説明から始まっ て , 統合開発環境の入門 , C, C 十十の入 門 , 統合開発環境てのデバッグ手法と続い ていきます。 この中て、 , 章番号て、いうと , 5 章と 6 章が C 十十についての入門的な解説になっていま す。この解説はていねいに書かれており , プログラムの実例も豊富に盛り込まれてい ます。また , このプログラム例は , フロッ ヒ。ーディスクに収録されており , プログラ ムの動作を実際に実行して確かめながら , テキストを読み進むことがてきます。 ②の、、 User's Guide" は , 統合開発環境 の使い方 , およびコマンドラインコンパイ ラ , ユーティリティの説明書て、す。 ③の、、 Programmer's Guide" は , Turb0 こて、は , C 十十の言語仕様の解説書て、す。 BNF 記法を用いて言語の文法を規定してい ます。また , 言語のセマンティクス ( 意味 ) についてもくわしく記述されています。 そのほか , ランタイムライプラリ , C 十十 のストリーム , クロスリファレンス , メモ リモデル , 浮動小数点演算 , オーバレイ , ビデオ ( グラフィックス ) 関数 , アセンプラ とのインタフェイス , 工ラーメッセージな どの情報も載録されています。 ④の "Library Reference" は , ライプラ 特集 C 十十とオプジェクト指向 77

8. 月刊 C MAGAZINE 1990年10月号

のに , 、、 Outofmemory 〃のエラーを発生し ような文を単純に展開すると List 2 のように コンパイルて、きなかった。 main 関数から ふたつの文になってしまう。 List 1 の場合て、は , このようにふたつの文 、、 ( pow ( fl , 3 ) - ... 〃の 1 行を削除するとエラ ーを外すことがて、きたが , 原因はよくわか に展開されてしまうような文が , ひとつの Turbo C 十十には , 汎用のクラスライプ らない。 Turbo C 十十の構文解析に問題が 文しか書けない位置 ( 最初の for 文に続く一 ラリがソースっきて、含まれている。このク あるのかもしれない。反対に , List 5 に示し 文 ) にあるために生じたものと思われる。 List たプログラムは , TurboC 十十以外の処理 ラスライプラリは , 、、 Object" という名前の 3 のようにふたつめの f0 「文をプロックて、囲ん 系て、はうまく処理て、きなかった。 C 十十て、 抽象クラスを項点とする単純継承による階 て、やるとエラーを外すことがて、きた。 は , 0 ポインタて、 delete することが許されて 層構造をもっており , Sma Ⅱ talk の構造とよ Turbo C 十十以外の処理系てはこのプロ く似ている ( 継承を用いず , 独立したクラス いる。しかし , List 5 のように仮想化された ックづけを暗黙のうちに処理してくれるが , TurboC 十十はやらないようだ ( 編集部注 : ディストラクタをもっクラスの 0 ポインタを の集合体て、ある ZortechC 十十のクラスライ これは AT&T C 十十 Ver. 2.0 の仕様に準 プラリとは対象的て、ある ) 。 delete すると , MIWA C 十十や Zortech また , このクラスライプラリを使用した 拠しているそうて、す ) 。 C 十十て、は暴走してしまった。また IDEA サンプルプログラムも含まれているのて、 , C 十 + て、は実行時工ラーを発生し , 実行を中 ふたつめのエラーはサンプルプログラム クラスの使い方やオプジェクト指向の考え (smplexpr) の main 関数て、生じた (List 4 ) 。 断してしまった。 Turbo C 十十だけは正常 のプログラムは複雑て、もなく大きくもない 方を学ぶよい教材になるだろう。 終了した。 クラスライプラリ List List 1 よっなっ 0 -4 LO 1 : main() for ( i nt i = 0 : i く 10 : i + + ) 3 : for( 4 : int j=o; j く 10 : j 十十 for( int j=o; j<IO: j + 十 ) : ↓ for( j=0; j く 10 : j + + ) : List LiSt 1 : VOid main() / / 省略 3 : 4 : expr fl = x + y + z, f2 ーー x + y + 2 , f3 = x-y + 2, f4 ー X 十 y—z; (pow(fl. 3 ) ー pow(f2, 3 ) ー pow(f3, 3 ) ー pow(f4, 3)). print(); 5 : 6 : / / 省略 1 : main() for( int i=0, i く 10 : i + + ) { 3 : for ( 4 : int j=o; j く 10 : j 十十 5 : List List List 1 : struct A { 2 : virtual 4 : 5 : ma i n ( ) 7 : A *p = 0 : 8 : del ete P , 1 : #include く stdio. h> 2 : void main() 4 : i nt i : for( j=o; j く 1000 : j + 十 ) 5 : printf( "XdYn" 6 : 0 0 0 1 よ 0 0 ー 0 74 CMAGAZINE 19 10

9. 月刊 C MAGAZINE 1990年10月号

新登 0 十十 阨「 sion2-0 For More Advanced Serious Programmers C 十十は、 AT@Tベル研の BJa 「 ne St- 「 oust 「 up 博士により C の後継言語として設 計されたオプジェクト指向型の汎用プログラ ミング言語です。プログラミング言語として 広く普及している C の機能を全て継承しなが ら、更にクラス概念や仮想関数、多重継承な どの、数々の新機能を盛り込み、今や C に代 わる言語として全世界を席捲しつつあります。 MIWA C 十十は、 AT & T よりリリースされ ている AT & T Standa 「 d C 十十をベースに ミワシステムズコンサルティングが国産の PC 、 WS 向けにチューンアップを施した最新のプロ グラミング言語です。先進のオプジェクト指向 プログラミングのサホート、 C との互換性など の特徴はそのままに、さらに日本語処理関数に も対応しており、 90 年代のオプジェクト指向 型ソフトウェアの開発に欠かせない数多くの 新機能が拡張されていま魂 ・ MIWA C 十十の全製品か C 十十のソース・レ ベルで互換性あり。 ・コメント、リテラルに日本語の使用が可能。 ・日本語 FEP との共存が可能。 ・ MIWA C 十十に標準添付のライプラリの他 に、対応する C コンノヾイラの標準ライプラリ に含まれる関数も使用可能。 ・ MS - DOS のシステム・コールをサポート。 (MS-DOS 版 ) ・ Mic 「 0S0 代 C 準拠の日本語処理関数が使 用可能。 (NEWS 版 , 2 ロ 5 ロ G 版 ) お待たせしました′ Ve 「 sione. 0 新発売 そして、 AT@T C 十十日 el.2. O 準拠の完全日本語対応 C 十十、 MIWA C 十十 Ve 「 sion2.0 か発売となりました。 ・導出クラスか直接ーっ以上の基底クラスを持つような多重継承か可能。 ・非 C 十十コードとのリンクを明示的に宣言可能。 ・ ANSI C との互換性を向上させるためにキーワード volat ⅱ e か追加。 ・ static. const. および volatile なメンヾ関数を宣言可能。 ・純粋仮想関数を用いて、抽象クラスを宣言可能。 ・演算子 new と d ete を多義化して、クラスことに宣言可能。 ・テストラクタを明示的に呼び出せる。等々・ MIWA C 十十のラインアップ MS—DOS 版統一価格 59.800 円 Mic 「 osoft C V40 & V5. ] 対応版・・発売中 ・新発売 / SONY NEWS 対応版 TIJ 日 BO C VI. 5 & V2.0 対応版・・・・・発売中 SONY RISC NEWS 対応版・ 新発売 / N E C EWS ー 4800 対応版・ 新発売 / 日立 2 ロ 50G , 2 ロ 5 ロ / 32 対応版・・発売中 日立 2050G, 2 ロ 5 ロ / 32 ( 開発予定 ) ・ LJNIX は AT@ T 社の開発した OS で魂・ Mic 「 osoft 0. MS - DOS は、 Mic 「 osoft 社の製品で魂・ TIJRBO C は、 Borland te 「 nation 引社の製品で魂 ※ NEWS 版のユーサ登録がお済みでない方は、お早目にユーザ登録カードをこ返送願いま魂バージョン・アップのこ案内をお送りいたしま魂 ※日 BS を開局しました。こ質問、こ相談等お気軽にどうそ。 ( M ー WA - NET , 045 ー 321 ー 675 ス 1200 / 2400bps MNP5) IJNIX 版 IJNIX 版 〒 221 横浜市神奈川区台町 10 ー 15 株式会社ミワシステムズコンサ丿レティンク Tel. ( 045 ) 31 と 5418 ( 代表 ) ・ ( 045 ) 312 ー 2589 ( テック・サポート )

10. 月刊 C MAGAZINE 1990年10月号

50 ″Ⅳ a 祀厄 c わ” 0 わ g / ー N T E R N A T ー 0 N A [ = ナーシリーズ ■主催 : ソフトウェアテクノロジーインターナショナル■後援 : 米国大使館・米国商務省 クオ、 ) が わジェクト指向設計と C 十十プログラミング 講師 : アリス L. サルペーター監管 : ノートン日 . グリーンフェルド 目的 く自慢の講師陣〉 わジェクト・オリエンテッド・テクノロジー 講師 : アリス L. サルペーター監修 : ノートン日 . グリーンフェルド 目的 3 2 日 日 オプジェクトオリエンテッドテ刀ロジーの概念を理解していただきます。同 オプジェクトオリエンテッドな思考方法にもとずくソフトウェア設計の初歩を テクノロジーがソフトウェア開発にどういうインパクトを・学えるのか、また同テク 習得して頂きますさらに C 十十という言語の単にシンタックスだけでなく、実 ノロジーによるソフトウェア開発のアプローチに比べてどう違うのかという点に 際にプログラミング例を学んで項くと共にプログラム開発を行ないます ついて知るとともに、同テク / ロジーの利点と同時にどういうリスクが存在するの C 十十以外のオプジェクト指向言語をお使いの方にも充分参考になります かについても理解します。さらに同テクノロジーを応用するためのツール等の 現状についても把握していただきます。 ノートン R. グリーンフゴレド Ph. D. カリフォルニア工科大学にて学士、 修士、博士号取得。 M 等で AI 研 究に従事、 APEX 社副社長を経て 現在インプリメンツ社社長。 対象となる方 ・システム設計を担当するエンジニアの方 ・ソフトウェアプログラマの方 ・オプジェクトオリエンテッドテクノロジーを使用したシステム開発に興味を お持ちの方 対象となる方 ・ソフトウェア開発部門の管理職の方 ・システム設計を担当するエンジニアの方 ・ソフトウェアプログラマの方 ・コンヒ。ュータ関連製品のマーケティングセールスを担当する方 ・その他同テク / ロジーについて体系的な理解を得たい方 前提知識 C 言語とオプジェクトオリエンテッドテクノロジーの基本的な知識 ( 本セミナ ーの前に弊社主催のオプジェクトオリエンテッドテクノロジーセミナーを受 講される事をおすすめします。 ) 3 前提知識 プルース M. ヘンダーソン プリンストン大学経済学部卒業。ハ ーバード大学にて MBA 取得。 ータおよびソフトウェアの基本的な知識た コンヒ。ュ 形式 お二人に一台の割りで実際のコンヒ。ュータを使いながらの実習と遂時通訳 の講義形式とで行ないます。 講義内容 ・ C 十十プログラミング ・クラスの定義・クラスメンバー関数・クラスデータメンバー ・各クラスの中での自身の参照・コンストラクタとデストラクタ ・メンバーのクラスオプジェクト・インヘリタンス・生成されるクラスとクラスの階層 ・多義性 ( ポリモフィズム ) ・データアプストラクション及びカプセル化とデータの隠蔽 ・ヴァーチャル関数とレイトバインテョング・フレンド関数 ・オペレータと関数のオーバーローテング・インライン構造 ・メモリー割り付けの際の新規と削除 ・オプジェクト指向設計 ・機械実習 式 講義形式で遂時通訳にて行ないます。 講義内容 オプジェクトオリエンテッドテクノロジー ( 以下 O ー 0 テクノロジー ) はなぜ 必要なのか O-O テク / ロジーによるシステム分析 O ー O テクノロジーによるシステム設計 O ー O テク / ロジ ーの導入 0- O テ刀ロジーのもとでのソフトウェアライフサイクル O ー 0 プログラミング 0 ー () プログラミング言語 O-O プログラミング環境とツール スケジュール アリス L. サルペーター デルアビブ大学でコンピュータサイ 工ンスにて学士、修士課程修了。イ スラエル軍にて AI チームの上級イン ストラクターを務め、現在当社専任イ ンストラクター ① 10 月 3 日水 ~ 4 日木 / 10 : 00 ~ 16 : 30 ② 11 月 7 日水 ~ 8 日木 / 10 : 00 ~ 16 : 30 ③ 12 月 5 日水 ~ 6 日木 / 10 : 00 ~ 16 : 30 ※ 9 : 30 より受付を開始いたします。 ※昼食 1 時間と午後 15 分の休憩がございます。 受講料 / ¥ 96 , 00 ロ スケジュール ① 9 月 25 日火 ~ 27 日木 / 10 : 00 ~ 16 : 30 ② 10 月 23 日火 ~ 25 日木 / 10 : 00 ~ 16 : 30 ③ 11 月 20 日火 ~ 22 日木 / 10 : 00 ~ 16 : 30 ④ 12 月 18 日火 ~ 20 日木 / 10 : 00 ~ 16 : 30 ※ 9 : 30 より受付を開始いたします。 ※昼食 1 時間と午後 15 分の休想がございます。 受講料 / ¥ 145 , ロロロ 甫水裕 東京大学工学部卒業。現在メイトリ ックス ( 株 ) 取締役開発部長。 CAD /CAM 、マッヒ。ングシステムの開発 に豊富な経験を持つ。 ※昼食及び資料代を含みます。 ( 消費税は別途加算されます。 ) ■お申込み方法 ます電話にて空席の有無をこ確認ください。御案内および参加申込書をお送り致しま魂 ■主なこ参加企業 ( 順不同、敬称路 ) ・ ( 株 ) 日立製作所・日本アイピーエム ( 株 ) ・ ( 株 ) キャティックス・日本ディジタルクイップメント ( 株 ) ・ NTT ( 株 ) ・キヤノン ( 株 ) ・京セラ ( 株 ) ・ ( 株 ) インテック・横河電機 ( 株 ) ・三菱原子力工業 ( 株 ) ・ ( 株 ) リコー・シャープ ( 株 ) ・三洋電機 ( 株 ) ・日産自動車 ( 株 ) ・東京電力 ( 株 ) 他多数 ソフトウェアテクノロシインターナショナル 代表プルース M. ヘンダーソン 〒 1 12 東京都文京区白山 2 ー 25 ー 10 キングヒルズ白山 401 号 TEL03 ( 5689 ) 3536 FAX03 ( 5689 ) 3534 ( 5689 ) 3536 ( 担当 / 上野・田中ま 0 ・セミナーに関するお問合せは・・・・・・谷 03 ※昼食及び資料代を含みます。 ( 消費税は別途加算されます。 ) マーク E. ペッカム MIT 修士ノ、一バード大学 MBA 。 米国一流企業 0 滝ーケティングコン サルタントとして 20 年に渡り活躍。米 国のハイテク産業の動向に精通し ている。