2009-03-01から1ヶ月間の記事一覧

環境に応じたオブジェクトを作成する

Perl › オブジェクト指向 › 環境に応じた振る舞い クラスを少しだけ改造してOSに応じて振る舞いを変更するようにしてみましょう。 1. 環境に応じて振る舞いを変えるポリモーフィズム 環境がWindowsだった場合は、FilePath::Windowsクラスのオブジェクトを作…

継承を使ったポリモーフィズム

Perl › オブジェクト指向 › ポリモーフィズム オブジェクト指向のひとつの特徴にポリモーフィズム(多態性)があります。ポリモーフィズムは、同じように見える記述の振る舞いが異なるという意味で捉えておけばよいでしょう。 1. クラスによって異なる振る舞い…

baseモジュールを使ってクラスを継承する

Perl › オブジェクト指向 › base @ISAを使用したクラスの継承を解説しました。けれども、この方法は何かパッケージ変数を触っているので、ほかの言語で継承の構文を学んだ人から見るとどこか変な感じです。 もうすこし、継承を表現するわかりやすい方法があ…

継承の仕組み

Perl › オブジェクト指向 › 継承の仕組み Perlにおける継承の仕組みを解説します。 1. 継承の仕組み 継承の仕組みは上位クラスに対してメソッドの探索をしているということです。前回のコードをもう一度見てみましょう。 use strict; use warnings; # コンポ…

クラスを継承する

Perl › オブジェクト指向 › クラスの継承 今回は他のクラスを継承する方法について解説します。 他のクラスを継承する 他のクラスを継承してみます。少し注意してほしいことがあります。通常はクラスというものは、ファイル単位で作成します。もしパッケージ…

継承とは

Perl › オブジェクト指向 › 継承とは オブジェクト指向のひとつの特徴に継承があります。 1. 継承の例としてWinwodsのアプリケーションの部品を考える わかりやすい継承のたとえとしてWindowsのアプリケーションについて考えて見ましょう。Windowsのアプリケ…

クラスの雛形

Perl › オブジェクト指向 › クラスのひな型 クラスの雛形を示しておきます。 1. クラスの雛形 以下がクラスの雛形になります。 package Book; use strict; use warnings; # コンストラクタ sub new { my $proto = shift; my $class = ref $proto || $proto; …

アクセサを生成する

Perl › オブジェクト指向 › アクセサ 今回はアクセッサを作成してみましょう。 1. アクセッサとは何か? オブジェクト指向ではデータを直接いじっては駄目です。オブジェクト指向ではオブジェクトに対するアクセスは公開されたメソッドを通じて行うのが正しい…

汎用的なコンストラクタの雛形

Perl › オブジェクト指向 › 汎用的なコンストラクタ 汎用的なコンストラクタの雛形を提示しておきます。汎用的なコンストラクタの雛形はちょっと難しいです。 1. 汎用的なコンストラクタの指針 汎用的なコンストラクタは、クラスから呼ばれたときだけではな…

コンストラクタに引数を渡せるようにする

Perl › オブジェクト指向 › コンストラクタの引数 今回は、コンストラクタに引数を渡せるようにしてみましょう。 1. コンストラクタに引数を渡す。 オブジェクトを作成するときは my $book = Book->new(title => 'Good news', author => 'Kimoto'); という形…

生成したオブジェクトをいじって遊ぶ

Perl › オブジェクト指向 › オブジェクトの中身 作成したオブジェクトをいじって遊んでみましょう。 1. オブジェクトをいじって遊ぶ まずこんな感じで、$book オブジェクトを作成してみます。ここら辺で遊ぶと書いてあるところに、いろいろ記述して遊びます…

コンストラクタの作成

Perl › オブジェクト指向 › コンストラクタの作成 前回は以下のようなクラスの雛形を作成しました。 package Book; sub new { # コンストラクタの実装 } sub title { # アクセッサの実装 } sub author { # アクセッサの実装 } 1. コンストラクタとは オブジ…

クラスの作成 - package

Perl › オブジェクト指向 › 構文 › package クラスを作成方法を解説します。 1. クラスを作成するにはパッケージ宣言を行う。 Perlではクラスを作る特別な構文はありません。パッケージ宣言をすることでクラスを作成します。 package Book; これで、Bookクラ…

さくらインターネットサーバでのCPAN導入を完全に手順化して見た

Perl › 環境構築 (この記事の内容は古くなっています、現在はcpanmを使ってモジュールをローカルにインストールするのが簡単でしょう。cpanmによるローカル環境構築を見てください。) otsuneさんのところでさくらインターネットのレンタルサーバでCPANを使用…

オブジェクト指向の利点 その1 名前の衝突を防ぐ

Perl › オブジェクト指向 › 名前衝突防止 オブジェクト指向で書かれたモジュールは、使いやすいことが多いです。オブジェクト指向で書くのは、便利だからであって「関数型の記述が古い」からではありません。 今回からはしばらく、関数型のモジュールにはな…

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

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

オブジェクト指向プログラミングとは

Perl › オブジェクト指向 › オブジェクト指向プログラミングとは オブジェクト指向とはなんぞやという難しいことを記述する前に、オブジェクト指向で書かれたモジュールを使ってみましょう。 オブジェクト指向で書かれたモジュールの使用方法 オブジェクト指…

IO::ScalarArray - 標準入力の試験で活躍

Perl › モジュール › here 今回は「IO::ScalarArray」を使った標準入力の自動試験について解説します。 1. 標準入力にデータを流し込む方法 標準入力 STDINは、入力用のハンドルであって、プログラムの中からここにデータを書き込むことはできません。 標準…

IO::Capture - 標準出力をキャプチャーする

Perl › モジュール › here 標準出力を試験した場合がときどきあります。対話的なプログラミングを作成したり、print をソースコードの中で使用している関数を試験したい場合などです。 標準出力を取得するには、IO::Captureというモジュール使用します。標準…