はじめに

用語の解説

ここでは当サイトで使われている語句についての簡単な説明をしています。
あくまでも簡単な説明ですので、詳細が必要な場合は他の方法で検索されることをお勧めします。

ディレクトリ

ディレクトリとは📁の様なアイコンで表示されたりしています。コンピュータのOS(オペレーティングシステム)によって表示方法に違いがありますが、複数のファイルやフォルダを束ねた入れ物になっています。ディレクトリの中にもディレクトリを作ることができ、階層構造を作っています。
上位ディレクトリから下位ディレクトリまでの経路をパスと呼んでいます。

前のページに戻る

ブラウザ

ブラウザとはホームページを表示するためのもので、WindowsではInternetExplorer、Macではsafariなどが有名です。他にもGoogle Chrome
なども利用されています。ホームページの多くはhtmlというマークアップ言語で記述されていますので、その内容をブラウザが解読して表示をおこなっています。別名に閲覧ソフトなどとも呼ばれています。

前のページに戻る

エディタ

エディタは文字を記述するためのソフトウエアです。
多くの方はメモ帳やWordなどを想起するでしょう。確かに間違いでは無いのですが、プログラミングをする際はWordなどに含まれる文字装飾などは必要ないですし、エラーの原因になってしまいます。 メモ帳は使えますが、利便性では劣ります。 世界には多くのプログラミングに適したエディタがあります。色々なエディタがありますので、貴方の好みにあわせて採用すれば良いと思います。因みに筆者が愛用しているのはAtomです。

前のページに戻る

・構文

構文とはコンピュータにどの様な仕事をさせるのか?という文字を表します。
プログラミング言語には様々な種類があり、書き方にも方言の様なお作法がありますので、そのお作法に則って記述しないとエラーになってしまいます。
文のことをステートメントと呼んだりしますが、その分の終わりには”;”セミコロンをつけなければいけないとか、変数を作る前にその変数にはどんな種類のものを入れるのかを宣言しなければいけないとか、それほど多くはないですが文法の様なものがあります。
構文は処理の手順書の様なものですので、例えば「ユーザー登録」で記入された文字が適切かを処理し、適切なら「データベースに値を渡す」様に記述し、記述が正常に行われたら「登録ありがとう」と表示するというような一連の流れで基本的に作られます。

前のページに戻る

オブジェクト指向

要点であるクラスとは、端的に言うと変数と関数をひとまとめにしたものであり、手続きを付けたデータ構造体とも解釈される。コンパイル時定義の静的型付けが普通である。クラスに属する変数はデータメンバまたはデータと総称され、言語別にフィールド、プロパティ、属性、メンバ変数といった名称になっている。クラスに属する関数はもっぱらメソッド、メンバ関数、メンバ手続きといった名称になっている。これだけの説明だとC言語Visual Basic系などの非OOP言語で使用されるモジュールと、OOP言語のクラスは同じものに見えるが双方の間には明確な違いがあり、モジュールに抽象abstraction)の考え方とその機能を導入したものがクラスである。抽象化のための機能とは後述のカプセル化継承ポリモーフィズムを指している。

クラスはデータとメソッドの構成を定義した型であるので、それを計算対象や代入対象になる値として扱うにはインスタンスに実体化(量化)する必要がある。その用法でのクラスはユーザー定義型と呼ばれる。クラスはインスタンスのひな型であり、インスタンスはクラスを量化したものである。ここでの量化とは、そのクラスに属する変数の値を全て決定してメモリに展開する行為を指す。言語によっては後述の仮想関数テーブルもセットで展開する。インスタンスは別名としてオブジェクトとも呼ばれる。OOPの主役であるオブジェクトの意味と用法は実は曖昧なのが現状であり言語ごとにも違いがある。

目次

オブジェクト指向の三大要素

クラスベースOOPは抽象データ型の思想に準拠しており、その実装スタイルを規定した以下の三項目は、日本では三大要素または三大原則などと呼ばれている。非OOP言語のモジュールに三大要素仕様を加えたものがOOP言語のクラスになる。カプセル化はthis参照の機構とデータ/メソッドの可視性を指定できる機能、継承は自身のスーパークラスを指定できる機能、ポリモーフィズムはオーバーライド仮想関数テーブルを処理できる機能である。

カプセル化

互いに関連するデータとメソッドをまとめてクラスとし、必要なデータとメソッドのみを外部公開し、それ以外をクラス内に隠蔽する機能をカプセル化と呼ぶ。外部公開されたデータとメソッドはクラス外からの直接アクセスが可能である。内部隠蔽されたデータとメソッドはクラス外からアクセスされないことが保証されこれは情報隠蔽英語版と呼ばれる。同クラス所属のメソッドを通してのデータの閲覧と変更はそのデータの抽象化を意味することになりこれはデータ抽象英語版と呼ばれる。この二つがカプセル化の要点である。データ抽象を実装するための仕組みでもあるthis参照については後節で述べられる。データ閲覧用メソッドはゲッター、データ変更用メソッドはセッターと呼ばれる。データとメソッドの外部公開範囲を、無制限・任意クラスグループ・派生クラスグループの三段階に分けて定義する機能はアクセスコントロールと呼ばれる。

継承

既存クラスのデータ/メソッド構成に任意のデータ/メソッド構成を付け足して、既存構成+新規構成の新しいクラスを定義する機能を継承と呼ぶ。その差分プログラミング目的の継承よりも、既存構成に抽象メソッドを置いて新規構成にその実体メソッドを置くというオーバーライド目的の継承の方が要点にされている。新規構成ではなく実装内容を付け足していくための継承である。既存クラスは基底クラス、親クラス、スーパークラスなどと呼ばれ、新しいクラスは派生クラス、子クラス、サブクラスなどと呼ばれる。抽象メソッドを持つクラスは抽象クラスと呼ばれる。継承できるクラスが一つに限られている単一継承を採用している言語と、継承できるクラスの数に制限がない多重継承を採用している言語に分かれている。抽象メソッドのみで構成される純粋抽象クラスの継承は、インターフェースの実装継承英語版と呼ばれて抽象化目的の継承になる。

ポリモーフィズム

異なる種類のクラスに同一の操作インターフェースを持たせる機能をポリモーフィズム(多態性)と呼ぶ。これはクラスの継承関係を利用して、コンパイル時のメソッド名から呼び出されるプロセス内容を実行時に決定するという仕組みを指す。その実装は仮想関数英語版と呼ばれており、クラスベースOOPのポリモーフィズムはイコール仮想関数となっている。仮想関数はスーパークラスの抽象メソッドの呼び出しを、それをオーバーライドしたサブクラスの実体メソッドの呼び出しにつなげる機能である。抽象メソッドとオーバーライド機能については後節で述べる。ポリモーフィスムの要点は、同じメソッド名からその実行時に対応した異なる処理内容を呼び出せるようにすることである。

                            上記はWikipediaからの引用です

難しい用語が多く、理解するためにすべての用語を検索するとアホになりますので、簡単すぎますが説明によく利用される自動車の例えを言葉で説明します。

自動車はアクセルを踏むと加速します。ブレーキを踏むと減速し、さらに踏むと停止します。
ハンドルを切ると切った方向にまがります。この一つ一つの効果をヒトまとまりのプログラムとします。

ここに引数として色や乗車人数・最高速度などを指定してやります。
これですぐ自動車として使うことができるかというとそうはいきません。

これを使うには自動車としての実体(オブジェクト)にしないといけないのでToyobutaという名前の実体に変換します。

コードみたいに書くと

import Machine

Toyobuta = Machine · Automotive (“color = red”, “Ride capacity =  5”, “maximum speed = 140km”)

このように実体として使うためにいちいち骨組みまで考える必要はないわけです。
あとはコースを作って走らせるだけです。貴方の好きなように。