■ 本日のお話


■ 作る側か? 使う側か?


■ オブジェクト指向的書き方は特別なのか?


■ オブジェクト指向の何がいいのか?


コード行数の削減・コード可読性の改善・安全性,開発効率アップ

■ スクリプト言語の長所を導入し,その長所を最大化する(1)


オブジェクト指向言語をうまく使えば,思考を処理内容に集中でき, コードの安全性も確保.

■ スクリプト言語の長所を導入し,その長所を最大化する(2)

手続き型言語では,提供される「型」は限定的であった.
開発者が新しい「型」を作成できるのが,オブジェクト指向言語.

一般的なスクリプト言語の長所: ちょっとしたモノを作る時, コードの行数が少なくても,安全なものが作れる

なぜか?

それは,変数で扱える対象物が豊富で, 対象物を扱う上で必要な低レベル処理はエンジンがやってくれて,かつ ユーザが対象物に低レベルアクセスできないから. 一言で言えば,「変数の実装」.

■ スクリプト言語の長所を導入し,その長所を最大化する(3)


言葉の定義


ユーザが覚えるべきAPIが最小限で済む(1)

クラスの継承 (開発者が不統一なAPIを作らないように)


開発者が異なっても,抽象クラスからの継承を使う場合には メンバ関数の引数がバラバラになる事はない.

ユーザは,抽象クラスのAPIさえ知っていれば, 基本的にはすべての派生クラスが利用可能.

ユーザが覚えるべきAPIが最小限で済む(2)

クラスの継承 (具体例)

LIBSPOOのストリーム入出力APIの設計. 開発者が,抽象クラスを継承するクラス(派生クラス)を作る場合, 上記メンバ関数をすべて使えるようにしなければならない.

C言語の標準入出力とzlibとの違い

      /* stdio.h */                 /* zlib.h */
      FILE *fp;                     gzFile fp;
      fp = fopen(filename, "r");    fp = gzopen(filename, "r");
      fread(buf, 1, size, fp);      gzread(fp, buf, size);
      fgets(buf, size, fp);         gzgets(fp, buf, size);
      fclose(fp);                   gzclose(fp);