第 12 章 プログラミングとオブジェクト指向
言葉で機械を動かす。この章では次の 9 個の知識点を、解説・インタラクティブ教材・練習問題で学びます。
プログラムの属性(リロケータブル・リユーザブル・リエントラント・リカーシブ)
プログラムの 4 つの性質:リロケータブル(どこに置いても動く)・リユーザブル(再ロードなしで繰り返し使える)・リエントラント(複数タスクから同時に呼ばれても正しく動く)・リカーシブ(自分自身を呼び出せる)。用語と説明の対応がそのまま出題される。
プログラミング言語とマークアップ言語
プログラミング言語は人に分かりやすい高水準言語(C・Java・Python・JavaScript)と、コンピュータ寄りの低水準言語(機械語・アセンブラ言語)に分かれる。マークアップ言語はタグで文書の構造を表す:HTMLはタグが決まっている、XMLはタグを独自に定義できる。見た目は CSS、データ交換には JSON も使われる。
言語プロセッサとプログラムの実行手順
高水準言語を機械語に翻訳するのが言語プロセッサ:インタプリタは 1 行ずつ翻訳しながら実行、コンパイラはまとめて翻訳。コンパイラ方式の流れは コンパイル(字句解析 → 構文解析 → 意味解析 → 最適化 → コード生成)→ リンク(リンカ)→ ロード(ローダ)→ 実行。
オブジェクト指向の基本(クラス・インスタンス)
オブジェクト指向は、データ(プロパティ)と処理(メソッド)をひとまとめにした「モノ(オブジェクト)」の組合せでシステムを作る考え方。共通の特徴をまとめた設計図がクラス、クラスから作った個々の実体がインスタンス。
継承・カプセル化・ポリモーフィズム
オブジェクト指向の三大特徴。継承:スーパークラスの定義をサブクラスに引き継ぐ。カプセル化:データと手続きをまとめ、中身を外部から隠蔽して保護する。ポリモーフィズム:オーバーライドにより、同じ命令でもクラスごとに異なる処理を行う。基本概念は「抽象化・カプセル化・継承・クラス」。
汎化–特化(is-a)と集約–分解(part-of)
クラスの階層には 2 種類ある。汎化–特化は「下位 is a 上位」(トラックは自動車の一種)で、スーパークラスとサブクラスの関係。集約–分解は「下位 is part of 上位」(ハンドルは自動車の部品)。
UML クラス図(多重度と関係線)
UMLはオブジェクト指向開発で使う統一モデリング言語。クラス図はクラスとクラス間の関係を表す。関連線の端の多重度は「相手 1 つから見て、こちら側がいくつあるか」:1・0..1・1..*(1 以上)・0..*(0 以上)。線の種類で関連・集約・コンポジション・依存・汎化・実現を表す。
UML の図(シーケンス図・アクティビティ図・ユースケース図 ほか)
シーケンス図=オブジェクト間のメッセージのやり取りを時系列で。アクティビティ図=処理の流れと分岐。ユースケース図=アクター(利用者)から見たシステムの機能。ステートマシン図(状態遷移図)=1 つのオブジェクトの状態の変化。クラス図=静的な構造。
新シラバスの用語(フロントエンドフレームワーク・ローコード / ノーコード)
フロントエンドフレームワークは、利用者の操作画面を効率よく作るための開発のひな形(React・Vue.js・Angular など)。ローコード / ノーコードツールは、ソースコードを最小限しか書かずに、または全く書かずにアプリを作れる(Shopify・BASE など)。JSON は軽量なデータ記述形式。