m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

Perlでクラスを作成してみたけど…

やりかた間違ったと思うけどわからん

ちょっと今回は静的メソッドのみのモジュールのみ
インスタンスもやるけど「相棒」みてたら時間がなくなった。

構成

.
+   lib
    +   Bus.pm
    +   Car.pm
+   sample.pl

ソース

実行ソース
#!/usr/bin/env perl

use strict;
use warnings;
use lib 'lib';

use Car;
use Bus;

# Carモジュールの結果
print Car::name() . "\n";
print Car::run() . "\n";

# Busモジュールの結果
print Bus::name() . "\n";
print Bus::run() . "\n";
Carモジュール
package Car{
        # プラグマ?
        use strict;
        use warnings;

        # ==================================
        # メソッド
        # ==================================
        # 車の名前
        sub name{
                return "車の名前";
        }

    # 走る
        sub run{
                return "走ります";
        }

}

# 1または真になる情報ならなんでもいいみたい...
1;
Busモジュール
package Bus{

        # プラグマ?
        use strict;
        use warnings;

        use base qw(Car);

        # ==================================
        # メソッド
        # ==================================
        # 車の名前
        sub name{
                return "バス";
        }

        # 継承…じゃねーよな    (;´∀`)
        sub run{
                # ちょっとまてこればおかしい…
                return Car::run();
        }
}

# 1または真になる情報ならなんでもいいみたい...
1;

結果

[root@localhost ~]# perl sample.pl
車の名前
走ります
バス
走ります
[root@localhost ~]#

問題点

子クラスで親クラスの関数を使用したかったけどなんかエラーが出て実行出来なかったからとりあえず隠蔽化して対応してみる。
クラス用のモジュールの「Mouse」にちょっと触れて動きを確認するしかない。
また、動的メソッドではどうなるかも確認しないと。

まとめ

Perlではオブジェクト指向の書き方にはちょっといくつか気をつけなければいけないことがありそう。
オブジェクト指向用のモジュールがあるのでちょっと調査してみたほうが良いみたい。
親、子、孫クラス間の継承ができるような感じの実装をできるようにしたいのでこれはやる必要がありそう。

おまけ

Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)

Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)

届いた!

軽く読んだ限りでの感想としてはこの本だけではWebアプリの公開は難しいかも…
ただ、それをサポートする情報が網羅されています。(例:書籍やURL、Webサービスなど…)
細かい情報はないので細かい情報などは別途、専門の書籍を購入する必要があります。

Webアプリケーションを作成して、公開~運用までの流れを理解するには適しています。
PHPPerlRubyの言語の情報も掲載されています。