1.オブジェクト 指 向 の 概 要 オブジェクト 指 向 は 分 かりにくい 登 場 から 30 年 以 上 経 っても 未 だにオブジェクト 指 向 に 対 する 敷 居 は 高 いま まです ここではオブジェクト 指 向 について 考 えていきたいと 思 います 今 や IT 関 連 製 品

Similar documents
養 老 保 険 の 減 額 払 済 保 険 への 変 更 1. 設 例 会 社 が 役 員 を 被 保 険 者 とし 死 亡 保 険 金 及 び 満 期 保 険 金 のいずれも 会 社 を 受 取 人 とする 養 老 保 険 に 加 入 してい る 場 合 を 解 説 します 資 金 繰 りの 都

<4D F736F F D F4390B3208A948C E7189BB8CE F F8C668DDA97702E646F63>

労働時間と休日は、労働条件のもっとも基本的なものの一つです

( 別 紙 ) 以 下 法 とあるのは 改 正 法 第 5 条 の 規 定 による 改 正 後 の 健 康 保 険 法 を 指 す ( 施 行 期 日 は 平 成 28 年 4 月 1 日 ) 1. 標 準 報 酬 月 額 の 等 級 区 分 の 追 加 について 問 1 法 改 正 により 追 加


<4D F736F F D208ED089EF95DB8CAF89C193FC8FF38BB CC8EC091D492B28DB88C8B89CA82C982C282A282C42E646F63>

特別徴収封入送付作業について

1 本 店 の 申 請 において 代 理 人 を 立 てない 場 合 電 子 証 明 書 の 利 用 者 は 代 表 者 で 取 得 してください 6 電 子 証 明 書 の 利 用 者 は 誰 にすればよいのですか? 2 本 店 の 申 請 で 代 理 人 を 立 てる または 支 店 の 申 請

2. ど の 様 な 経 緯 で 発 覚 し た の か ま た 遡 っ た の を 昨 年 4 月 ま で と し た の は 何 故 か 明 ら か に す る こ と 回 答 3 月 17 日 に 実 施 し た ダ イ ヤ 改 正 で 静 岡 車 両 区 の 構 内 運 転 が 静 岡 運

質 問 票 ( 様 式 3) 質 問 番 号 62-1 質 問 内 容 鑑 定 評 価 依 頼 先 は 千 葉 県 などは 入 札 制 度 にしているが 神 奈 川 県 は 入 札 なのか?または 随 契 なのか?その 理 由 は? 地 価 調 査 業 務 は 単 にそれぞれの 地 点 の 鑑 定

PowerPoint プレゼンテーション

1

ていることから それに 先 行 する 形 で 下 請 業 者 についても 対 策 を 講 じることとしまし た 本 県 としましては それまでの 間 に 未 加 入 の 建 設 業 者 に 加 入 していただきますよう 28 年 4 月 から 実 施 することとしました 問 6 公 共 工 事 の

1 林 地 台 帳 整 備 マニュアル( 案 )について 林 地 台 帳 整 備 マニュアル( 案 )の 構 成 構 成 記 載 内 容 第 1 章 はじめに 本 マニュアルの 目 的 記 載 内 容 について 説 明 しています 第 2 章 第 3 章 第 4 章 第 5 章 第 6 章 林 地

Speed突破!Premium問題集 基本書サンプル

為 が 行 われるおそれがある 場 合 に 都 道 府 県 公 安 委 員 会 がその 指 定 暴 力 団 等 を 特 定 抗 争 指 定 暴 力 団 等 として 指 定 し その 所 属 する 指 定 暴 力 団 員 が 警 戒 区 域 内 において 暴 力 団 の 事 務 所 を 新 たに 設

Ⅰ 調 査 の 概 要 1 目 的 義 務 教 育 の 機 会 均 等 その 水 準 の 維 持 向 上 の 観 点 から 的 な 児 童 生 徒 の 学 力 や 学 習 状 況 を 把 握 分 析 し 教 育 施 策 の 成 果 課 題 を 検 証 し その 改 善 を 図 るもに 学 校 におけ

2 県 公 立 高 校 の 合 格 者 は このように 決 まる (1) 選 抜 の 仕 組 み 選 抜 の 資 料 選 抜 の 資 料 は 主 に 下 記 の3つがあり 全 高 校 で 使 用 する 共 通 の ものと 高 校 ごとに 決 めるものとがあります 1 学 力 検 査 ( 国 語 数

学校教育法等の一部を改正する法律の施行に伴う文部科学省関係省令の整備に関する省令等について(通知)

<4D F736F F D208E52979C8CA78E598BC68F5790CF91A390698F9590AC8BE08CF D6A2E646F6378>

1. 前 払 式 支 払 手 段 サーバ 型 の 前 払 式 支 払 手 段 に 関 する 利 用 者 保 護 等 発 行 者 があらかじめ 利 用 者 から 資 金 を 受 け 取 り 財 サービスを 受 ける 際 の 支 払 手 段 として 前 払 式 支 払 手 段 が 発 行 される 場 合

第2回 制度設計専門会合 事務局提出資料

1 書 誌 作 成 機 能 (NACSIS-CAT)の 軽 量 化 合 理 化 電 子 情 報 資 源 への 適 切 な 対 応 のための 資 源 ( 人 的 資 源,システム 資 源, 経 費 を 含 む) の 確 保 のために, 書 誌 作 成 と 書 誌 管 理 作 業 の 軽 量 化 を 図

任意整理について | 多重債務Q&A | 公益財団法人 日本クレジットカウンセリング協会

代 議 員 会 決 議 内 容 についてお 知 らせします さる3 月 4 日 当 基 金 の 代 議 員 会 を 開 催 し 次 の 議 案 が 審 議 され 可 決 承 認 されました 第 1 号 議 案 : 財 政 再 計 算 について ( 概 要 ) 確 定 給 付 企 業 年 金 法 第

疑わしい取引の参考事例

Taro13-01_表紙目次.jtd

Taro-2220(修正).jtd

参 考 様 式 再 就 者 から 依 頼 等 を 受 けた 場 合 の 届 出 公 平 委 員 会 委 員 長 様 年 月 日 地 方 公 務 員 法 ( 昭 和 25 年 法 律 第 261 号 ) 第 38 条 の2 第 7 項 規 定 に 基 づき 下 記 のとおり 届 出 を します この

検 討 検 討 の 進 め 方 検 討 状 況 簡 易 収 支 の 世 帯 からサンプリング 世 帯 名 作 成 事 務 の 廃 止 4 5 必 要 な 世 帯 数 の 確 保 が 可 能 か 簡 易 収 支 を 実 施 している 民 間 事 業 者 との 連 絡 等 に 伴 う 事 務 の 複 雑

<4D F736F F F696E74202D2082C882E982D982C DD8ED88EE688F882CC82B582AD82DD C668DDA9770>

<4D F736F F D F93878CA797708F4390B3816A819A95CA8B4C976C8EAE91E682538B4C8DDA97E12E646F6378>

Microsoft Word - ☆f.doc

3. 選 任 固 定 資 産 評 価 員 は 固 定 資 産 の 評 価 に 関 する 知 識 及 び 経 験 を 有 する 者 のうちから 市 町 村 長 が 当 該 市 町 村 の 議 会 の 同 意 を 得 て 選 任 する 二 以 上 の 市 町 村 の 長 は 当 該 市 町 村 の 議

<4D F736F F D D3188C091538AC7979D8B4B92F F292B98CF092CA81698A94816A2E646F63>

就 業 規 則 ( 福 利 厚 生 ) 第 章 福 利 厚 生 ( 死 亡 弔 慰 金 等 ) 第 条 法 人 が 群 馬 県 社 会 福 祉 協 議 会 民 間 社 会 福 祉 施 設 等 職 員 共 済 規 程 に 基 づき 群 馬 県 社 会 福 祉 協 議 会 との 間 において 締 結 す

H28記入説明書(納付金・調整金)8

Taro-契約条項(全部)

弁護士報酬規定(抜粋)

Microsoft PowerPoint - 報告書(概要).ppt

< F2D8ED089EF95DB8CAF939996A289C193FC91CE8DF42E6A7464>

私立大学等研究設備整備費等補助金(私立大学等

<4D F736F F D203193FA8AD45F95CA8E86325F89898F4B315F94F093EF8AA98D AD97DF914F82CC8FEE95F182CC8EFB8F C28E8B89BB2E646F63>

Microsoft Word - 文書 3

2. 会 計 規 程 の 業 務 (1) 規 程 と 実 際 の 業 務 の 調 査 規 程 や 運 用 方 針 に 規 定 されている 業 務 ( 帳 票 )が 実 際 に 行 われているか( 作 成 されている か)どうかについて 調 べてみた 以 下 の 表 は 規 程 の 条 項 とそこに

(2) 単 身 者 向 け 以 外 の 賃 貸 共 同 住 宅 等 当 該 建 物 に 対 して 新 たに 固 定 資 産 税 等 が 課 税 される 年 から 起 算 して5 年 間 とする ( 交 付 申 請 及 び 決 定 ) 第 5 条 補 助 金 の 交 付 を 受 けようとする 者 は

22 第 1 章 資 本 金 等 利 益 積 立 金 貴 見 のとおり 資 本 等 取 引 は 本 来 は 増 資 とか 減 資 と か さらには 旧 資 本 積 立 金 額 の 増 加 または 減 少 をいうこと になる ただ 利 益 の 配 当 はいわゆる 資 本 金 等 取 引 である か 損

育休代替任期付職員制度について

平成21年9月29日

Microsoft Word 消費税HP(案)

01_07_01 データのインポート_エクスポート_1

平成16年年金制度改正 ~年金の昔・今・未来を考える~

(1)1オールゼロ 記 録 ケース 厚 生 年 金 期 間 A B 及 びCに 係 る 旧 厚 生 年 金 保 険 法 の 老 齢 年 金 ( 以 下 旧 厚 老 という )の 受 給 者 に 時 効 特 例 法 施 行 後 厚 生 年 金 期 間 Dが 判 明 した Bは 事 業 所 記 号 が

入札公告 機動装備センター

入 札 参 加 資 格 申 請 システム 操 作 マニュアル 入 札 参 加 資 格 の 資 格 有 効 ( 変 更 ) 日 を 迎 えると 追 加 届 の 登 録 ができるようになります ( 入 札 参 加 資 格 申 請 の 定 時 受 付 では いずれかの 申 請 先 団 体 から 入 札 参

接続試験実施要領【障害者総合支援法(平成27年4月報酬改定)対応】

( 別 途 調 査 様 式 1) 減 損 損 失 を 認 識 するに 至 った 経 緯 等 1 列 2 列 3 列 4 列 5 列 6 列 7 列 8 列 9 列 10 列 11 列 12 列 13 列 14 列 15 列 16 列 17 列 18 列 19 列 20 列 21 列 22 列 固 定

スライド 1

PowerPoint プレゼンテーション

小 売 電 気 の 登 録 数 の 推 移 昨 年 8 月 の 前 登 録 申 請 の 受 付 開 始 以 降 小 売 電 気 の 登 録 申 請 は 着 実 に 増 加 しており これまでに310 件 を 登 録 (6 月 30 日 時 点 ) 本 年 4 月 の 全 面 自 由 化 以 降 申

1 変更の許可等(都市計画法第35条の2)

回 答 Q3-1 土 地 下 落 の 傾 向 の 中 固 定 資 産 税 が 毎 年 あがるのはなぜですか? 質 問 : 土 地 下 落 の 傾 向 の 中 土 地 の 固 定 資 産 税 が 毎 年 あがるのはなぜですか? 答 : あなたの 土 地 は 過 去 の 評 価 替 えで 評 価 額 が

Microsoft PowerPoint - 経営事項審査.ppt

<4D F736F F D208F7493FA95948E738A4A94AD8E968BC682CC8EE891B18B7982D18AEE8F8082C98AD682B782E98FF097E182C98AD682B782E98F9590AC8BE093998CF D6A B315D2E B4E88C A>

鳥 取 国 民 年 金 事 案 177 第 1 委 員 会 の 結 論 申 立 人 の 昭 和 37 年 6 月 から 38 年 3 月 までの 国 民 年 金 保 険 料 については 納 付 していたものと 認 められることから 納 付 記 録 を 訂 正 することが 必 要 である 第 2 申

Q4-2 平 成 28 年 1 月 1 日 以 後 は 利 子 割 の 課 税 対 象 は 個 人 とされていま すが 金 融 機 関 には 様 々な 口 座 がある 中 で 該 当 の 有 無 をどのように 判 断 すればよいですか? ( 平 成 28 年 2 月 修 正 ) A4-2 平 成 2

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

2 出 願 資 格 審 査 前 記 1の 出 願 資 格 (5) 又 は(6) により 出 願 を 希 望 する 者 には, 出 願 に 先 立 ち 出 願 資 格 審 査 を 行 いますので, 次 の 書 類 を 以 下 の 期 間 に 岡 山 大 学 大 学 院 自 然 科 学 研 究 科 等

平成27年度大学改革推進等補助金(大学改革推進事業)交付申請書等作成・提出要領

富士山チェックリスト

TOBに 応 じた 株 主 の 会 計 税 務 処 理 1.みなし 配 当 の 課 税 関 係 上 場 会 社 が 株 式 公 開 買 付 で 自 己 株 式 を 取 得 する 場 合 は 市 場 取 引 で 取 得 するケースと 相 違 して 原 則 として 株 主 にみなし 配 当 課 税 と

Q1-7 決 済 手 数 料 とは 何 ですか A1-7 決 済 手 数 料 は クレジットカードによる 納 付 を 行 う 際 に 納 税 者 の 皆 様 に 御 負 担 いた だく 手 数 料 で 1 件 ごとにかかります 御 負 担 いただく 手 数 料 は 納 付 額 1 万 円 までは 5

景品の換金行為と「三店方式」について

計算式の取り扱い

・モニター広告運営事業仕様書

<4D F736F F D2093CD8F6F82AA954B977682C88C9A95A882CC94BB926682CC DD5F48508C668DDA E646F63>

WEB版「新・相続対策マスター」(ご利用の手引き)

Microsoft Word - 目次.doc

戦略担当者のための

返還同意書作成支援 操作説明書

(Microsoft Word - \203}\203j\203\205\203A\203\213\226{\221\ doc)

一般競争入札について

従業員の個人住民税の特別徴収を実施していない事業者の方へ

< F2D E633368D86816A89EF8C768E9696B18EE688B5>

編 5ヶ 月 6 総 論 7 抜 ピ ド ピ ド 速 永 久 繰 ロ セ 慣 容 易 結 共 通 決 々 5 照 づ 具 ご 紹 介 与 監 査 比 較 場 限 提 始 箇 提 進 ご 安 心 話 提 与 監 査 雑 把 与 締 役 緒 算 類 作 機 関 従 来 税 始 忘 生 物 繰 切 忘 葉

<4D F736F F D2091DE90458F8A93BE82C991CE82B782E98F5A96AF90C582CC93C195CA92A58EFB82CC8EE888F882AB B315D2E312E A2E646F63>

4 参 加 資 格 要 件 本 提 案 への 参 加 予 定 者 は 以 下 の 条 件 を 全 て 満 たすこと 1 地 方 自 治 法 施 行 令 ( 昭 和 22 年 政 令 第 16 号 ) 第 167 条 の4 第 1 項 各 号 の 規 定 に 該 当 しない 者 であること 2 会 社

平成19年9月改定

国 税 クレジットカード 納 付 の 創 設 国 税 のクレジットカード 納 付 については マイナンバー 制 度 の 活 用 による 年 金 保 険 料 税 に 係 る 利 便 性 向 上 に 関 するアクションプログラム( 報 告 書 ) においてその 導 入 の 方 向 性 が 示 されている

目 次 電 子 申 請 を 使 用 した 申 請 の 流 れ 1ページ 申 請 書 ( 概 算 保 険 料 申 告 書 )の 作 成 2ページ 作 成 した 申 請 書 の 送 信 31ページ 状 況 照 会 電 子 納 付 を 行 う 62ページ 返 送 書 類 の 取 得 75ページ お 問 い

2 1.ヒアリング 対 象 (1) 対 象 範 囲 分 類 年 金 医 療 保 険 雇 用 保 険 税 備 考 厚 生 年 金 の 資 格 喪 失 国 民 年 金 の 加 入 老 齢 給 付 裁 定 請 求 など 健 康 保 険 の 資 格 喪 失 国 民 健 康 保 険 の 加 入 健 康 保 険

Microsoft Word - 不正アクセス行為の禁止等に関する法律等に基づく公安

<4D F736F F D C689D789B582B581698AAE90AC92CA926D816A2E646F63>

積 載 せず かつ 燃 料 冷 却 水 及 び 潤 滑 油 の 全 量 を 搭 載 し 自 動 車 製 作 者 が 定 める 工 具 及 び 付 属 品 (スペアタイヤを 含 む )を 全 て 装 備 した 状 態 をいう この 場 合 に おいて 燃 料 の 全 量 を 搭 載 するとは 燃 料

目 次 1 個 人 基 本 情 報 個 人 基 本 情 報 入 力 画 面 の 分 散 4 申 告 区 分 および 申 告 種 類 の 選 択 方 法 5 繰 越 損 失 入 力 年 別 の 繰 越 損 失 額 入 力 に 対 応 6 作 成 手 順 作 成 手 順 の 流 れを 提 供 7 所 得

本 試 験 模 範 解 答 固 定 資 産 税 第 一 問 問 1 1 住 宅 用 地 に 対 する 課 税 標 準 の 特 例 (1) 宅 地 のうち 住 宅 用 地 については 住 宅 政 策 上 の 見 地 から 次 のような 課 税 標 準 の 特 例 が 認 められている 小 規 模 住

平 成 27 年 11 月 ~ 平 成 28 年 4 月 に 公 開 の 対 象 となった 専 門 協 議 等 における 各 専 門 委 員 等 の 寄 附 金 契 約 金 等 の 受 取 状 況 審 査 ( 別 紙 ) 専 門 協 議 等 の 件 数 専 門 委 員 数 500 万 円 超 の 受

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

Microsoft Word - 制度の概要_ED.docx

続 に 基 づく 一 般 競 争 ( 指 名 競 争 ) 参 加 資 格 の 再 認 定 を 受 けていること ) c) 会 社 更 生 法 に 基 づき 更 生 手 続 開 始 の 申 立 てがなされている 者 又 は 民 事 再 生 法 に 基 づき 再 生 手 続 開 始 の 申 立 てがなさ

Transcription:

PHP マニュアル オブジェクト 指 向 入 門 編 1.オブジェクト 指 向 の 概 要 なぜオブジェクト 指 向 は 難 しいのか 難 しいのは 当 然 すぎる から 実 は 不 自 然 だった 手 続 き 指 向 アクセス 制 御 が 不 可 欠 メッセージ パッシングとは 何 か 関 数 呼 び 出 しとメッセージ パッシングの 違 い オブジェクトとクラスの 違 い 2.オブジェクト 指 向 プログラミング クラス オブジェクト インスタンス 化 コンストラクタ デストラクタ アクセス 修 飾 子 ゲッダメソッド セッダメソッド 静 的 メソッド クラス 内 定 数 継 承 parent 命 令 final 修 飾 子 ポリモーフィズム 抽 象 メソッド インターフェス 3.PHP5 独 自 のオブジェクト 構 文 autoload 関 数 call メソッド get, set メソッド 4.Apache との 連 携.htaccess http.conf の AllowOverride ディレクティブを"All"に 設 定.htaccess ファイルで 設 定 可 能 なパラメータは 決 まっている 1

1.オブジェクト 指 向 の 概 要 オブジェクト 指 向 は 分 かりにくい 登 場 から 30 年 以 上 経 っても 未 だにオブジェクト 指 向 に 対 する 敷 居 は 高 いま まです ここではオブジェクト 指 向 について 考 えていきたいと 思 います 今 や IT 関 連 製 品 や 技 術 は オブジェクト 指 向 抜 きには 語 れないと 言 ってよいほど 普 及 し 一 般 的 になっています Java や C++をはじめとするプログラミング 言 語 に 及 ばず パソコンのユーザー インターフェースは ひとつひとつのプログラムをアイコンで 表 し 直 感 的 な 操 作 を 可 能 にする GUI(グラフィカル ユーザー インタフェース)が 主 流 です GUI は 言 うまでもなくオブジェクト 指 向 の 考 え 方 で 作 られたものです そもそもオブジェクト 指 向 について 正 確 に 解 説 すると プログラムの 構 造 をオブジェクト 群 の 相 互 作 用 とその 雛 形 であるクラス 群 の 関 係 として 捉 え 相 互 にメッセージを 送 りあう オブジェクトの 集 まりとしてプログラムを 構 成 する 技 法 のことを 指 します とあるように 非 常 に 説 明 しずらくわかりずらいものとなっています このオブジェクト 指 向 を 取 り 入 れたプログラミング 言 語 はオブジェクト 指 向 プログラミング 言 語 と 呼 ばれ これらの 言 語 ではクラスとその 継 承 な どの 仕 組 みを 利 用 することで 開 発 効 率 を 高 められるようになっています オブジェクト 指 向 構 文 は 今 となっては 開 発 現 場 ではあたりまえとなっていますが 習 得 するのはなかなか 難 しいのが 現 状 です 特 に 大 多 数 でシステム 構 築 す るような 複 雑 で 大 規 模 なものほどオブジェクト 指 向 という 考 え 方 はなくてはならなくなってきますので 習 得 するにはそ れなりの 時 間 がかかりますが 必 ず 習 得 してほしい 分 野 です 現 在 では C++ Java JavaScript Ruby PHP Perl な どほとんどの 開 発 現 場 でこのオブジェクト 指 向 という 考 え 方 を 元 にした 開 発 言 語 が 主 流 になってきています 今 やオ ブジェクト 指 向 は システム 開 発 における 共 通 の 土 台 となりつつある 考 え 方 です 逆 に 言 えば オブジェクト 指 向 の 考 え 方 を 習 得 することでこれらの 言 語 も 初 見 でもある 程 度 は 理 解 することが 可 能 となります 難 しいと 思 いますが 少 しづつでいいので 理 解 できるまで 何 度 もチャレンジしてくれることを 願 っています オブジェクト 指 向 の 概 要 では 実 際 の PHP でのコード 記 述 紹 介 のまえにオブジェクト 指 向 とはどういったものなのか ということを 現 実 世 界 のモノに 例 え 解 説 していきます 2

なぜオブジェクト 指 向 は 難 しいのか オブジェクト 指 向 の 難 しさはどこにあるのか よく 言 われるのは 耳 慣 れない 用 語 とオブジェクト 指 向 という 考 え 方 にあると 聞 きます オブジェクト 指 向 にはこれから 紹 介 する クラス オブジェクト 継 承 抽 象 化 メッセ ージ 振 る 舞 い などといった IT らしくない 言 葉 が 多 数 登 場 します これらの 言 葉 が 災 いして 慣 れない 人 から すれば なぜそんな 言 い 回 しをするのかと 不 思 議 と 思 うのが 当 然 です オブジェクト 指 向 の 定 義 も 実 はまちまちで オブジェクト 指 向 の 解 説 書 や オブジェクト 指 向 言 語 の 代 名 詞 でもある Java の 参 考 書 ですら 表 現 が 異 なっている ので 混 乱 するのも 当 然 といえば 当 然 です もしかしたら わざと 混 乱 させるためにこんなまわりくどい 言 い 回 しを つかっているんじゃないかと 疑 うこともあります そしてもう 一 点 従 来 の 手 法 ( 手 続 き 型 言 語 などの 非 オブジェクト 指 向 言 語 )になれたプログラマやエンジニアに とってオブジェクト 指 向 を 理 解 するには 180 度 異 なる 発 想 が 必 要 とされる 点 があるためです オブジェクト 指 向 が 登 場 する 以 前 は プロセッサが 行 うひとつひとつの 作 業 すなわち 手 続 き を 順 に 記 述 して 処 理 をこなしていく 方 法 しかなかったため この 考 え 方 でプログラムを 考 えてしまいオブジェクト 指 向 での 発 想 転 換 が 難 しいのです 難 しいのは 当 然 すぎる から では これらの 難 しさをどのように 乗 り 越 えていけばいいのか それには 用 語 やテクニックにとらわれることなく オブジェクト 指 向 の 根 本 的 な 考 え 方 を 理 解 するということがキーになってきます それができれば 最 初 から 苦 労 はしないのですが そこさえ 乗 り 越 えれば 様 々な 難 解 な 概 念 もおのずと 意 味 が 分 かり 実 際 のシステム 構 築 の 場 でも 生 きてきます その 意 味 でぜひ 覚 えておくべき 大 原 則 として オブジェクト 指 向 とは 人 間 にとってごく 自 然 な 考 え 方 というものがあります あなたも 自 分 にとって 当 たり 前 すぎることを 改 めて 問 いただされたら 答 えに 窮 する のではないでしょうか オブジェクト 指 向 が 難 しい 理 由 は オブジェクト 指 向 が 高 度 だからではなく オブジェクト 指 向 とは ソフトウェアを 人 間 にとって 扱 いやすいよう 現 実 の 物 事 になぞらえて 考 える 手 法 だからです 手 続 き 指 向 に 慣 れた あるいは 手 続 き 指 向 のシステムを 担 当 する 多 くの IT エンジニアにとっては このごく 自 然 な 考 え 方 を 理 解 することがかえって 難 しいのです 3

実 は 不 自 然 だった 手 続 き 指 向 でも 本 当 にオブジェクト 指 向 は 自 然 な 考 え 方 なのか? 手 続 き 指 向 でひとつひとつ 処 理 を 記 述 していった 方 が よっぽど 簡 単 だし 自 然 なような 気 がするけど こんなことを 思 っている 方 もいると 思 います 手 続 き 指 向 では プログラムに 対 してデータを 入 力 して 何 らかの 処 理 を 実 行 する つまりプログラム( 処 理 )とデータをまったく 別 物 として 扱 う 考 え 方 でした これはプログラム 上 だけの 話 ではなく 実 際 コンピュータの 中 ではプログラムとデータ を 物 理 的 に 異 なるメモリー 領 域 に 格 納 していることからも 伺 えます 注 目 してほしいのは コンピュータ 内 に 存 在 しているデータは 特 別 な 意 味 を 持 たず 単 なる 数 字 の 羅 列 (2 進 法 で 考 えて)に 過 ぎないということです 例 えば コンピュータの 中 に 1000 というデータが 存 在 するとします すると そのデータは 指 定 された 処 理 (プログラム) によっては 1000 円 にも 1000 個 にも 意 味 を 変 えます ところが 現 実 の 物 事 のあり 方 と 照 らし 合 わせてみると コンピュータ 流 の 方 式 は 極 めて 不 自 然 です なぜなら 現 実 の 世 界 では 1000 という 数 値 だけが 存 在 することはあり 得 ないからです 普 段 はあまり 意 識 したことがない かもしれませんが 必 ずデータには 固 有 の 意 味 があります 1000 円 1000 個 1000km 1000 人 といっ た 具 合 です そうして 考 えてみるとひとつの 疑 問 がわくと 思 います なぜコンピュータは こんな 方 式 でプログラムとデータを 分 離 して 管 理 しているのだろうか? と 答 えは 簡 単 で コンピュータ 内 部 の 処 理 が 手 続 き 指 向 だからです コン ピュータのプロセッサはメモリー 上 のプログラムを 順 番 に 読 み 込 みデータを 処 理 しています データにどんな 意 味 があるのかは 全 く 関 与 していません 加 えて 昔 のコンピュータでは 処 理 性 能 が 現 在 とは 桁 違 いに 低 かったため 貧 弱 なコンピュータ 資 源 を 有 効 活 用 するにはコンピュータが 最 も 処 理 のしやすい 形 態 つまり 手 続 き 指 向 でプログラ ムを 構 築 するしかなかったのです しかし 現 在 では 処 理 性 能 の 向 上 により 人 間 にとって 分 かりやすく 使 いやす いオブジェクト 指 向 という 考 え 方 が 浸 透 してきたというだけの 話 です そして 前 述 したようにデータが 固 有 の 意 味 を 持 つということは 同 時 にそのデータを 使 って 実 行 できる 処 理 も 必 然 的 に 決 まります 例 えば 1000 円 というお 金 をつかってできることは 代 金 を 支 払 う とか 両 替 する といったごく 限 られたことしかできません オブジェク ト 指 向 とは まさにこうした 現 実 と 同 じような 物 事 のありようを ソフトウェアで 実 現 しようという 試 みそのものなの です では どうすればモノのように 扱 えるソフトをつくれるのか 答 えを 言 えば 処 理 とデータをひとまとめのセットと して 扱 えばよいということです 具 体 的 には このデータとこの 処 理 はひとつでワンセットであるとプログラム 上 で 定 義 し 同 時 にデータへアクセスすることのできる 処 理 をこのワンセットのみに 限 定 します 例 えば 1000 円 と いうお 金 のデータを 表 現 したいとき 1000 というデータとそのデータがお 金 であるということを 前 提 にしたプログラ ムをひとつのセットとしてまとめます これで 単 なる 1000 というデータが 1000 円 というお 金 のデータに 固 定 でき ます これがオブジェクト 指 向 の 解 説 書 に 当 たり 前 のように 出 てくる 処 理 とデータの 一 体 化 と 同 じ 意 味 になりま す そしてこのデータの 意 味 を 固 定 した 処 理 をオブジェクト 指 向 ではメソッドと 名 付 け 1000 円 というデータを 属 性 (プロパティ)と 名 付 けただけのことなのです そしてここまで 説 明 してきたような 具 体 的 な 処 理 とデータをひとまと めのセットにしたものがオブジェクトにあたります 4

5

アクセス 制 御 が 不 可 欠 しかし 一 体 化 だけではまだ 不 十 分 です いくら データとメソッドを 一 体 化 してオブジェクトをつくった といっても それをつくったプログラマ 以 外 の 人 間 がその 作 法 に 従 わなければ 元 も 子 もないためです やろうと 思 えば オブ ジェクト 指 向 の 考 え 方 を 無 視 してデータを 直 接 参 照 したり 変 更 したりとオブジェクト 外 部 からやりたい 放 題 する 危 険 性 があります この 事 態 を 防 止 してオブジェクト 指 向 の 目 的 を 達 成 するためには 外 部 からのオブジェクト 内 部 へとつながる 自 由 なアクセスを 遮 断 しなければいけません そこで 設 けられたのがアクセス 制 御 です データアクセスの 入 り 口 を 制 御 して 属 性 にアクセスできるのはオブジェクトのなかのメソッドだけに 限 定 します そうすれば 外 部 から 属 性 を 参 照 したい 場 合 はオブジェクトのなかにあるメソッドを 介 してしかアクセスできなくなります 不 正 な 行 為 をしようと するプログラムがあればこのメソッドの 段 階 でアクセスをさせないようにすればいいのです 簡 単 にいえば 両 替 機 のなかのお 金 を 盗 まれないためにお 金 が 入 った 箱 に 鍵 をかけてなおかつ 偽 札 が 両 替 機 に 入 ってきたら 無 効 に する 機 能 がアクセス 制 御 にあたります オブジェクト 指 向 ではこのオブジェクト 内 のメソッド( 偽 札 防 止 機 能 がついた 両 替 機 能 )のことをインターフェース と 呼 びます また お 金 が 入 った 箱 がいくらはいっているのか 外 部 から 見 えないようにすることをオブジェクト 指 向 でも 現 実 世 界 と 同 じように 隠 蔽 (いんぺい) すると 呼 びます 現 実 世 界 にあるモノ( 両 替 機 )を 表 現 するための 一 体 化 と 隠 蔽 の 説 明 は 以 上 です 最 後 にこのような 一 体 化 と 隠 蔽 をそなえもたせること( 現 実 世 界 では 両 替 機 に 防 犯 機 能 をもたせること)をオブジェクト 指 向 では カプセル 化 と 呼 びます 6

メッセージ パッシングとは 何 か 現 実 のモノをソフトウェアに 置 き 換 える 際 にカプセル 化 という 名 の 防 犯 機 能 がいかに 重 要 かということをお 分 か りいただけたと 思 います では このオブジェクトに 何 らかの 処 理 を 実 行 させる( 両 替 機 に 実 際 のお 金 を 両 替 させ てもらう)ためにはどうすればいいのかをこれからお 話 します 話 は 簡 単 で 現 実 世 界 の 私 たちは 両 替 機 の 内 部 の 仕 組 みを 知 りません というか 両 替 機 をつくって 販 売 している 会 社 (この 場 合 はつくったプログラマにあたる)は 両 替 機 の 内 部 の 仕 組 みを 使 用 者 に 詳 しく 教 えません なぜなら 両 替 機 の 内 部 の 仕 組 みを 教 えてしまえば 仕 組 みの 隙 間 をついて 精 巧 な 偽 札 がつくれてしまうからです これで は 悪 用 してくださいと 言 っているのと 同 じです なんということでしょう 私 たちは 両 替 機 の 内 部 の 仕 組 みを 知 らず に 自 然 と 両 替 機 を 使 用 していたのです! 当 たり 前 ですが 私 たちが 両 替 機 に 対 して 知 っている 知 識 といえ ば 千 円 をいれれば 百 円 玉 が10 枚 返 却 口 からでてくるというごくあたりまえの 両 替 機 に 対 する 使 用 方 法 ぐらいの ものです なにをいれれば なにが 返 ってくるのか そう 最 初 になにを 両 替 機 に 入 れれば なにが 返 却 口 から 戻 ってくるのか 入 力 値 と 結 果 さえわかっていれば 詳 しい 内 容 ( 両 替 機 の 内 部 の 仕 組 み)など 知 ったことではないの です オブジェクト 指 向 も 同 じです 結 果 からいうと カプセル 化 されたオブジェクトの 中 身 など 知 ったことではないので す なにを 入 力 値 として 渡 せば なにが 結 果 として 返 ってくるのか それさえわかっていれば 処 理 の 内 容 を 知 らな くても 利 用 できます 最 低 限 必 要 な 知 識 としては 両 替 機 の 使 い 方 つまり オブジェクトの 使 い 方 だけなのです ここで 登 場 するのば 上 記 の 図 にあるメッセージ パッシングという 用 語 です メッセージ パッシングとやけに 格 好 付 けて 名 乗 っていますが 用 は 両 替 機 の 使 い 方 と 同 じ 意 味 なのです 例 え ば 5000 円 札 を 両 替 機 に 入 れると 1000 円 札 に 両 替 ボタンと 100 円 玉 に 両 替 ボタンが 押 せるようになります メッセージ パッシングでは これから 5000 円 札 を 入 れるので 100 円 玉 に 両 替 してください というメッセージを 両 替 機 につたえていると 考 えればなんのことはないのです 関 数 呼 び 出 しとメッセージ パッシングの 違 い 手 続 き 型 手 法 をつかったことがある 人 ならばなぜわざわざ 処 理 を 呼 び 出 すのに 関 数 呼 び 出 しという 用 語 がある にもかかわらず メッセージ パッシングなどという 新 しい 用 語 をもってくるんだと 卑 屈 になっている 方 がいるかもし れません それは そもそも 関 数 とオブジェクトのなかにある 処 理 は 動 きが 異 なっているので 同 じ 呼 び 名 では 混 乱 するため あえてメッセージ パッシング(または 単 にメッセージと 呼 ぶ)といった 具 合 に 分 けているのです そもそもデータという 観 点 から 見 ると 関 数 とオブジェクトではぜんぜん 扱 いが 異 なります そのため 関 数 では 関 数 呼 び 出 しと オブジェクトではメッセージ パッシングと 混 乱 を 避 けるために 呼 び 名 を 区 別 したというわけです かえってこれが 混 乱 の 元 になることもあるので 注 意 してください 関 数 とオブジェクトのデータの 扱 いに 関 する 違 いはオブジェクト 指 向 プログラミングの 章 で 解 説 していますのでそちらを 参 照 してください 7

オブジェクトとクラスの 違 い 先 ほどのメッセージ パッシングの 説 明 で カプセル 化 されたオブジェクトの 中 身 など 知 ったことではない と 言 いましたが オブジェクト 指 向 の 最 大 のメリットは プログラム 全 体 を 理 解 せずともプログラムを 書 けるという 点 で す 使 用 方 法 さえわかっていればいいだけなので オブジェクト 内 部 を 理 解 する 時 間 をそのまま 省 くことができま す これにより 開 発 スピードが 格 段 にあがるという 利 点 があります これはとくに 大 人 数 でシステムを 構 築 する 際 機 能 ごとに 分 業 が 可 能 になるということも 意 味 しています しかし 私 たちはあくまでもつくる 側 つまり 両 替 機 をつくって 販 売 している 会 社 の 技 術 者 なので 両 替 機 が 故 障 したり 新 しい 偽 札 防 止 機 能 を 追 加 してくれと 偉 い 人 に 命 令 されれば 両 替 機 の 中 身 に 機 能 追 加 したり あたらしくつくり 変 えることをしなければなりません あなたが 両 替 機 の 技 術 者 として 働 いていたとしましょう 偉 い 人 が 唐 突 に 明 日 までに 親 会 社 が 新 しくつくった 偽 札 防 止 機 能 を 急 遽 追 加 してくれ できなければクビだ と 通 告 されたとしたらどうでしょう あなたはまずなにをし ますか? すでに 出 来 上 がっている 実 際 の 両 替 機 (この 場 合 はオブジェクト)を 分 解 し 仕 組 みを 理 解 しようとする と 思 います しかし 両 替 機 の 偽 札 防 止 機 能 の 箇 所 は 外 注 で 他 の 会 社 の 技 術 者 がつくったものなので 仕 組 みがい まいち 理 解 できません しかも その 外 注 した 会 社 は 先 月 唐 突 に 倒 産 してしまい 連 絡 すらとれない 状 態 です 親 会 社 のお 高 くとまっている 技 術 者 が 親 切 に 教 えてくれるわけがない( 前 回 も 怒 鳴 りながら 電 話 口 にでてきたし な ) さて あなたはここでどう 行 動 にでますか? 1. 気 合 で 何 とかする 2.こっそりオリジナルの 偽 札 防 止 機 能 にすりかえる 3. 他 の 外 注 先 をいまから 探 す 4.コンビニでとらばーゆを 立 ち 読 みしてから 明 日 までに 辞 表 を 書 く 5.そういえば 納 品 されたものに 設 計 書 があったよな それをみれば もしかして あなたの 行 動 する 選 択 肢 として 答 えは5だと 願 っています そう ここでいう 設 計 書 こそオブジェクト 指 向 にあた るクラスになります クラスとはオブジェクトの 設 計 書 実 際 のモノである 両 替 機 を 文 面 に 抽 象 化 し 要 約 した 設 計 図 にあたるのです まとめ いままでのながれでクラスとはオブジェクトの 設 計 図 でオブジェクトはクラスをもとにつくられたプログラムとわか っていただけたと 思 います もう 少 し 噛 み 砕 いて 説 明 すると クラスとはオブジェクトの 特 徴 (どんな 性 質 があって どんな 動 きをするのか)をひとくくりにまとめたもので オブジェクトは 実 際 のモノとして 考 えてください 以 上 で 簡 単 ですが 現 実 世 界 の 例 を 用 いたオブジェクト 指 向 の 解 説 は 終 わりです 次 からは PHP の 文 法 をまじえたオブジェクト 指 向 編 へと 続 きます 難 しいと 思 いますが がんばりましょう 8

2.オブジェクト 指 向 プログラミング クラス クラスとは 一 般 に 関 数 の 集 合 体 として 定 義 されていますが 処 理 の 集 合 として 捉 えて 考 えた 場 合 関 数 と 比 べ データの 扱 いという 点 で 見 比 べてみるとその 違 いがよりわかりやすくなります 関 数 は 与 えられた 入 力 値 ( 引 数 ) を 元 にして 処 理 結 果 を 戻 り 値 として 出 力 するだけの 仕 組 みですが クラスまたはオブジェクトは 自 分 自 身 のなか にデータを 格 納 する 変 数 としての 役 割 もはたしています その 結 果 関 数 でのデータの 扱 いは データが 処 理 を 通 過 していくだけなのにたいして クラス オブジェクトではさらに 処 理 前 処 理 後 のデータを 内 部 で 保 持 してお くことが 可 能 になります プログラマは 必 要 に 応 じこの 値 を 取 り 出 して 再 度 利 用 することができるようになるわけで す 関 数 とクラスの 違 いは 以 上 です わかりやすく 下 記 にその 違 いをまとめてみました データを 保 持 データを 処 理 変 数 関 数 クラス オブジェクト オブジェクト クラスを 理 解 するうえで 重 要 になってくるのがオブジェクトです クラスとオブジェクトは 似 て 非 なるものです オ ブジェクトとはクラスを 元 にしてつくられたコピーを 指 します クラスでは データを 保 持 できる という 性 質 をもって いるため 複 数 の 処 理 でひとつのクラスにアクセスした 場 合 データの 上 書 き( 不 整 合 )を 引 き 起 こす 危 険 があり ます そのため 処 理 に 応 じクラスのコピーを 作 成 し そのコピーに 対 してアクセスすることが 考 えだされました 実 際 に 使 う 場 合 には まずクラス 本 体 には 手 を 加 えず オブジェクトと 呼 ばれるクラスのコピーを 作 成 しそれを 処 理 の 対 象 としてプログラムを 組 んでいきます 例 えばこんな 感 じ この 後 にも 紹 介 しますが クラス( 雛 形 / 設 計 図 )からオブジェクト( 実 際 のモノ)を 生 成 することをインスタンス 化 と 呼 びます 処 理 をする 場 合 クラスには 手 を 加 えずインスタンス 化 されたオブジェクトを 処 理 対 象 として 扱 います 下 の 図 の 場 合 インスタンスとはオブジェクトと 同 じ 意 味 になります 9

インスタンス 化 クラスのコピー(オブジェクト)を 生 成 することを インスタンス 化 といいます インスタンス 化 とは クラスを 扱 う ための 自 分 専 用 の 領 域 を 確 保 する 行 為 ともいえます PHP では( 他 の 言 語 でも 大 抵 は 同 意 です) クラスのイ ンスタンス 化 を 次 のように new 演 算 子 を 使 って 行 ないます また インスタンス 化 の 際 に 必 要 に 応 じて 初 期 化 の ためのデータを 引 き 渡 すことも 可 能 です $ 変 数 名 = new クラス 名 ([ 引 数,...]); 引 数 が 必 要 ない 場 合 でもカッコは 省 略 できない 点 に 注 意 してください インスタンス 化 したオブジェクトは $ 変 数 名 に 格 納 され 以 降 はこの 変 数 をオブジェクトとして 扱 うことになります また インスタンス 化 した 変 数 を オブジ ェクト 変 数 と 呼 称 します この 場 合 オブジェクト 変 数 のなかのクラスに 属 する 関 数 と 変 数 のことを メンバ 関 数 と メンバ 変 数 または メソッド と プロパティ と 呼 びます 処 理 の 適 応 戻 り 値 の 取 得 [ 戻 り 値 ] = $ 変 数 名 -> メソッド 名 ([ 引 数,...]); 値 の 参 照 代 入 $ 変 数 名 -> プロパティ 名 [ = 値 ]; コンストラクタ デストラクタ インスタンス 化 の 際 に 実 行 される 特 別 なメソッド(メンバ 関 数 )のことを コンストラクタと 呼 びます PHP4では クラス 名 と 同 名 のメソッドをコンストラクタと 見 なしていましたが PHP5からは construct という 統 一 名 を 採 用 しています もし クラスと 同 じ 名 前 のメソッドがクラス(オブジェクト) 内 に 存 在 する 場 合 には construct が 優 先 して 処 理 されます コンストラクタは インスタンス 化 のタイミングで 実 行 されるという 性 質 上 プロパティ(メンバ 変 数 )の 初 期 化 や クラスで 使 用 する 各 種 リソースの 初 期 化 といった 呼 び 出 されて 最 初 の 一 回 だけ 処 理 を 必 要 とす るものを 記 述 するのが 一 般 的 です 特 に 初 期 化 処 理 が 必 要 ない 場 合 は コンストラクタは 省 略 可 能 です コンストラクタとは 反 対 に オブジェクト(インスタンス)が 破 棄 されるタイミングで 実 行 されるのがデストラクタです デストラクタは PHP5 以 降 でのみ 利 用 可 能 で 統 一 名 として destruct を 採 用 しています デストラクタには ク ラス 内 で 使 用 したリソースを 破 棄 するなど 主 に 終 了 処 理 を 記 述 するのが 一 般 的 です PHP では Java と 同 じくメ モリの 解 放 などは 自 動 である 程 度 おこなってくれるので 使 用 頻 度 としてはコンストラクタより 多 くはみかけません 10

アクセス 修 飾 子 クラスを 理 解 するうえでもう 一 つ 重 要 な 概 念 となるのが アクセス 修 飾 子 です アクセス 修 飾 子 とは クラス 内 のメンバ 変 数 (プロパティ)やメンバ 関 数 (メソッド)に 対 するアクセスの 可 否 を 決 めるための 命 令 になります PHP5で 利 用 可 能 なアクセス 修 飾 子 アクセス 修 飾 子 概 要 public どこからでもアクセス 可 能 (デフォルト) protected 現 在 のクラスとサブクラスでのみアクセス 可 能 private 現 在 のクラス 内 部 でのみアクセス 可 能 アクセス 修 飾 子 を 省 略 した 場 合 そのメソッドとプロパティは public 扱 いと 見 なされ デフォルトでどこからでもア クセス 可 能 になります また PHP4ではプロパティを 定 義 するための var 命 令 がありましたが こちらも public 修 飾 子 と 同 様 の 意 味 であると 見 なされます これら 修 飾 子 として の 役 割 は クラス 内 部 の 機 能 をクラス 外 部 から 隠 蔽 することが 目 的 で 使 われます こうした 機 能 をオブジェクト 指 向 では カプセル 化 と 言 います ゲッダメソッド セッダメソッド クラス 内 の private 変 数 にアクセスするためのメソッドのことを アクセサメソッド(Accesor Method) と 総 称 しま す また get_ メソッドと set_ メソッドをそれぞれ ゲッタメソッド(Getter Method) セッタメソッド(Setter Method) と 呼 ぶこともあります public function get_プロパティ 名 (){ return $this -> プロパティ 名 ; public function set_プロパティ 名 (){ $this -> プロパティ 名 = 引 数 ; アクセス 修 飾 子 $this は 現 在 のクラスを 示 すための 命 令 で クラス 内 のメンバにアクセスするためには こ の$this を 介 して 行 う 必 要 があります アクセサメソッドの 名 前 は 一 般 的 に get_プロパティ 名 set_プロパティ 名 とするのが 慣 例 ですが 構 文 規 則 ではないので 必 ずしもこの 規 則 に 従 う 必 要 はありません get_メソッドが 定 義 された 場 合 にはプロパティは 読 み 取 り 専 用 に set_メソッドが 定 義 された 場 合 にはプロパティは 書 き 込 み 専 用 にな り ま す プ ロ パ テ ィ を 隠 蔽 し て ア ク セ サ メ ソ ッ ド を 介 し て 参 照 設 定 す る こ と で 読 み 書 きの 制 御 が 可 能 となる プロパティ 値 を 設 定 する 際 に 値 の 検 証 を 行 える プロパティ 値 を 参 照 する 際 に 値 の 加 工 を 行 える などのメリットがあります 11

静 的 メソッド クラスを 利 用 するにあたっては 必 ず インスタンス 化 を 行 い クラスのコピーを 生 成 する 必 要 があると 紹 介 し ましたが 例 外 的 に インスタンス 化 を 行 わなくても 利 用 できるメソッドがあります このようなメソッドのことを 静 的 メソッド と 言 います 静 的 メソッドを 定 義 するには メソッド 定 義 の 先 頭 に static 修 飾 子 を 付 加 するだけです MyClass.class.php class MyClass{ public static function triangle ($width, $height){ return $width * $height / 2; クラス 外 部 から 静 的 メソッドを 呼 び 出 すには 一 般 的 なメソッド プロパティを 呼 び 出 す -> 演 算 子 ではなく :: (スコープ) 演 算 子 を 使 用 します static.php require_once('myclass.class.php'); print(' 三 角 形 の 面 積 は'. MyClass::triangle(10,5). 'です<br>'); :: 演 算 子 を 利 用 することでオブジェクト 変 数 名 でなくクラス 名 から 直 接 的 にメソッドを 呼 び 出 すことが 可 能 となり ます ではなぜこのように インスタンス 化 を 必 要 とするメソッドとそうでないメソッドが 存 在 するのかというと それ は 外 部 から 与 えられた 値 を 処 理 し 出 力 するだけということだけをしているからです クラス 内 でプロパティとして データを 留 めることなくメソッドとしてだけ 処 理 し 呼 び 出 し 元 に 返 すだけのいわゆる 関 数 的 な 処 理 を 求 められてい るのでわざわざオブジェクトをつくらなくとも データの 上 書 き( 不 整 合 )が 発 生 しないためです そもそも 静 的 メソ ッドでは クラス 内 にプロパティ(データ)を 設 定 もとい 参 照 しようにもプロパティ 自 体 が 存 在 しないのでできませ ん こうなると $this 命 令 も 当 然 ながら 使 えません 12

クラス 内 定 数 クラス 内 定 数 とは その 名 の 通 り class ブロックの 中 で 定 義 された 定 数 のことです PHP5からは const 命 令 を 利 用 することでクラス 内 部 で 定 数 を 定 義 することができます class MyClass { const AUTHOR = ' 名 無 し'; print(' 著 者 名 :'. MyClass::AUTHOR); クラス 内 定 数 を 参 照 するには 静 的 メソッド 同 様 :: 演 算 子 を 使 います クラス 内 定 数 を 利 用 すると 特 定 のクラ スでしか 利 用 しない 定 数 をクラス 内 部 で 管 理 でき クラス 外 部 に 出 さなくて 済 むのでより 分 かりやすいコードを 記 述 することができます 13

継 承 継 承 とは クラスに 含 まれるプロパティやメソッドを 引 き 続 きながら 新 たな 機 能 を 追 加 したり 元 の 機 能 を 一 部 だ け 修 正 することができる 機 能 のことです 必 要 に 応 じ 元 になるクラスの 機 能 を 引 き 継 ぎつつ 機 能 追 加 変 更 など の 新 しいクラスをつくる 場 合 に 使 われます 継 承 の 際 基 になるクラスのことを スーパークラ ス( 親 クラス 基 底 クラス) と 呼 び 継 承 の 結 果 できたクラスのことを サブクラス( 子 クラス 派 生 クラス) と 呼 びます class サブクラス 名 extends スーパークラス 名 { サブクラスの 処 理 定 義 継 承 によりスーパークラスの 機 能 をサブクラスで 上 書 きすることを オーバーライド と 言 います オーバーライド されなかったスーパークラスのメソッドはサブクラスでもそのまま 引 き 継 がれ あたかも 自 分 自 身 で 定 義 したメソッ ドであるかのように 利 用 できます class MyClass { protected $data; public function construct($data) { $this->data = $data; public function showdata() { return ' 入 力 値 は '.$this->data.' です '; class MySubClass extends MyClass { public function showdata(){ return '*** 入 力 値 は '.$this->data.' です ***'; $obj=new MySubClass ('PEAR'); print($obj->showdata()); [ 出 力 ] *** 入 力 値 は PEAR です *** 14

オブジェクト 指 向 における クラス と 継 承 の 概 要 クラス とはオブジェクトに 共 通 の 性 質 を 抜 き 出 してグループ 化 した オブジェクトの ひな 型 のようなものです 継 承 では 上 位 クラス(スーパークラス)と 呼 ばれる 親 からメソッドや 属 性 といった 性 質 を 引 き 継 いだ 下 位 クラス (サブクラス)と 呼 ばれる 子 供 へ 引 き 継 がれることをいいます また 子 供 は 親 の 性 質 をもちつつ 子 供 だけにしか ない 特 性 を 持 つこと( 定 義 すること)ができます 15

parent 命 令 同 じくオーバーライドするにも スーパークラスの 機 能 を 完 全 に 塗 り 替 えるのではなく スーパークラスの 機 能 を 受 け 継 ぎながらサブクラス 側 で 機 能 を 追 加 したいという 場 合 があります そのような 場 合 には parent 命 令 でスー パークラスのメソッドを 呼 び 出 すことも 可 能 です parent 命 令 を 利 用 するとサブクラスでスーパークラスのメソッド を 少 しだけ 改 変 したいと 思 った 場 合 でもそれを 最 初 から 書 き 直 す 必 要 はなくなります スーパークラスのメソッド の 戻 り 値 を 利 用 しつつ 必 要 な 部 分 だけを 修 正 するということが 可 能 になります class MyClass { protected $data; public function construct($data){ $this->tdata=$data; public function showdata(){ return ' 入 力 値 は '.$this->data.' です '; class MySubClass extends MyClass { public function showdata(){ return '***'.parent::showdata().'***'; $obj=new MySubClass('PERA'); print($obj->showdata()); 16

final 修 飾 子 final 修 飾 子 は 特 定 のメソッドをオーバーライドできないように 制 限 するための 修 飾 子 です 継 承 をすることを 想 定 していないメソッドについては final 修 飾 子 をつけることで 不 用 意 にオーバーライドされることを 防 ぐことができ ます class MyClass { protected $data; public function construct($data){ $this->data=$data; public final function showdata(){ return ' 入 力 値 は '.$this->data.' です '; class MySubClass extends MyClass{ public function showdata(){ return '*** 入 力 値 は '.$this->data.' です ***'; [ 出 力 ] Fatal error: Cannot override final methot MyClass::showData() in filan.php 17

ポリモーフィズム ポリモーフィズムとは 同 名 のメソッドで 異 なる 挙 動 を 実 現 することをいいます ポリモーフィズムのメソッドは 同 じ 目 的 の 機 能 に 同 名 のメソッドを 割 り 当 てる ことができるということです これは 一 連 の 関 連 するクラスを 利 用 す る 場 合 に 異 なるメソッド 名 を 覚 えなくていいため 利 用 者 にとって 利 便 性 が 増 します 実 装 には 単 なる 継 承 と オーバーライドだけではそれぞれのサブクラスが 同 名 のメソッドを 持 つことが 必 ずしも 保 証 できないため 抽 象 メ ソッドという 概 念 を PHP の 場 合 利 用 します polymorphism.php class Figure { protected $width; protected $height; public function construct($width, $height){ $this->width=$width; $this->height=$height; protected function getarea(){ class Triangle extends Figure { public final function getarea(){ return $this->width * $this->height / 2; class Square extends Figure { public final function getarea(){ return $this->width * $this->height; $tri = new Triangle(10, 5); $sqr = new Square(10, 5); print(' 三 角 形 の 面 積 は'.$tri->getArea().'です <br>'); print(' 四 角 形 の 面 積 は'.$sqr->getArea().'です <br>'); [ 出 力 ] 三 角 形 の 面 積 は 25 です 四 角 形 の 面 積 は 50 です 18

ポリモルフィズム の 例 オブジェクト 指 向 では 同 じメッセージに 対 してオブジェクトごとに 異 なる 処 理 を 実 行 させることができます これ を ポリモルフィズム と 呼 びます ポリモルフィズムを 活 用 すれば 簡 潔 な 構 造 で 多 様 な 処 理 を 実 行 するシステム を 開 発 できます ここまで 読 み 進 んできて オブジェクト 指 向 に 対 する 理 解 が 深 まったと 思 います その 上 で もう 1 つ 覚 えてほし いポイントとして オブジェクト 指 向 のシステム 開 発 を 実 践 する 際 には オブジェクト 指 向 を 強 く 意 識 する 必 要 が ある ということです 純 粋 なオブジェクト 指 向 開 発 は 今 も 難 しいのが 現 状 です オブジェクト 指 向 言 語 や GUI を 使 ったとしても 結 局 コンピュータの 内 部 は 手 続 き 指 向 に 則 っているためです オブジェクト 指 向 に 違 反 しようと 思 えば いくらでもで きてしまいます 例 えば,システムの 処 理 性 能 を 優 先 して プログラムからいきなりメモリー アドレスを 指 定 して 直 接 アクセスすることも 可 能 です データベースやミドルウエアなど システム 構 築 に 欠 かせない IT 関 連 製 品 の 中 には オブジェクト 指 向 とは 異 なる 旧 来 の 構 造 を 持 つものも 依 然 として 多 いです オブジェクト 指 向 開 発 を 成 功 に 導 くカギは 知 識 や 技 術 の 習 得 に 加 えて 強 い 意 志 を 持 つことも 必 要 といえます 19

抽 象 メソッド 抽 象 メソッドとは メソッド 定 義 の 先 頭 に abstract 修 飾 子 を 付 加 したメソッドであり 抽 象 メソッド 自 体 は 動 作 を 定 義 しない 空 のメソッドです 抽 象 メソッドは サブクラスで 必 ずオーバーライドしなければいけません クラス 内 の 抽 象 メソッドがサブクラスで 必 ずオーバーライドされていなければそのクラスはインスタンス 化 できません これに より 同 名 のメソッドがサブクラスで 再 定 義 されることを 保 証 します 抽 象 メソッドの 定 義 では 中 身 が 空 であって も { のようなブロックを 定 義 しません また 抽 象 メソッドを 含 むクラスのことを 抽 象 クラスといい class キーワードの 前 に abstract 修 飾 子 を 付 加 する 必 要 があります 抽 象 クラスのサブクラスが 抽 象 メソッドをすべてオーバーライドしていない 場 合 エラーが 出 ま す abstract.php abstract class Figure { protected $width; protected $height; public function construct($width, $height){ $this->width = $width; $this->height = $height; protected abstract function getarea(); class Triangle extends Figure { public final function getarea() { return $this->width * $this->height / 2; class Square extends Figure { public final function getarea() { return $this->width * $this->height; $tri = new Triangle(10, 5); $sqr = new Square(10, 5); print(' 三 角 形 の 面 積 は'.$tri->getArea().'です <br>'); print(' 四 角 形 の 面 積 は'.$sqr->getArea().'です <br>'); 20

インターフェイス 抽 象 クラスによるポリモーフィズムの 実 現 には 問 題 もあります それは PHP では 多 重 継 承 つまり サブクラ スが 同 時 に 複 数 のスーパークラスを 継 承 できないという 点 です この 性 質 を 単 一 継 承 といいます 多 重 継 承 がで きないということはポリモーフィズムを 実 現 したいすべての 機 能 (メソッド)をひとつの 抽 象 クラスに 含 めなければ いけないことを 意 味 します これは 必 ずしもサブクラスがスーパークラスの 機 能 を 必 要 としない 場 合 でも 機 能 を オーバーライドしなければ ならなくなり 当 然 コードは 冗 長 になります コードが 冗 長 になるということはサブクラ スの 役 割 が 分 かりにくくする 一 因 をつくることにつながります そこで PHP では インターフェイスを 利 用 します インターフェイスとは 配 下 のメソッドがすべて 抽 象 メソッドである 特 別 なクラスを 言 います インターフェイ スを 定 義 する 場 合 には class キーワードの 代 わりに interfece キーワードを 使 用 します また 配 下 のメソッドが 抽 象 メソッ ドであることは interfece キーワードから 明 らかなので 個 々のメソッドには abstract 修 飾 子 は 必 要 ありません インターフェイスとクラスとの 決 定 的 な 違 いはいわゆる 多 重 継 承 が 可 能 になるということです インターフェイス を 採 用 することにより サブクラス 側 では 必 要 なメソッドを 含 むインターフェイス を 選 択 し 継 承 することが 可 能 とな ります このとき インターフェイスの 機 能 を 受 け 継 ぐことは 継 承 する ではなく 実 装 する と 言 います インター フェイ スを 実 装 する 場 合 には extends キーワードの 代 わりに implements キーワードを 使 用 します インターフェ イスを 実 装 したクラスのことを 実 装 クラス といいます また 複 数 のインターフェイスを 実 装 する 必 要 がある 場 合 には インターフェイス 名 をカンマ 区 切 りで 記 述 します PHP または Java では 言 語 仕 様 的 に 多 重 継 承 が 許 されていません これは メソッド 名 が 重 複 した 場 合 の 処 置 など 重 複 チェックが 大 変 なことや 多 重 継 承 が 様 々な 問 題 を 引 き 起 こしやすいからといわれています(C++では 仕 様 的 には 認 められています) ただ 多 重 継 承 をサポートすることにより 言 語 の 構 造 が 複 雑 になりすぎることや 本 当 に 多 重 継 承 を 使 わざる 得 ない 場 合 はそれほど 多 くありません Java でも 多 重 継 承 ができない 代 わりにイン ターフェイスが 使 えるようになっています 多 重 継 承 インターフェイスともにそれ 相 応 の 高 レベルのプログラム 制 作 に 使 用 される 技 術 なので 通 常 の 業 務 ではあまり 使 用 されることはありません ただ こういった 考 え 方 もオブ ジェクト 指 向 という 分 野 に 入 るので 概 要 だけでも 頭 に 入 れといてください 21

Figure.class.php interface Figure { public function getarea(); interface.php require_once('figure.class.php'); class Triangle implements Figure { private $width; private $height; public function construct($width, $height){ $this->width = $width; $this->height = $height; public final function getarea(){ return $this->width * $this->height / 2; class Square implements Figure { private $width; private $height; public function construct($width, $height){ $this->width = $width; $this->height = $height; public final function getarea(){ return $this->width * $this->height; $tri = new Triangle(10, 5); $sqr = new Square(10, 5); print(' 三 角 形 の 面 積 は'.$tri->getArea().'です <br>'); print(' 四 角 形 の 面 積 は'.$sqr->getArea().'です <br>'); 22

3.PHP5 独 自 のオブジェクト 構 文 規 則 autoload 関 数 PHP5では オブジェクト 指 向 構 文 が 強 化 され 限 りなく JAVA ライクなオブジェクト 指 向 プログラミングが 可 能 に なりました さらに PHP5では 独 自 で 使 える 構 文 規 則 も 追 加 されています そのひとつが autoload 関 数 です も ともとクラスは 複 数 のスクリプトから 再 利 用 されるというその 性 質 上 1クラス1ファイルで 管 理 することが 望 ましい とされています(ただ 短 いプログラムなどは 可 読 性 を 考 慮 して 設 計 されていることもあるので 例 外 はあります) 1 クラス1ファイルなら 無 駄 なクラスを 読 み 込 む 必 要 もありませんし ファイル 管 理 という 観 点 からも 整 理 しやす くなります ただ 1クラス1ファイル 方 式 で 作 成 していくと 扱 うクラスが 増 えてきた 場 合 にひとつひとつのクラスフ ァイルについて include_once 関 数 や require_once 関 数 を 記 述 す ることが 大 きな 手 間 になりますし 記 述 漏 れや 誤 りの 原 因 にもなります そこで 役 に 立 つのが autoload 関 数 です autoload 関 数 は 未 定 義 クラスを 呼 び 出 したタイミングで 自 動 的 に 呼 び 出 される 特 別 な 関 数 であり 呼 び 出 し た 未 定 義 のクラスの 名 前 が 引 数 として 渡 されます autoload 関 数 は それ 自 体 はなんら 実 装 を 持 たない 名 前 だ け 予 約 された 関 数 です 一 般 的 には クラス 名.class.php のような 形 式 であらかじめファイル 名 に 一 定 の 規 則 性 を 設 けた 上 で autoload 関 数 内 で require_once 関 数 を 呼 び 出 し クラスが 呼 び 出 さ れたタイミングで 自 動 的 に 同 名 のクラスファイルをインクルードするような 用 途 で 使 用 します autoload 関 数 を 利 用 すると クラスごとに require_once 関 数 を 呼 び 出 す 必 要 がなくなるので コードがシンプ ルになります また スクリプト 内 で 使 用 するかどうか 分 からないクラスをインクルードしなくても 済 むので 処 理 上 のオーバーヘッドが 軽 減 します なお autoload 関 数 を 定 義 したスクリプトは その 性 質 上 アプリケーション 内 のすべてのスクリプトで 有 効 にしておくことをお 勧 めします ア プリケーション 配 下 のファイルに 対 し て autoload.php を 自 動 的 に 読 み 込 むためには.htaccess ファイルを 利 用 します autoload.php function autoload($name){ require_once($name. '.class.php'); auto_load.php require_once('autoload.php'); $obj = new MyClass(); $obj -> width = 10; $obj -> height = 5; print(' 三 角 形 の 面 積 は'.$obj->triangle().'です <br>'); 23

call メソッド call メソッドは 未 定 義 のメソッドが 呼 び 出 された 場 合 の 挙 動 を 定 義 するためのメソッドです autoload 関 数 と 同 様 PHP5 独 自 のもので あり それ 自 体 はなんら 実 装 を 持 たない 名 前 だけ 予 約 されたメソッドですので 必 要 に 応 じて 中 身 を 実 装 する 必 要 があります call メソッドは 引 数 として メソッド 名 と 引 数 値 の 配 列 を 受 け 取 ることができ ます 変 わり 種 の 機 能 ではありますが メソッド 名 に 応 じて 共 通 的 な 処 理 を 分 岐 したいなどのケースで 利 用 できる でしょう class MyClass{ public function call($name,$args){ print('メソッド 名 :'.$name.'<br>'); print_r($args); $obj = new MyClass(); $obj -> nothing('x','y'); [ 出 力 ] メソッド 名 :nothing Array ( [0] => x [1] => y ) 24

get, set メソッド get, set メソッドは 未 定 義 のプロパティを 取 得 設 定 しようとしたタイミングで 呼 び 出 されるメソッドです autoload 関 数 と 同 様 PHP5 独 自 のものであり それ 自 体 はなんら 実 装 を 持 たない 名 前 だけ 予 約 されたメソッド ですので 必 要 に 応 じて 中 身 を 実 装 する 必 要 があります get メ ソッドは 取 得 しようとした 未 定 義 のプロパティの 名 前 を 引 数 として 受 け 取 ります set メソッドは 設 定 しようとした 未 定 義 のプロパティの 名 前 と 値 を 引 数 として 受 け 取 ります これらのメソッドを 使 用 して 未 定 義 のプロパティが 参 照 されたときの 処 理 を 記 述 します class MyClass{ public function get($name){ print($name. 'プロパティが 参 照 されました <br>'); public function set($name, $value){ print($name. 'プロパティ 値 '. $value. 'がセットされました <br>'); $obj = new MyClass(); $obj -> nobody = 1; print($obj->nobody); [ 出 力 ] nobody プロパティ 値 1 がセットされました nobody プロパティが 参 照 されました 25

4.Apache との 連 携.htaccess.htaccess ファイル( 先 頭 にドットがつく UNIX 系 列 では 先 頭 にドットがつくファイルは 隠 しファイル 属 性 の 意 味 に なる)は Apache 標 準 の 設 定 ファイルで ドキュメントルート 配 下 の 任 意 のディレクトリに 配 置 することで 該 当 す るディレクトリと その 配 下 のサブディレクトリに 対 してだけ 適 用 されるパラメータを 設 定 することができます php.ini を 利 用 するとサーバー 全 体 に 対 して 設 定 が 適 用 されてしまいますが このように 特 定 のアプリケーション に 対 して 設 定 を 適 用 したいという 場 合 は.htaccess を 利 用 します 書 式 は 以 下 のとおりです <IfModule mod_php5.c> php_value パラメータ 名 パラメータ 値 php_flag パラメータ 名 on off <IfModule> パラメータ 値 が on または off で 表 される 場 合 には php_flag を それ 以 外 の 値 である 場 合 には php_value を 使 用 します php_value,php_flag は 必 要 な 数 だけ 記 述 できます また.htaccess で PHP の 設 定 を 行 う 場 合 には 次 の 2 点 について 注 意 する 必 要 があります http.conf の AllowOverride ディレクティブを"All"に 設 定 AllowOverride ディレクティブは.htaccess ファイルによるパラメータの 上 書 きを 可 能 にするかどうかを 決 めるた めのパラメータです AllowOverride ディレクティブが"None"に 設 定 されている 場 合 は.htaccess ファイルは 無 視 されます.htaccess ファイルで 設 定 可 能 なパラメータは 決 まっている.htaccess ファイルでは すべての php.ini のパラメータを 設 定 できるわけではありません パラメータによっては php.ini でしか 設 定 できないものがあるので 注 意 してください どのパラメータが.htaccess ファイルで 設 定 可 能 か は ini_get_all 関 数 の access 情 報 を 参 照 することで 確 認 できます アクセスレベルが6または7である 場 合 その パラメータは.htaccess で 設 定 可 能 です <? print '<PRE>'; print_r(ini_get_all()); print '</PRE>'; [ 出 力 ] Array ( [allow_call_time_pass_reference] => Array ( [global_value] => 1 [local_value] => 1 [access] => 6 ) 中 略 ) 26