Perlゼミ

  1. Perl
  2. オブジェクト指向
  3. 「もの型」と「ひと型」

「もの型」オブジェクトと「ひと型」オブジェクト

オブジェクト指向プログラミングにおいてオブジェクトは「もの」ではありません。 オブジェクトには、「もの」型オブジェクトと、「ひと」型オブジェクトの2種類があります。

1.「もの」型オブジェクト

「もの」型オブジェクトとは、「もの」を表現したオブジェクトです。以下は、本オブジェクトですが、属性としてtitle( タイトル )とprice( 価格 )を持ちます。

my $book = Book->new(title => 'a', price => 2300);

このような「もの」型オブジェクトはコンストラクタで、タイトルや価格などの本の性質を設定します。「もの」型オブジェクトは、ハッシュに非常に近いものだと考えればよいと思います。もの型オブジェクトは構造化されたデータを表現します。

my $book = {title => 'a', price => 2300};

2.「ひと」型オブジェクト

「ひと」型オブジェクトとは、「ひと」を表現したオブジェクトです。以下は、ファイルを解析するオブジェクトです。属性として、encoding( 円コーディング方法 )とerr_raise( 解析に失敗した場合に例外を発生させる )を持ちます。

その後に、parseというファイルを解析するメソッドが呼ばれることが予定されています。

my $file_parser = FileParser->new(encoding => 'utf8', err_raise => 1);
$file_parser->parse($file);

このような「ひと」型オブジェクトは、コンストラクタで、その後に使用するメソッドが使用するオプションを指定することが多いです。「ひと」型オブジェクトは、関数に非常に近いものだと考えればよいと思います。

my $opt = {encoding => 'utf8', err_raise => 1};
parse_file($file, $opt);

3. クラスの設計の指針

  1. まず作りたいものが「もの」型オブジェクトなのか「ひと」型オブジェクトなのかを意識すること。
  2. データを表現したい場合は「もの」型クラスを作る
  3. オプションを指定してメソッドを呼び出したい場合は「ひと」型クラスを作る
  4. 利便性が勝る場合は、「もの」型が「ひと」型と混在するハイブリッドクラスになる場合もある。
Perlの書籍
  • 業務に役立つPerl

    ログ解析など日本語を含むテキスト処理の実践!
    この私、Perlゼミの作者が執筆しています。
    ご購入、口コミ歓迎。
  • Perlの書籍 »
自己紹介
木本裕紀

「こっ、こしゃくな。
このPerオタクめ~!」

Twitter
フォロー、いいね、リツート、コメント歓迎

Youtube

チャンネル登録、いいね、コメント歓迎

kimoto.yuki@gmail.com
応援メッセージ、質問、間違い報告歓迎

木本システム株式会社
ご紹介キャンペーン実施中です。契約金額の10%をご紹介料としてお支払い。

(例)30万円のシステム開発委託契約が、1年続いたら、36万円がもらえる!!!