1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

オブジェクト指向の再利用部品群の概要

Posted at

はじめに

オブジェクト指向がもたらした再利用部品群の、
クラスライブラリやフレームワークについて理解する。

クラスライブラリ

 汎用的な機能を持つクラスを集めたもの。

 クラスライブラリには2種類あり、
 プログラミング言語に標準で付属するものと、サードパーティ製のものである。

1. プログラミング言語に標準で付属するもの

 Rubyなどの言語は、
 言語仕様を最小に抑え必要な機能をライブラリとして提供している。

利点:
・文法や構文がシンプルになることで、言語学習や理解が容易になる。
・新機能をライブラリで実装するため、言語仕様のバージョンアップが必要ない。

言語標準クラスライブラリは継承構造

 言語標準のクラスライブラリは継承構造になっており、
 最上位の唯一のクラス(基底クラス)が存在する。

基底クラスは言語により名称は異なる。
例えば、JavaではObject、Pythonではobject、RubyではBasicObjectである。

 基底クラスには、基本的な処理を行うメソッドが定義されている。

Rubyの場合、最上位のBasicObjectはほとんど何も定義されていないクラスで、
そのクラスを継承しているObjectクラスが多数のメソッドを有している。

Rubyにおける標準クラスライブラリの継承関係図

 最上位にBasicObjectがあり、
 それをObjectが継承しさらに多岐にわたるクラスが継承している。
 下図は一例であり、他にも多数のクラスライブラリが存在する。

       Ruby_inheritance

2. サードパーティ製のもの

 プログラミング言語の開発元以外の企業や個人によって提供されるクラスライブラリ。
 用途は特定の機能を実装するため。

Rubyの場合

 RubyではRubyGems.orgでサードパーティ製クラスライブラリを提供している。
 そこでは、gemと呼ばれる配布用フォーマットでクラスライブラリを扱っている。

サードパーティ製クラスライブラリの例:
・bundler:gem間の依存関係を管理するためのライブラリ。

・rack  :webアプリケーションやフレームワークと、
      APサーバを接続するためのインターフェースを提供するライブラリ。

フレームワーク

 アプリケーション開発においてよく利用される機能を集め、
 それらを枠組みとして提供する再利用部品群である。

役割

 フレームワークはクラスライブラリとは違い、
 アプリケーションから呼び出されるのではなく、
 逆にフレームワークからアプリケーションを呼び出すように使用する。

 基本的な処理の制御をフレームワーク側で提供し、
 そこにアプリケーション固有の処理を組み込んでいく。

基本的な処理とは?
 ネットワーク通信によるHTTPリクエスト/レスポンス処理、アクセス認証、
 データベースにアクセス、画面描画など

仕組み

 フレームワークは、継承やポリモーフィズムなどオブジェクト指向の仕組みによって、
 簡単なコード記述でアプリケーションを開発することができる。

 フレームワークは、基本的な処理をメソッドとして定義したクラスを用意している。
 そのクラスをアプリケーション側で継承させることで、
 アプリケーション独自の処理に書き換えたり、またはデフォルト処理として使用できる。
 そしてポリモーフィッズムによってクラスの処理を呼び出す。

       FrameWork

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?