ネットワークコンピューティング実習

1. URL
2. 担当教員
3. TA (ティーチングアシスタント)
4. ネットワークに関する疑問
5. 講義目的: 到達目標
6. 授業方法
7. 成績評価
8. スケジュール
9. 大崎が担当する科目に共通の連絡事項・アドバイス
10. Debian GNU/Linux のインストール
11. UNIX (UNIX とは、ユーザ権限、パッケージ管理)
12. Debian GNU/Linux セットアップ〜パッケージ管理
13. シェル (ファイル操作、リダイレクト、パイプ)
14. X ウィンドウシステム & ウィンドウマネージャ
15. エディタ (Emacs チュートリアル)
16. シミュレータ導入 (インストール、実行、可視化)
17. Python 言語 (1) (名前、変数、式)
18. Python 言語 (2) (文、スコープ、サブルーチン)
19. Python 言語 (3) (オブジェクト指向プログラミング)
20. 最終レポート課題 (実施報告書)
21. シミュレータ解説 (1) (概要、エージェント)
22. シミュレータ解説 (2) (モビリティ、可視化)
23. ソフトウェア設計・実装

Python 言語 (3) (オブジェクト指向プログラミング)

実習の流れ・チーム分けの方針・態度目標

2024/09/25 のものと同じ。

https://lsnl.jp/~ohsaki/lecture/netcompx/2024/#10-1

内容目標

- オブジェクト指向プログラミングとは何か、他人に説明できるようになる。

- Python で簡単なクラスを書けるようになる。

テキスト

https://lsnl.jp/~ohsaki/lecture/netcompx/2024/priv/07.pdf

課題

課題 1

以下の英文を「できるだけカナタナ語を使用せずに」日本語に訳せ。

Object-oriented programming
https://en.wikipedia.org/wiki/Object-oriented_programming

Object-oriented programming (OOP) is a programming paradigm based on
the concept of "objects", which can contain data and code: data in
the form of fields (often known as attributes or properties), and
code, in the form of procedures (often known as methods).

課題 2

「オブジェクト」と「クラス」の違いを、他の受講生がわかるように説明せよ。

課題 3

テキスト p. 5 を参考に、 0〜32,767 の疑似乱数を返す、 関数 myrand および関数 mysrand を手続き型プログラミングで実装せよ。 最初に mysrand(123) を呼び出し、 myrand() を 10 回呼び出した時の返り値をそれぞれ出力するプログラムを示せ。

課題 4

テキスト p. 7 を参考に、 0〜32,767 の疑似乱数を返す、 関数 myrand および関数 mysrand をオブジェクト指向プログラミングで実装せよ。 最初に mysrand(123) を呼び出し、 myrand() を 10 回呼び出した時の返り値をそれぞれ出力するプログラムを示せ。

略解

課題 1

回答の例:

オブジェクト指向プログラミング (OOP) は、 データとコードを含む「オブジェクト」という概念に基づくプログラミングパラダイムで、 データはフィールド (属性やプロパティと呼ばれることが多い) の形で、 コードはプロシージャ (メソッドと呼ばれることが多い) の形で格納される。

物体指向プログラム作成 (OOP) は、 資料と符号を含む「物体」という概念に基づくプログラム作成方法論で、 資料は領域 (「属性」や「所有物」と呼ばれることが多い)の形で、 符号は手続(「方法」と呼ばれることが多い)の形で格納される。

課題 2

(略解) オブジェクト指向プログラミングにおいて、 オブジェクトの型が「クラス」であり、 あるクラスの実体が「オブジェクト」である。

---- 電子情報通信ハンドブック: クラス [class]
クラス [class]

 クラスは Smalltalk-80 , C++ をはじめとする多くのオブジェクト指向言語において, 個々のオブジェ
 クト(インスタンス)を定義する雛型として使われるモジュールをいう.クラスは通常, 各インスタンス
 の内部状態を保持する変数(インスタンス変数)や, 各インスタンスについて実行可能な操作(メソッド)の
 定義を含んでいる.クラスの第三の役割として各インスタンスがサポートするプロトコル(メソッド名と
 各メソッドの引数や返値の型)を定めることがあげられ, 言語によってはこれをインタフェースという名称
 で独立に扱うこともできる.
(久野)

---- 電子情報通信ハンドブック: オブジェクト [object]
オブジェクト [object]

 オブジェクトは, 物理的, 概念的なまとまりをなす「もの」の機能や性質をモデル化した概念である.
 これは内部データと対応する手続きとをもつソフトウェア要素とみることができる.通常, 類似した機能を
 もつオブジェクトはクラスとしてまとめられ, 複数のオブジェクト間には階層関係を定義する.そし
 て, 継承機能によって上位オブジェクトの機能を下位オブジェクトに伝えることで情報の重複を避け,
 利用法を明確化する.知識表現としてはフレーム, 意味ネットワークに近く, 応用システムにおいて
 は対象システムのモデル化にしばしば利用される.
(寺野)

課題 3

省略

課題 4

省略

チャレンジ課題

- 以下は python3(1) の DESCRIPTION を翻訳したものである。これをカタカナを使わない文章に書き直せ。

 Python はインタプリタ型の対話型オブジェクト指向プログラミング言語であ
 り、非常に明快な構文と驚くべきパワーを兼ね備えています。Python でのプ
 ログラミングの入門については、Python チュートリアルを参照してください。
 Python ライブラリリファレンスは、組み込みと標準の型、定数、関数、モジュー
 ルのドキュメントです。最後に、Python リファレンスマニュアルは、コア言
 語の構文とセマンティクスを(おそらく)詳細に記述しています。(これらの
 文書は以下のインターネットリソースから入手できます。また、あなたのシス
 テムにもインストールされているかもしれません。)

 Python の基本的な力は、C や C++ で書かれた独自のモジュールで拡張するこ
 とができます。ほとんどのシステムで、そのようなモジュールは動的にロード
 されます。Python はまた、既存のアプリケーションの拡張言語としても適応
 可能です。ヒントは内部ドキュメントを参照してください。

 インストールされた Python モジュールやパッケージのドキュメントは、
 pydoc プログラムを実行することで見ることができます。

- 「プログラム (program)」と「プログラミング (programming)」の違いは何か。英英辞典 (例えば Oxford Learner's Dictionary) でそれぞれの英単語の意味を調べた結果にもとづいて回答せよ。

- 英単語 object には複数の意味がある。object という英単語の意味を英英辞典で調べよ。また、「オブジェクト指向プログラミング」における object は、それらの中のどの意味か。

- 並列処理 (parallel processing) と並行処理 (concurrent processing) の違いは何か。

- Python 言語で並列処理を記述できるか? また、Python 言語で並行処理を記述できるか? 理由もあわせて答えよ。

- オブジェクト指向プログラミングで記述されていると思われる Python プログラムを入手せよ。そのプログラムが本当にオブジェクト指向プログラミングで記述されているかを確認せよ。確認した結果と、確認した方法の両方を答えよ。

- 並行処理を使用せずにオブジェクト指向プログラミングを実現することは可能か。理由もあわせて答えよ。

- Python の標準モジュールに含まれる random モジュールのソースコードを入手せよ。random.random() がオブジェクト指向プログラミングで実装されているかを調査せよ。

- テキスト p. 4 のプログラムでは // 演算子が使用されている。/ 演算子と // 演算子の違いを、Python の公式ドキュメントに書かれている説明を元に答えよ。

レポート課題 2024/11/27

「レポート課題 2024/09/25」と同じ。

https://lsnl.jp/~ohsaki/lecture/netcompx/2024/#10-7

- qutebrowserでパスワード補完できる機能を実装したいのですが、大崎先生はどのようにして実装したか教えていただきたいです。

  セキュリティに関する話なので、個別に回答します。


[<18. Python 言語 (2) (文、スコープ、サブルーチン)] [>20. 最終レポート課題 (実施報告書)]